directory-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From elecha...@apache.org
Subject svn commit: r1669123 [1/6] - in /directory/studio/trunk/plugins: ./ openldap.config.editor/ openldap.config.editor/resources/ openldap.config.editor/resources/icons/ openldap.config.editor/src/ openldap.config.editor/src/main/ openldap.config.editor/sr...
Date Wed, 25 Mar 2015 13:26:31 GMT
Author: elecharny
Date: Wed Mar 25 13:26:29 2015
New Revision: 1669123

URL: http://svn.apache.org/r1669123
Log:
Added the openldap config editor

Added:
    directory/studio/trunk/plugins/openldap.config.editor/   (with props)
    directory/studio/trunk/plugins/openldap.config.editor/build.properties
    directory/studio/trunk/plugins/openldap.config.editor/plugin.properties
    directory/studio/trunk/plugins/openldap.config.editor/plugin.xml
    directory/studio/trunk/plugins/openldap.config.editor/pom-first.xml
    directory/studio/trunk/plugins/openldap.config.editor/pom.xml
    directory/studio/trunk/plugins/openldap.config.editor/resources/
    directory/studio/trunk/plugins/openldap.config.editor/resources/icons/
    directory/studio/trunk/plugins/openldap.config.editor/resources/icons/editor.gif   (with props)
    directory/studio/trunk/plugins/openldap.config.editor/src/
    directory/studio/trunk/plugins/openldap.config.editor/src/main/
    directory/studio/trunk/plugins/openldap.config.editor/src/main/antlr/
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/ConnectionSchemaLoader.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/Messages.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/OpenLdapConfigurationPlugin.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/OpenLdapConfigurationPluginConstants.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/actions/
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/actions/OpenConfigurationAction.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/ConnectionServerConfigurationInput.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/ErrorPage.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/LoadingPage.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/OverviewPage.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/ServerConfigurationEditor.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/ServerConfigurationEditorPage.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/ServerConfigurationEditorUtils.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/ServerConfigurationInput.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/databases/
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/databases/BdbDatabaseSpecificDetailsBlock.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/databases/DatabaseSpecificDetailsBlock.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/databases/DatabaseType.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/databases/DatabasesDetailsPage.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/databases/DatabasesMasterDetailsBlock.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/databases/DatabasesPage.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/databases/FrontendDatabaseSpecificDetailsBlock.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/databases/HdbDatabaseSpecificDetailsBlock.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/databases/LdifDatabaseSpecificDetailsBlock.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/databases/NoneDatabaseSpecificDetailsBlock.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/AccessLogOverlayDetailsPage.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/AuditLogOverlayDetailsPage.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/ChainOverlayDetailsPage.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/DistProcOverlayDetailsPage.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/OverlayType.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/OverlaysMasterDetailsBlock.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/OverlaysPage.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/PBindAccessOverlayDetailsPage.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/PasswordPolicyOverlayDetailsPage.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/SyncProvOverlayDetailsPage.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/jobs/
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/jobs/EntryBasedConfigurationPartition.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/jobs/LoadConfigurationRunnable.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/jobs/PartitionsDiffComputer.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/jobs/PartitionsDiffException.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/messages.properties
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/messages_de.properties
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/messages_fr.properties
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/model/
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/model/AuxiliaryObjectClass.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/model/ConfigurationElement.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/model/OlcAccessLogConfig.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/model/OlcAuditlogConfig.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/model/OlcBdbConfig.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/model/OlcChainConfig.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/model/OlcConfig.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/model/OlcDatabaseConfig.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/model/OlcDbSocketConfig.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/model/OlcDistProcConfig.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/model/OlcFrontendConfig.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/model/OlcGlobal.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/model/OlcHdbConfig.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/model/OlcLDAPConfig.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/model/OlcLdifConfig.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/model/OlcMonitorConfig.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/model/OlcNullConfig.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/model/OlcOverlayConfig.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/model/OlcPBindConfig.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/model/OlcPPolicyConfig.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/model/OlcRelayConfig.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/model/OlcSchemaConfig.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/model/OlcSyncProvConfig.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/model/OpenLdapConfiguration.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/model/io/
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/model/io/ConfigurationException.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/model/io/ConfigurationReader.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/model/io/ConfigurationWriter.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/model/io/SaveConfigurationRunnable.java
    directory/studio/trunk/plugins/openldap.config.editor/src/main/resources/
    directory/studio/trunk/plugins/openldap.config.editor/src/test/
    directory/studio/trunk/plugins/openldap.config.editor/src/test/java/
    directory/studio/trunk/plugins/openldap.config.editor/src/test/java/org/
    directory/studio/trunk/plugins/openldap.config.editor/src/test/java/org/apache/
    directory/studio/trunk/plugins/openldap.config.editor/src/test/java/org/apache/directory/
    directory/studio/trunk/plugins/openldap.config.editor/src/test/java/org/apache/directory/studio/
    directory/studio/trunk/plugins/openldap.config.editor/src/test/java/org/apache/directory/studio/openldap/
    directory/studio/trunk/plugins/openldap.config.editor/src/test/resources/
Modified:
    directory/studio/trunk/plugins/pom-first.xml
    directory/studio/trunk/plugins/pom.xml

Propchange: directory/studio/trunk/plugins/openldap.config.editor/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Mar 25 13:26:29 2015
@@ -0,0 +1,16 @@
+target
+maven-eclipse.xml
+lib
+bin
+.externalToolBuilders
+felix-cache
+.project
+.classpath
+.settings
+eclipse-classes
+*.log
+*.iml
+*.ipr
+dependency-reduced-pom.xml
+META-INF
+~

Added: directory/studio/trunk/plugins/openldap.config.editor/build.properties
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/openldap.config.editor/build.properties?rev=1669123&view=auto
==============================================================================
--- directory/studio/trunk/plugins/openldap.config.editor/build.properties (added)
+++ directory/studio/trunk/plugins/openldap.config.editor/build.properties Wed Mar 25 13:26:29 2015
@@ -0,0 +1,6 @@
+source.. = src/main/java/
+bin.includes = META-INF/,\
+               .,\
+               plugin.properties,\
+               plugin.xml,\
+               resources/

Added: directory/studio/trunk/plugins/openldap.config.editor/plugin.properties
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/openldap.config.editor/plugin.properties?rev=1669123&view=auto
==============================================================================
--- directory/studio/trunk/plugins/openldap.config.editor/plugin.properties (added)
+++ directory/studio/trunk/plugins/openldap.config.editor/plugin.properties Wed Mar 25 13:26:29 2015
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+Plugin_id=org.apache.directory.studio.openldap.config.editor

Added: directory/studio/trunk/plugins/openldap.config.editor/plugin.xml
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/openldap.config.editor/plugin.xml?rev=1669123&view=auto
==============================================================================
--- directory/studio/trunk/plugins/openldap.config.editor/plugin.xml (added)
+++ directory/studio/trunk/plugins/openldap.config.editor/plugin.xml Wed Mar 25 13:26:29 2015
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+  
+  http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<?eclipse version="3.2"?>
+<plugin>
+   <extension
+         point="org.eclipse.ui.editors">
+      <editor
+            class="org.apache.directory.studio.openldap.config.editor.ServerConfigurationEditor"
+            default="false"
+            icon="resources/icons/editor.gif"
+            id="org.apache.directory.studio.openldap.config.editor.ServerConfigurationEditor"
+            name="OpenLDAP Configuration Editor">
+      </editor>
+   </extension>
+   <extension
+         point="org.eclipse.ui.popupMenus">
+      <objectContribution
+            objectClass="org.apache.directory.studio.connection.core.Connection"
+            id="org.apache.directory.studio.connection.core.Connection">
+         <action
+               class="org.apache.directory.studio.openldap.config.actions.OpenConfigurationAction"
+               enablesFor="1"
+               id="org.apache.directory.studio.openldap.config.actions.OpenConfigurationAction"
+               label="Open Configuration"
+               icon="resources/icons/editor.gif">
+         </action>
+         <visibility> 
+             <objectState
+         	    name="serverType"
+         	    value="OPENLDAP_2_3">
+         	 </objectState>
+         </visibility>
+      </objectContribution>
+   </extension>
+   
+   <extension
+         point="org.eclipse.ui.perspectiveExtensions">
+      <perspectiveExtension targetID="%Perspective_LdapPerspective_id">
+         <actionSet id="%ActionSet_OpenLdapMenuActionSet_id"/>
+      </perspectiveExtension>
+   </extension>
+   
+   <extension
+         point="org.eclipse.ui.actionSets">
+      <actionSet
+            id="%ActionSet_OpenLdapMenuActionSet_id"
+            label="%ActionSet_OpenLdapMenuActionSet_label"
+            visible="false">
+         <menu
+               id="%ActionSet_OpenLdapMenu_id"
+               label="%ActionSet_OpenLdapMenu_label">
+            <groupMarker name="%GroupMarker_OpenConfiguration_name"/>
+         </menu>
+         <action
+               class="org.apache.directory.studio.openldap.config.actions.OpenDirectoryConfigurationAction"
+               icon="resources/icons/open_configuration.gif"
+               id="%Action_OpenDirectoryConfigurationAction_id"
+               label="%Action_OpenDirectoryConfigurationAction_label"
+               menubarPath="%Action_OpenDirectoryConfigurationAction_menubarpath"
+               style="push">
+         </action>
+    </actionSet>
+ </extension>
+   
+</plugin>

Added: directory/studio/trunk/plugins/openldap.config.editor/pom-first.xml
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/openldap.config.editor/pom-first.xml?rev=1669123&view=auto
==============================================================================
--- directory/studio/trunk/plugins/openldap.config.editor/pom-first.xml (added)
+++ directory/studio/trunk/plugins/openldap.config.editor/pom-first.xml Wed Mar 25 13:26:29 2015
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<!--
+  @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.directory.studio</groupId>
+    <artifactId>parent-plugins</artifactId>
+    <version>2.0.0.qualifier</version>
+    <relativePath>../pom-first.xml</relativePath>
+  </parent>
+
+  <artifactId>org.apache.directory.studio.openldap.config.editor</artifactId>
+  <name>Apache Directory Studio OpenLDAP Configuration Editor Manifest Generation</name>
+  <description/>
+  <packaging>bundle</packaging>
+
+  <build>
+     <!-- MANIFEST.MF Generation -->
+    <plugins>
+      <plugin>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>maven-bundle-plugin</artifactId>
+        <extensions>true</extensions>
+        <configuration>
+          <manifestLocation>META-INF</manifestLocation>
+          <instructions>
+            <Bundle-SymbolicName>${project.artifactId};singleton:=true</Bundle-SymbolicName>
+            <Bundle-Localization>plugin</Bundle-Localization>
+            <Eclipse-LazyStart>true</Eclipse-LazyStart>
+            <Bundle-Activator>org.apache.directory.studio.openldap.config.OpenLdapConfigurationPlugin</Bundle-Activator>
+            
+            <Export-Package>org.apache.directory.studio.openldap.config</Export-Package>
+
+            <Import-Package>
+            org.apache.directory.api.ldap.model.name,
+            org.apache.directory.server.core.api.interceptor.context,
+            org.apache.directory.api.ldap.schema.manager.impl,
+            net.sf.ehcache,
+            org.slf4j
+            </Import-Package> 
+            
+            <Require-Bundle>
+ org.apache.directory.server.core.api;bundle-version="${org.apache.directory.server.bundleversion}",
+ org.apache.directory.server.ldif.partition;bundle-version="${org.apache.directory.server.bundleversion}",
+ org.apache.directory.server.xdbm.partition;bundle-version="${org.apache.directory.server.bundleversion}",
+ org.apache.directory.api.asn1.api;bundle-version="${org.apache.directory.api.bundleversion}",
+ org.apache.directory.api.ldap.model;bundle-version="${org.apache.directory.api.bundleversion}",
+ org.apache.directory.api.ldap.schema;bundle-version="${org.apache.directory.api.bundleversion}",
+ org.apache.directory.api.util;bundle-version="${org.apache.directory.api.bundleversion}",
+ org.apache.directory.studio.common.core,
+ org.apache.directory.studio.common.ui,
+ org.apache.directory.studio.connection.core,
+ org.apache.directory.studio.connection.ui,
+ org.apache.directory.studio.ldapbrowser.core,
+ org.eclipse.core.runtime,
+ org.eclipse.core.resources,
+ org.eclipse.ui,
+ org.eclipse.ui.editors,
+ org.eclipse.ui.forms,
+ org.eclipse.ui.ide</Require-Bundle>
+          </instructions>
+        </configuration>
+        <executions>
+          <execution>
+            <id>generate-manifest</id>
+            <phase>process-classes</phase>
+            <goals>
+              <goal>manifest</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+
+</project>
+

Added: directory/studio/trunk/plugins/openldap.config.editor/pom.xml
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/openldap.config.editor/pom.xml?rev=1669123&view=auto
==============================================================================
--- directory/studio/trunk/plugins/openldap.config.editor/pom.xml (added)
+++ directory/studio/trunk/plugins/openldap.config.editor/pom.xml Wed Mar 25 13:26:29 2015
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.directory.studio</groupId>
+    <artifactId>parent-plugins</artifactId>
+    <version>2.0.0-SNAPSHOT</version>
+    <relativePath>../</relativePath>
+  </parent>
+  
+  <artifactId>org.apache.directory.studio.openldap.config.editor</artifactId>
+  <name>Apache Directory Studio OpenLDAP Configuration Editor</name>
+  <packaging>eclipse-plugin</packaging>
+  <description/>
+</project>

Added: directory/studio/trunk/plugins/openldap.config.editor/resources/icons/editor.gif
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/openldap.config.editor/resources/icons/editor.gif?rev=1669123&view=auto
==============================================================================
Binary file - no diff available.

Propchange: directory/studio/trunk/plugins/openldap.config.editor/resources/icons/editor.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/ConnectionSchemaLoader.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/ConnectionSchemaLoader.java?rev=1669123&view=auto
==============================================================================
--- directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/ConnectionSchemaLoader.java (added)
+++ directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/ConnectionSchemaLoader.java Wed Mar 25 13:26:29 2015
@@ -0,0 +1,683 @@
+/*
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *   or more contributor license agreements.  See the NOTICE file
+ *   distributed with this work for additional information
+ *   regarding copyright ownership.  The ASF licenses this file
+ *   to you under the Apache License, Version 2.0 (the
+ *   "License"); you may not use this file except in compliance
+ *   with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing,
+ *   software distributed under the License is distributed on an
+ *   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *   KIND, either express or implied.  See the License for the
+ *   specific language governing permissions and limitations
+ *   under the License.
+ *
+ */
+
+package org.apache.directory.studio.openldap.config;
+
+
+import java.io.IOException;
+import java.util.List;
+
+import org.apache.directory.api.ldap.model.constants.SchemaConstants;
+import org.apache.directory.api.ldap.model.entry.Attribute;
+import org.apache.directory.api.ldap.model.entry.DefaultAttribute;
+import org.apache.directory.api.ldap.model.entry.DefaultEntry;
+import org.apache.directory.api.ldap.model.entry.Entry;
+import org.apache.directory.api.ldap.model.exception.LdapException;
+import org.apache.directory.api.ldap.model.exception.LdapInvalidDnException;
+import org.apache.directory.api.ldap.model.name.Dn;
+import org.apache.directory.api.ldap.model.name.Rdn;
+import org.apache.directory.api.ldap.model.schema.AttributeType;
+import org.apache.directory.api.ldap.model.schema.ObjectClass;
+import org.apache.directory.api.ldap.model.schema.ObjectClassTypeEnum;
+import org.apache.directory.api.ldap.model.schema.SchemaObject;
+import org.apache.directory.api.ldap.model.schema.UsageEnum;
+import org.apache.directory.api.ldap.model.schema.registries.DefaultSchema;
+import org.apache.directory.api.ldap.model.schema.registries.Schema;
+import org.apache.directory.api.ldap.model.schema.registries.SchemaLoader;
+import org.apache.directory.api.ldap.schema.loader.JarLdifSchemaLoader;
+import org.apache.directory.api.util.Strings;
+import org.apache.directory.studio.connection.core.Connection;
+import org.apache.directory.studio.ldapbrowser.core.BrowserCorePlugin;
+
+
+/**
+ * This class implements a {@link SchemaLoader} based on a connection to an OpenLDAP
+ * server, as well as a set of low level base schemas from ApacheDS.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class ConnectionSchemaLoader extends JarLdifSchemaLoader
+{
+    private static final String M_COLLECTIVE = "m-collective";
+    private static final String M_DESCRIPTION = "m-description";
+    private static final String M_EQUALITY = "m-equality";
+    private static final String M_LENGTH = "m-length";
+    private static final String M_MAY = "m-may";
+    private static final String M_MUST = "m-must";
+    private static final String M_NAME = "m-name";
+    private static final String M_NO_USER_MODIFICATION = "m-noUserModification";
+    private static final String M_OBSOLETE = "m-obsolete";
+    private static final String M_OID = "m-oid";
+    private static final String M_ORDERING = "m-ordering";
+    private static final String M_SINGLE_VALUE = "m-singleValue";
+    private static final String M_SUBSTR = "m-substr";
+    private static final String M_SUP_ATTRIBUTE_TYPE = "m-supAttributeType";
+    private static final String M_SUP_OBJECT_CLASS = "m-supObjectClass";
+    private static final String M_SYNTAX = "m-syntax";
+    private static final String M_TYPE_OBJECT_CLASS = "m-typeObjectClass";
+    private static final String M_USAGE = "m-usage";
+    private static final String TRUE = "TRUE";
+
+    /** The name of the connection schema */
+    public static final String CONNECTION_SCHEMA_NAME = "connectionSchema";
+
+    /** The configuration prefix */
+    private static final String CONFIG_PREFIX = "olc";
+
+    /** The schema */
+    private org.apache.directory.studio.ldapbrowser.core.model.schema.Schema browserConnectionSchema;
+
+
+    /**
+     * Creates a new instance of ConnectionSchemaLoader.
+     *
+     * @param connection the connection
+     * @throws Exception
+     */
+    public ConnectionSchemaLoader( Connection connection ) throws Exception
+    {
+        super();
+
+        // Getting the browser connection associated with the connection
+        browserConnectionSchema = BrowserCorePlugin.getDefault().getConnectionManager()
+            .getBrowserConnection( connection ).getSchema();
+
+        initializeSchema();
+    }
+
+
+    /**
+     * Initializes the schema.
+     */
+    private void initializeSchema()
+    {
+        Schema schema = new DefaultSchema( CONNECTION_SCHEMA_NAME );
+        schema.addDependencies( new String[]
+            { "system", "core", "apache" } );
+        schemaMap.put( schema.getSchemaName(), schema );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public List<Entry> loadAttributeTypes( Schema... schemas ) throws LdapException, IOException
+    {
+        List<Entry> attributeTypes = super.loadAttributeTypes( schemas );
+
+        for ( Schema schema : schemas )
+        {
+            if ( CONNECTION_SCHEMA_NAME.equals( schema.getSchemaName() ) )
+            {
+                for ( AttributeType attributeType : browserConnectionSchema.getAttributeTypeDescriptions() )
+                {
+                    if ( attributeType.getName().startsWith( CONFIG_PREFIX ) )
+                    {
+                        attributeTypes.add( convert( attributeType ) );
+                    }
+                }
+            }
+        }
+
+        return attributeTypes;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public List<Entry> loadObjectClasses( Schema... schemas ) throws LdapException, IOException
+    {
+        List<Entry> objectClasses = super.loadObjectClasses( schemas );
+
+        for ( Schema schema : schemas )
+        {
+            if ( CONNECTION_SCHEMA_NAME.equals( schema.getSchemaName() ) )
+            {
+                for ( ObjectClass objectClass : browserConnectionSchema.getObjectClassDescriptions() )
+                {
+                    if ( objectClass.getName().startsWith( CONFIG_PREFIX ) )
+                    {
+                        objectClasses.add( convert( objectClass ) );
+                    }
+                }
+            }
+        }
+
+        return objectClasses;
+    }
+
+
+    /**
+     * Converts the given attribute type to a schema entry.
+     *
+     * @param attributeType the attribute type
+     * @return the given attribute type as a schema entry.
+     * @throws LdapException 
+     */
+    private Entry convert( AttributeType attributeType ) throws LdapException
+    {
+        // Creating a blank entry
+        Entry entry = new DefaultEntry();
+
+        // Setting calculated DN
+        entry.setDn( getDn( attributeType, SchemaConstants.ATTRIBUTE_TYPES_PATH ) );
+
+        // Values common to all schema objects
+        addSchemaObjectValues( attributeType, SchemaConstants.META_ATTRIBUTE_TYPE_OC, entry );
+
+        // Superior value
+        addSuperiorValue( attributeType, entry );
+
+        // Equality matching rule value
+        addEqualityValue( attributeType, entry );
+
+        // Ordering matching rule value
+        addOrderingValue( attributeType, entry );
+
+        // Substrings matching rule value
+        addSubstrValue( attributeType, entry );
+
+        // Syntax value
+        addSyntaxValue( attributeType, entry );
+
+        // Single value value
+        addSingleValueValue( attributeType, entry );
+
+        // Collective value
+        addCollectiveValue( attributeType, entry );
+
+        // No user modification value
+        addNoUserModificationValue( attributeType, entry );
+
+        // Usage value
+        addUsageValue( attributeType, entry );
+
+        return entry;
+    }
+
+
+    /**
+     * Converts the given object class to a schema entry.
+     *
+     * @param objectClass the object class
+     * @return the given object class as a schema entry.
+     * @throws LdapException 
+     */
+    private Entry convert( ObjectClass objectClass ) throws LdapException
+    {
+        // Creating a blank entry
+        Entry entry = new DefaultEntry();
+
+        // Setting calculated DN
+        entry.setDn( getDn( objectClass, SchemaConstants.OBJECT_CLASSES_PATH ) );
+
+        // Values common to all schema objects
+        addSchemaObjectValues( objectClass, SchemaConstants.META_OBJECT_CLASS_OC, entry );
+
+        // Superiors value
+        addSuperiorsValue( objectClass, entry );
+
+        // Class type value
+        addClassTypeValue( objectClass, entry );
+
+        // Musts value
+        addMustsValue( objectClass, entry );
+
+        // Mays value
+        addMaysValue( objectClass, entry );
+
+        return entry;
+    }
+
+
+    /**
+     * Gets the DN associated with the given schema object in the given container.
+     *
+     * @param so the schema object
+     * @param container the container
+     * @return the DN associated with the given schema object in the given container.
+     * @throws LdapInvalidDnException
+     */
+    private Dn getDn( SchemaObject so, String container ) throws LdapInvalidDnException
+    {
+        return Dn.EMPTY_DN
+            .add( new Rdn( SchemaConstants.OU_SCHEMA ) )
+            .add( new Rdn( SchemaConstants.CN_AT, Rdn.escapeValue( CONNECTION_SCHEMA_NAME ) ) )
+            .add( new Rdn( container ) )
+            .add( new Rdn( "m-oid", so.getOid() ) );
+    }
+
+
+    /**
+     * Adds the values common to all {@link SchemaObject}(s) to the entry.
+     *
+     * @param schemaObject
+     *      the schema object
+     * @param objectClassValue
+     *      the value for the objectClass attribute
+     * @param entry
+     *      the entry
+     * @throws LdapException
+     */
+    private static void addSchemaObjectValues( SchemaObject schemaObject, String objectClassValue, Entry entry )
+        throws LdapException
+    {
+        // ObjectClass
+        addObjectClassValue( schemaObject, objectClassValue, entry );
+
+        // OID
+        addOidValue( schemaObject, entry );
+
+        // Names
+        addNamesValue( schemaObject, entry );
+
+        // Description
+        addDescriptionValue( schemaObject, entry );
+
+        // Obsolete
+        addObsoleteValue( schemaObject, entry );
+    }
+
+
+    /**
+     * Adds the objectClass value to the entry.
+     *
+     * @param schemaObject
+     *      the schema object
+     * @param objectClassValue
+     *      the value for the objectClass attribute
+     * @param entry
+     *      the entry
+     * @throws LdapException
+     */
+    private static void addObjectClassValue( SchemaObject schemaObject, String objectClassValue, Entry entry )
+        throws LdapException
+    {
+        Attribute objectClassAttribute = new DefaultAttribute( SchemaConstants.OBJECT_CLASS_AT );
+        entry.add( objectClassAttribute );
+        objectClassAttribute.add( SchemaConstants.TOP_OC );
+        objectClassAttribute.add( SchemaConstants.META_TOP_OC );
+        objectClassAttribute.add( objectClassValue );
+    }
+
+
+    /**
+     * Adds the OID value to the entry.
+     *
+     * @param schemaObject
+     *      the schema object
+     * @param entry
+     *      the entry
+     * @throws LdapException
+     */
+    private static void addOidValue( SchemaObject schemaObject, Entry entry ) throws LdapException
+    {
+        String oid = schemaObject.getOid();
+        if ( !Strings.isEmpty( oid ) )
+        {
+            Attribute attribute = new DefaultAttribute( M_OID, oid );
+            entry.add( attribute );
+        }
+    }
+
+
+    /**
+     * Adds the names value to the entry.
+     *
+     * @param schemaObject
+     *      the schema object
+     * @param entry
+     *      the entry
+     * @throws LdapException
+     */
+    private static void addNamesValue( SchemaObject schemaObject, Entry entry ) throws LdapException
+    {
+        List<String> names = schemaObject.getNames();
+        if ( ( names != null ) && ( names.size() > 0 ) )
+        {
+            Attribute attribute = new DefaultAttribute( M_NAME );
+            entry.add( attribute );
+
+            for ( String name : names )
+            {
+                attribute.add( name );
+            }
+        }
+    }
+
+
+    /**
+     * Adds the description value to the entry.
+     *
+     * @param schemaObject
+     *      the schema object
+     * @param entry
+     *      the entry
+     * @throws LdapException
+     */
+    private static void addDescriptionValue( SchemaObject schemaObject, Entry entry ) throws LdapException
+    {
+        String description = schemaObject.getDescription();
+        if ( !Strings.isEmpty( description ) )
+        {
+            Attribute attribute = new DefaultAttribute( M_DESCRIPTION, description );
+            entry.add( attribute );
+        }
+    }
+
+
+    /**
+     * Adds the obsolete value to the entry.
+     *
+     * @param schemaObject
+     *      the schema object
+     * @param entry
+     *      the entry
+     * @throws LdapException
+     */
+    private static void addObsoleteValue( SchemaObject schemaObject, Entry entry ) throws LdapException
+    {
+        if ( schemaObject.isObsolete() )
+        {
+            Attribute attribute = new DefaultAttribute( M_OBSOLETE, TRUE );
+            entry.add( attribute );
+        }
+    }
+
+
+    /**
+     * Adds the superior value.
+     *
+     * @param attributeType
+     *      the attribute type
+     * @param entry
+     *      the entry
+     * @throws LdapException
+     */
+    private static void addSuperiorValue( AttributeType attributeType, Entry entry ) throws LdapException
+    {
+        String superior = attributeType.getSuperiorName();
+        if ( !Strings.isEmpty( superior ) )
+        {
+            Attribute attribute = new DefaultAttribute( M_SUP_ATTRIBUTE_TYPE, superior );
+            entry.add( attribute );
+        }
+    }
+
+
+    /**
+     * Adds the equality matching rule value.
+     *
+     * @param attributeType
+     *      the attribute type
+     * @param entry
+     *      the entry
+     * @throws LdapException
+     */
+    private static void addEqualityValue( AttributeType attributeType, Entry entry ) throws LdapException
+    {
+        String equality = attributeType.getEqualityName();
+        if ( !Strings.isEmpty( equality ) )
+        {
+            Attribute attribute = new DefaultAttribute( M_EQUALITY, equality );
+            entry.add( attribute );
+        }
+    }
+
+
+    /**
+     * Adds the ordering matching rule value.
+     *
+     * @param attributeType
+     *      the attribute type
+     * @param entry
+     *      the entry
+     * @throws LdapException
+     */
+    private static void addOrderingValue( AttributeType attributeType, Entry entry ) throws LdapException
+    {
+        String ordering = attributeType.getOrderingName();
+        if ( !Strings.isEmpty( ordering ) )
+        {
+            Attribute attribute = new DefaultAttribute( M_ORDERING, ordering );
+            entry.add( attribute );
+        }
+    }
+
+
+    /**
+     * Adds the substring matching rule value.
+     *
+     * @param attributeType
+     *      the attribute type
+     * @param entry
+     *      the entry
+     * @throws LdapException
+     */
+    private static void addSubstrValue( AttributeType attributeType, Entry entry ) throws LdapException
+    {
+        String substr = attributeType.getSubstringName();
+        if ( !Strings.isEmpty( substr ) )
+        {
+            Attribute attribute = new DefaultAttribute( M_SUBSTR, substr );
+            entry.add( attribute );
+        }
+    }
+
+
+    /**
+     * Adds the syntax value.
+     *
+     * @param attributeType
+     *      the attribute type
+     * @param entry
+     *      the entry
+     * @throws LdapException
+     */
+    private static void addSyntaxValue( AttributeType attributeType, Entry entry ) throws LdapException
+    {
+        String syntax = attributeType.getSyntaxName();
+        if ( !Strings.isEmpty( syntax ) )
+        {
+            Attribute attribute = new DefaultAttribute( M_SYNTAX, syntax );
+            entry.add( attribute );
+
+            long syntaxLength = attributeType.getSyntaxLength();
+            if ( syntaxLength != -1 )
+            {
+                attribute = new DefaultAttribute( M_LENGTH, "" + syntaxLength );
+                entry.add( attribute );
+            }
+        }
+    }
+
+
+    /**
+     * Adds the single value value.
+     *
+     * @param attributeType
+     *      the attribute type
+     * @param entry
+     *      the entry
+     * @throws LdapException
+     */
+    private static void addSingleValueValue( AttributeType attributeType, Entry entry ) throws LdapException
+    {
+        if ( attributeType.isSingleValued() )
+        {
+            Attribute attribute = new DefaultAttribute( M_SINGLE_VALUE, TRUE );
+            entry.add( attribute );
+        }
+    }
+
+
+    /**
+     * Adds the collective value.
+     *
+     * @param attributeType
+     *      the attribute type
+     * @param entry
+     *      the entry
+     * @throws LdapException
+     */
+    private static void addCollectiveValue( AttributeType attributeType, Entry entry ) throws LdapException
+    {
+        if ( attributeType.isCollective() )
+        {
+            Attribute attribute = new DefaultAttribute( M_COLLECTIVE, TRUE );
+            entry.add( attribute );
+        }
+    }
+
+
+    /**
+     * Adds the no user modification value.
+     *
+     * @param attributeType
+     *      the attribute type
+     * @param entry
+     *      the entry
+     * @throws LdapException
+     */
+    private static void addNoUserModificationValue( AttributeType attributeType, Entry entry ) throws LdapException
+    {
+        if ( !attributeType.isUserModifiable() )
+        {
+            Attribute attribute = new DefaultAttribute( M_NO_USER_MODIFICATION, TRUE );
+            entry.add( attribute );
+        }
+    }
+
+
+    /**
+     * Adds the usage value.
+     *
+     * @param attributeType
+     *      the attribute type
+     * @param entry
+     *      the entry
+     * @throws LdapException
+     */
+    private static void addUsageValue( AttributeType attributeType, Entry entry ) throws LdapException
+    {
+        UsageEnum usage = attributeType.getUsage();
+        if ( usage != UsageEnum.USER_APPLICATIONS )
+        {
+            Attribute attribute = new DefaultAttribute( M_USAGE, usage.render() );
+            entry.add( attribute );
+        }
+    }
+
+
+    /**
+     * Adds the superiors value.
+     *
+     * @param objectClass
+     *      the object class
+     * @param entry
+     *      the entry
+     * @throws LdapException
+     */
+    private static void addSuperiorsValue( ObjectClass objectClass, Entry entry ) throws LdapException
+    {
+        List<String> superiors = objectClass.getSuperiorOids();
+        if ( ( superiors != null ) && ( superiors.size() > 0 ) )
+        {
+            Attribute attribute = new DefaultAttribute( M_SUP_OBJECT_CLASS );
+            entry.add( attribute );
+
+            for ( String superior : superiors )
+            {
+                attribute.add( superior );
+            }
+        }
+    }
+
+
+    /**
+     * Adds class type value.
+     *
+     * @param objectClass
+     *      the object class
+     * @param entry
+     *      the entry
+     * @throws LdapException
+     */
+    private static void addClassTypeValue( ObjectClass objectClass, Entry entry ) throws LdapException
+    {
+        ObjectClassTypeEnum classType = objectClass.getType();
+        if ( classType != ObjectClassTypeEnum.STRUCTURAL )
+        {
+            Attribute attribute = new DefaultAttribute( M_TYPE_OBJECT_CLASS, classType.toString() );
+            entry.add( attribute );
+        }
+    }
+
+
+    /**
+     * Adds musts value.
+     *
+     * @param objectClass
+     *      the object class
+     * @param entry
+     *      the entry
+     * @throws LdapException
+     */
+    private static void addMustsValue( ObjectClass objectClass, Entry entry ) throws LdapException
+    {
+        List<String> musts = objectClass.getMustAttributeTypeOids();
+        if ( ( musts != null ) && ( musts.size() > 0 ) )
+        {
+            Attribute attribute = new DefaultAttribute( M_MUST );
+            entry.add( attribute );
+
+            for ( String must : musts )
+            {
+                attribute.add( must );
+            }
+        }
+    }
+
+
+    /**
+     * Adds mays value.
+     *
+     * @param objectClass
+     *      the object class
+     * @param entry
+     *      the entry
+     * @throws LdapException
+     */
+    private static void addMaysValue( ObjectClass objectClass, Entry entry ) throws LdapException
+    {
+        List<String> mays = objectClass.getMayAttributeTypeOids();
+        if ( ( mays != null ) && ( mays.size() > 0 ) )
+        {
+            Attribute attribute = new DefaultAttribute( M_MAY );
+            entry.add( attribute );
+
+            for ( String may : mays )
+            {
+                attribute.add( may );
+            }
+        }
+    }
+}

Added: directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/Messages.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/Messages.java?rev=1669123&view=auto
==============================================================================
--- directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/Messages.java (added)
+++ directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/Messages.java Wed Mar 25 13:26:29 2015
@@ -0,0 +1,31 @@
+package org.apache.directory.studio.openldap.config;
+
+
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+
+public class Messages
+{
+    private static final String BUNDLE_NAME = "org.apache.directory.studio.openldap.config"; //$NON-NLS-1$
+
+    private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle( BUNDLE_NAME );
+
+
+    private Messages()
+    {
+    }
+
+
+    public static String getString( String key )
+    {
+        try
+        {
+            return RESOURCE_BUNDLE.getString( key );
+        }
+        catch ( MissingResourceException e )
+        {
+            return '!' + key + '!';
+        }
+    }
+}

Added: directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/OpenLdapConfigurationPlugin.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/OpenLdapConfigurationPlugin.java?rev=1669123&view=auto
==============================================================================
--- directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/OpenLdapConfigurationPlugin.java (added)
+++ directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/OpenLdapConfigurationPlugin.java Wed Mar 25 13:26:29 2015
@@ -0,0 +1,150 @@
+package org.apache.directory.studio.openldap.config;
+
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.PropertyResourceBundle;
+
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+
+/**
+ * The activator class controls the plug-in life cycle.
+ */
+public class OpenLdapConfigurationPlugin extends AbstractUIPlugin
+{
+    /** The shared instance */
+    private static OpenLdapConfigurationPlugin plugin;
+
+    /** The plugin properties */
+    private PropertyResourceBundle properties;
+
+
+    /**
+     * Creates a new instance of ApacheDS2ConfigurationPlugin.
+     */
+    public OpenLdapConfigurationPlugin()
+    {
+        plugin = this;
+    }
+
+
+    /*
+     * (non-Javadoc)
+     * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+     */
+    public void start( BundleContext context ) throws Exception
+    {
+        super.start( context );
+    }
+
+
+    /*
+     * (non-Javadoc)
+     * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+     */
+    public void stop( BundleContext context ) throws Exception
+    {
+        super.stop( context );
+    }
+
+
+    /**
+     * Returns the shared instance.
+     *
+     * @return
+     *      the shared instance
+     */
+    public static OpenLdapConfigurationPlugin getDefault()
+    {
+        return plugin;
+    }
+
+
+    /**
+     * Use this method to get SWT images. Use the IMG_ constants from
+     * PluginConstants for the key.
+     *
+     * @param key
+     *                The key (relative path to the image in filesystem)
+     * @return The image descriptor or null
+     */
+    public ImageDescriptor getImageDescriptor( String key )
+    {
+        if ( key != null )
+        {
+            URL url = FileLocator.find( getBundle(), new Path( key ), null );
+            if ( url != null )
+                return ImageDescriptor.createFromURL( url );
+            else
+                return null;
+        }
+        else
+        {
+            return null;
+        }
+    }
+
+
+    /**
+     * Use this method to get SWT images. Use the IMG_ constants from
+     * PluginConstants for the key. A ImageRegistry is used to manage the
+     * the key->Image mapping.
+     * <p>
+     * Note: Don't dispose the returned SWT Image. It is disposed
+     * automatically when the plugin is stopped.
+     *
+     * @param key
+     *                The key (relative path to the image in filesystem)
+     * @return The SWT Image or null
+     */
+    public Image getImage( String key )
+    {
+        Image image = getImageRegistry().get( key );
+        if ( image == null )
+        {
+            ImageDescriptor id = getImageDescriptor( key );
+            if ( id != null )
+            {
+                image = id.createImage();
+                getImageRegistry().put( key, image );
+            }
+        }
+        return image;
+    }
+
+
+    /**
+     * Gets the plugin properties.
+     *
+     * @return
+     *      the plugin properties
+     */
+    public PropertyResourceBundle getPluginProperties()
+    {
+        if ( properties == null )
+        {
+            try
+            {
+                properties = new PropertyResourceBundle( FileLocator.openStream( this.getBundle(), new Path(
+                    "plugin.properties" ), false ) ); //$NON-NLS-1$
+            }
+            catch ( IOException e )
+            {
+                // We can't use the PLUGIN_ID constant since loading the plugin.properties file has failed,
+                // So we're using a default plugin id.
+                getLog().log(
+                    new Status( Status.ERROR, "org.apache.directory.studio.apacheds.configuration.v2", Status.OK, //$NON-NLS-1$
+                        Messages.getString( "OpenLdapConfigurationPlugin.UnableGetProperties" ), e ) ); //$NON-NLS-1$
+            }
+        }
+
+        return properties;
+    }
+}

Added: directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/OpenLdapConfigurationPluginConstants.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/OpenLdapConfigurationPluginConstants.java?rev=1669123&view=auto
==============================================================================
--- directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/OpenLdapConfigurationPluginConstants.java (added)
+++ directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/OpenLdapConfigurationPluginConstants.java Wed Mar 25 13:26:29 2015
@@ -0,0 +1,19 @@
+package org.apache.directory.studio.openldap.config;
+
+
+/**
+ * This interface contains all the Constants used in the Plugin.
+ */
+public interface OpenLdapConfigurationPluginConstants
+{
+    /** The plug-in ID */
+    public static final String PLUGIN_ID = OpenLdapConfigurationPlugin.getDefault().getPluginProperties()
+        .getString( "Plugin_id" ); //$NON-NLS-1$
+
+    // ------
+    // IMAGES
+    // ------
+    public static final String IMG_EDITOR = "resources/icons/editor.gif"; //$NON-NLS-1$
+    public static final String IMG_DATABASE = "resources/icons/database.gif"; //$NON-NLS-1$
+    public static final String IMG_OVERLAY = "resources/icons/overlay.gif"; //$NON-NLS-1$
+}

Added: directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/actions/OpenConfigurationAction.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/actions/OpenConfigurationAction.java?rev=1669123&view=auto
==============================================================================
--- directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/actions/OpenConfigurationAction.java (added)
+++ directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/actions/OpenConfigurationAction.java Wed Mar 25 13:26:29 2015
@@ -0,0 +1,108 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *  
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *  
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License. 
+ *  
+ */
+
+package org.apache.directory.studio.openldap.config.actions;
+
+
+import org.apache.directory.studio.connection.core.Connection;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.ui.IObjectActionDelegate;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+
+import org.apache.directory.studio.openldap.config.editor.ConnectionServerConfigurationInput;
+import org.apache.directory.studio.openldap.config.editor.ServerConfigurationEditor;
+
+
+public class OpenConfigurationAction implements IObjectActionDelegate
+{
+    /** The selected connection */
+    private Connection selectedConnection;
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void run( IAction action )
+    {
+        if ( selectedConnection != null )
+        {
+            try
+            {
+                IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+                try
+                {
+                    page.openEditor( new ConnectionServerConfigurationInput( selectedConnection ),
+                        ServerConfigurationEditor.ID );
+                }
+                catch ( PartInitException e )
+                {
+                    // TODO Auto-generated catch block
+                    e.printStackTrace();
+                }
+            }
+            catch ( Exception e )
+            {
+                // TODO Auto-generated catch block
+                e.printStackTrace();
+            }
+
+            //            try
+            //            {
+            //                ConfigurationReader.readConfiguration( selectedConnection );
+            //            }
+            //            catch ( Exception e )
+            //            {
+            //                // TODO Auto-generated catch block
+            //                e.printStackTrace();
+            //            }
+        }
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void selectionChanged( IAction action, ISelection selection )
+    {
+        StructuredSelection structuredSelection = ( StructuredSelection ) selection;
+        if ( ( structuredSelection.size() == 1 ) && ( structuredSelection.getFirstElement() instanceof Connection ) )
+        {
+            selectedConnection = ( Connection ) structuredSelection.getFirstElement();
+        }
+        else
+        {
+            selectedConnection = null;
+        }
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void setActivePart( IAction action, IWorkbenchPart targetPart )
+    {
+        // Nothing to do
+    }
+}

Added: directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/ConnectionServerConfigurationInput.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/ConnectionServerConfigurationInput.java?rev=1669123&view=auto
==============================================================================
--- directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/ConnectionServerConfigurationInput.java (added)
+++ directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/ConnectionServerConfigurationInput.java Wed Mar 25 13:26:29 2015
@@ -0,0 +1,162 @@
+package org.apache.directory.studio.openldap.config.editor;
+
+
+import org.apache.directory.studio.connection.core.Connection;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IPersistableElement;
+
+import org.apache.directory.studio.openldap.config.jobs.EntryBasedConfigurationPartition;
+
+
+/**
+ * This class represents the Non Existing Server Configuration Input.
+ */
+public class ConnectionServerConfigurationInput implements IEditorInput
+{
+    /** The connection */
+    private Connection connection;
+
+    /** The original configuration partition */
+    private EntryBasedConfigurationPartition originalPartition;
+
+
+    /**
+     * Creates a new instance of ConnectionServerConfigurationInput.
+     *
+     * @param connection
+     *      the connection
+     */
+    public ConnectionServerConfigurationInput( Connection connection )
+    {
+        this.connection = connection;
+    }
+
+
+    /**
+     * Gets the connection.
+     *
+     * @return
+     *      the connection
+     */
+    public Connection getConnection()
+    {
+        return connection;
+    }
+
+
+    /**
+     * Gets the original configuration partition.
+     *
+     * @return
+     *      the original configuration partition
+     */
+    public EntryBasedConfigurationPartition getOriginalPartition()
+    {
+        return originalPartition;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public String getToolTipText()
+    {
+        return NLS.bind( "{0} - Configuration", connection.getName() );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public String getName()
+    {
+        return NLS.bind( "{0} - Configuration", connection.getName() );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean exists()
+    {
+        return connection != null;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public ImageDescriptor getImageDescriptor()
+    {
+        return null;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public IPersistableElement getPersistable()
+    {
+        return null;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public Object getAdapter( Class adapter )
+    {
+        return null;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean equals( Object obj )
+    {
+        if ( obj == null )
+        {
+            return false;
+        }
+
+        if ( obj instanceof ConnectionServerConfigurationInput )
+        {
+            ConnectionServerConfigurationInput input = ( ConnectionServerConfigurationInput ) obj;
+            if ( input.exists() && exists() )
+            {
+                Connection inputConnection = input.getConnection();
+
+                if ( ( inputConnection != null ) && ( inputConnection != null ) )
+                {
+                    return inputConnection.equals( connection );
+                }
+            }
+        }
+
+        return false;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public int hashCode()
+    {
+        return connection.hashCode();
+    }
+
+
+    /**
+     * Sets the original configuration partition.
+     *
+     * @param originalPartition
+     *      the original configuration 
+     */
+    public void setOriginalPartition( EntryBasedConfigurationPartition originalPartition )
+    {
+        this.originalPartition = originalPartition;
+    }
+}

Added: directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/ErrorPage.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/ErrorPage.java?rev=1669123&view=auto
==============================================================================
--- directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/ErrorPage.java (added)
+++ directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/ErrorPage.java Wed Mar 25 13:26:29 2015
@@ -0,0 +1,147 @@
+package org.apache.directory.studio.openldap.config.editor;
+
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.forms.IManagedForm;
+import org.eclipse.ui.forms.editor.FormEditor;
+import org.eclipse.ui.forms.editor.FormPage;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.ScrolledForm;
+
+
+/**
+ * This class represents the Error Page of the Server Configuration Editor.
+ */
+public class ErrorPage extends FormPage
+{
+    /** The Page ID*/
+    public static final String ID = ErrorPage.class.getName();
+
+    /** The Page Title */
+    private static final String TITLE = "Error opening the editor";
+
+    private static final String DETAILS_CLOSED = NLS.bind( "{0} >>", "Details" );
+    private static final String DETAILS_OPEN = NLS.bind( "<< {0}", "Details" );
+
+    /** The exception */
+    private Exception exception;
+
+    /** The flag indicating that the details are shown */
+    private boolean detailsShown = false;
+
+    // UI Controls
+    private FormToolkit toolkit;
+    private Composite parent;
+    private Button detailsButton;
+
+    private Text detailsText;
+
+
+    /**
+     * Creates a new instance of ErrorPage.
+     *
+     * @param editor
+     *      the associated editor
+     */
+    public ErrorPage( FormEditor editor, Exception exception )
+    {
+        super( editor, ID, TITLE );
+        this.exception = exception;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    protected void createFormContent( IManagedForm managedForm )
+    {
+        ScrolledForm form = managedForm.getForm();
+        form.setText( "Error opening the editor" );
+        form.setImage( Display.getCurrent().getSystemImage( SWT.ICON_ERROR ) );
+
+        parent = form.getBody();
+        GridLayout gl = new GridLayout( 2, false );
+        gl.marginHeight = 10;
+        gl.marginWidth = 10;
+        parent.setLayout( gl );
+        parent.setLayoutData( new GridData( SWT.FILL, SWT.FILL, true, true ) );
+
+        toolkit = managedForm.getToolkit();
+        toolkit.decorateFormHeading( form.getForm() );
+
+        // Error Label
+        Label errorLabel = toolkit.createLabel( parent,
+            NLS.bind( "Could not open the editor: {0}", exception.getMessage() ) );
+        errorLabel.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+
+        // Details Button
+        detailsButton = new Button( parent, SWT.PUSH );
+        detailsButton.setText( DETAILS_CLOSED );
+        detailsButton.setLayoutData( new GridData( SWT.RIGHT, SWT.NONE, false, false ) );
+        detailsButton.addSelectionListener( new SelectionAdapter()
+        {
+            @Override
+            public void widgetSelected( SelectionEvent e )
+            {
+                showOrHideDetailsView();
+            }
+        } );
+    }
+
+
+    /**
+     * Shows or hides the details view.
+     */
+    private void showOrHideDetailsView()
+    {
+        if ( detailsShown )
+        {
+            detailsButton.setText( DETAILS_CLOSED );
+
+            detailsText.dispose();
+        }
+        else
+        {
+            detailsButton.setText( DETAILS_OPEN );
+
+            detailsText = toolkit.createText( parent, getStackTrace( exception ), SWT.H_SCROLL | SWT.V_SCROLL );
+            detailsText.setLayoutData( new GridData( SWT.FILL, SWT.FILL, true, true, 2, 1 ) );
+        }
+
+        parent.layout( true, true );
+
+        detailsShown = !detailsShown;
+    }
+
+
+    /**
+     * Gets the stackTrace of the given exception as a string.
+     *
+     * @param e
+     *      the exception
+     * @return
+     *      the stackTrace of the given exception as a string
+     */
+    private String getStackTrace( Exception e )
+    {
+        StringWriter sw = new StringWriter();
+        PrintWriter pw = new PrintWriter( sw, true );
+        e.printStackTrace( pw );
+        pw.flush();
+        sw.flush();
+        return sw.toString();
+    }
+}

Added: directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/LoadingPage.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/LoadingPage.java?rev=1669123&view=auto
==============================================================================
--- directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/LoadingPage.java (added)
+++ directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/LoadingPage.java Wed Mar 25 13:26:29 2015
@@ -0,0 +1,65 @@
+package org.apache.directory.studio.openldap.config.editor;
+
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.ProgressBar;
+import org.eclipse.ui.forms.IManagedForm;
+import org.eclipse.ui.forms.editor.FormEditor;
+import org.eclipse.ui.forms.editor.FormPage;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.ScrolledForm;
+
+
+/**
+ * This class represents the Loading Page of the Server Configuration Editor.
+ */
+public class LoadingPage extends FormPage
+{
+    /** The Page ID*/
+    public static final String ID = LoadingPage.class.getName(); //$NON-NLS-1$
+
+    /** The Page Title */
+    private static final String TITLE = "Loading Configuration";
+
+
+    /**
+     * Creates a new instance of LoadingPage.
+     *
+     * @param editor
+     *      the associated editor
+     */
+    public LoadingPage( FormEditor editor )
+    {
+        super( editor, ID, TITLE );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    protected void createFormContent( IManagedForm managedForm )
+    {
+        ScrolledForm form = managedForm.getForm();
+        form.setText( "Loading Configuration..." );
+
+        Composite parent = form.getBody();
+        parent.setLayout( new GridLayout() );
+
+        FormToolkit toolkit = managedForm.getToolkit();
+        toolkit.decorateFormHeading( form.getForm() );
+
+        Composite composite = toolkit.createComposite( parent );
+        composite.setLayout( new GridLayout() );
+        composite.setLayoutData( new GridData( SWT.CENTER, SWT.CENTER, true, true ) );
+
+        ProgressBar progressBar = new ProgressBar( composite, SWT.INDETERMINATE );
+        progressBar.setLayoutData( new GridData( SWT.CENTER, SWT.NONE, false, false ) );
+
+        Label label = toolkit.createLabel( composite, "Loading the configuration, please wait..." );
+        label.setLayoutData( new GridData( SWT.CENTER, SWT.NONE, false, false ) );
+    }
+}

Added: directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/OverviewPage.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/OverviewPage.java?rev=1669123&view=auto
==============================================================================
--- directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/OverviewPage.java (added)
+++ directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/OverviewPage.java Wed Mar 25 13:26:29 2015
@@ -0,0 +1,71 @@
+package org.apache.directory.studio.openldap.config.editor;
+
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.Section;
+import org.eclipse.ui.forms.widgets.TableWrapData;
+import org.eclipse.ui.forms.widgets.TableWrapLayout;
+
+
+/**
+ * This class represents the General Page of the Server Configuration Editor.
+ */
+public class OverviewPage extends ServerConfigurationEditorPage
+{
+    /** The Page ID*/
+    public static final String ID = OverviewPage.class.getName(); //$NON-NLS-1$
+
+    /** The Page Title */
+    private static final String TITLE = "Overview";
+
+
+    // UI Controls
+
+    /**
+     * Creates a new instance of GeneralPage.
+     *
+     * @param editor
+     *      the associated editor
+     */
+    public OverviewPage( ServerConfigurationEditor editor )
+    {
+        super( editor, ID, TITLE );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    protected void createFormContent( Composite parent, FormToolkit toolkit )
+    {
+        TableWrapLayout twl = new TableWrapLayout();
+        twl.numColumns = 2;
+        parent.setLayout( twl );
+
+        Composite leftComposite = toolkit.createComposite( parent );
+        leftComposite.setLayout( new GridLayout() );
+        TableWrapData leftCompositeTableWrapData = new TableWrapData( TableWrapData.FILL, TableWrapData.TOP );
+        leftCompositeTableWrapData.grabHorizontal = true;
+        leftComposite.setLayoutData( leftCompositeTableWrapData );
+
+        Composite rightComposite = toolkit.createComposite( parent );
+        rightComposite.setLayout( new GridLayout() );
+        TableWrapData rightCompositeTableWrapData = new TableWrapData( TableWrapData.FILL, TableWrapData.TOP );
+        rightCompositeTableWrapData.grabHorizontal = true;
+        rightComposite.setLayoutData( rightCompositeTableWrapData );
+
+        refreshUI();
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    protected void refreshUI()
+    {
+    }
+}

Added: directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/ServerConfigurationEditor.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/ServerConfigurationEditor.java?rev=1669123&view=auto
==============================================================================
--- directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/ServerConfigurationEditor.java (added)
+++ directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/ServerConfigurationEditor.java Wed Mar 25 13:26:29 2015
@@ -0,0 +1,406 @@
+package org.apache.directory.studio.openldap.config.editor;
+
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.Enumeration;
+
+import org.apache.directory.studio.common.core.jobs.StudioJob;
+import org.apache.directory.studio.common.core.jobs.StudioRunnableWithProgress;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.dialogs.IPageChangedListener;
+import org.eclipse.jface.dialogs.PageChangedEvent;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.forms.editor.FormEditor;
+
+import org.apache.directory.studio.openldap.config.editor.databases.DatabasesPage;
+import org.apache.directory.studio.openldap.config.editor.overlays.OverlaysPage;
+import org.apache.directory.studio.openldap.config.jobs.LoadConfigurationRunnable;
+import org.apache.directory.studio.openldap.config.model.OpenLdapConfiguration;
+import org.apache.directory.studio.openldap.config.model.io.SaveConfigurationRunnable;
+
+
+/**
+ * This class implements the Server Configuration Editor.
+ */
+public class ServerConfigurationEditor extends FormEditor implements IPageChangedListener
+{
+    /** The Editor ID */
+    public static final String ID = ServerConfigurationEditor.class.getName();
+
+    /** The flag indicating if the editor is dirty */
+    private boolean dirty = false;
+
+    /** The configuration */
+    private OpenLdapConfiguration configuration;
+
+    // The pages
+    private LoadingPage loadingPage;
+    private OverviewPage overviewPage;
+    private DatabasesPage databasesPage;
+    private OverlaysPage overlaysPage;
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void init( IEditorSite site, IEditorInput input ) throws PartInitException
+    {
+        super.init( site, input );
+        setPartName( input.getName() );
+
+        addPageChangedListener( this );
+
+        readConfiguration();
+    }
+
+
+    /**
+     * Reads the configuration
+     */
+    private void readConfiguration()
+    {
+        // Creating and scheduling the job to load the configuration
+        StudioJob<StudioRunnableWithProgress> job = new StudioJob<StudioRunnableWithProgress>(
+                    new LoadConfigurationRunnable( this ) );
+        job.schedule();
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void pageChanged( PageChangedEvent event )
+    {
+        Object selectedPage = event.getSelectedPage();
+
+        if ( selectedPage instanceof ServerConfigurationEditorPage )
+        {
+            ( ( ServerConfigurationEditorPage ) selectedPage ).refreshUI();
+        }
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    protected void addPages()
+    {
+        try
+        {
+            loadingPage = new LoadingPage( this );
+            addPage( loadingPage );
+        }
+        catch ( PartInitException e )
+        {
+        }
+
+        showOrHideTabFolder();
+    }
+
+
+    /**
+     * Shows or hides the tab folder depending on
+     * the number of pages.
+     */
+    private void showOrHideTabFolder()
+    {
+        Composite container = getContainer();
+        if ( container instanceof CTabFolder )
+        {
+            CTabFolder folder = ( CTabFolder ) container;
+            if ( getPageCount() == 1 )
+            {
+                folder.setTabHeight( 0 );
+            }
+            else
+            {
+                folder.setTabHeight( -1 );
+            }
+            folder.layout( true, true );
+        }
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void doSave( IProgressMonitor monitor )
+    {
+        StudioJob<StudioRunnableWithProgress> job = new StudioJob<StudioRunnableWithProgress>(
+            new SaveConfigurationRunnable( this ) );
+        job.schedule();
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void doSaveAs()
+    {
+        try
+        {
+            getSite().getWorkbenchWindow().run( false, false, new IRunnableWithProgress()
+            {
+                public void run( IProgressMonitor monitor ) throws InvocationTargetException, InterruptedException
+                {
+                    try
+                    {
+                        monitor.beginTask( "Saving Server Configuration", IProgressMonitor.UNKNOWN );
+                        doSaveAs( monitor );
+                        monitor.done();
+                    }
+                    catch ( Exception e )
+                    {
+                        // TODO handle the exception
+                    }
+                }
+            } );
+        }
+        catch ( Exception e )
+        {
+            // TODO handle the exception
+            e.printStackTrace();
+        }
+    }
+
+
+    /**
+     * Performs the "Save as..." action.
+     *
+     * @param monitor
+     *      the monitor to use
+     * @throws Exception
+     */
+    public boolean doSaveAs( IProgressMonitor monitor ) throws Exception
+    {
+        // Saving the configuration as a new file and getting the associated new editor input
+        IEditorInput newInput = null; //ServerConfigurationEditorUtils.saveAs( monitor, getSite().getShell(),
+        //getEditorInput(), getConfigWriter() );
+
+        // Checking if the 'save as' is successful 
+        boolean success = newInput != null;
+        if ( success )
+        {
+            // Setting the new input to the editor
+            setInput( newInput );
+
+            // Resetting the dirty state of the editor
+            setDirty( false );
+
+            // Updating the title and tooltip texts
+            Display.getDefault().syncExec( new Runnable()
+            {
+                public void run()
+                {
+                    setPartName( getEditorInput().getName() );
+                }
+            } );
+        }
+
+        return success;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean isSaveAsAllowed()
+    {
+        return true;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean isDirty()
+    {
+        return dirty;
+    }
+
+
+    /**
+     * Sets the 'dirty' flag.
+     *
+     * @param dirty
+     *      the 'dirty' flag
+     */
+    public void setDirty( boolean dirty )
+    {
+        this.dirty = dirty;
+
+        Display.getDefault().asyncExec( new Runnable()
+        {
+            public void run()
+            {
+                firePropertyChange( PROP_DIRTY );
+            }
+        } );
+    }
+
+
+    /**
+     * Gets the configuration.
+     *
+     * @return
+     *      the configuration
+     */
+    public OpenLdapConfiguration getConfiguration()
+    {
+        return configuration;
+    }
+
+
+    /*
+     * Sets the configuration.
+     *
+     * @param configuration
+     *      the configuration
+     */
+    public void setConfiguration( OpenLdapConfiguration configuration )
+    {
+        this.configuration = configuration;
+    }
+
+
+    /**
+     * Resets the configuration and refresh the UI.
+     *
+     * @param configBean
+     *      the configuration bean
+     */
+    public void resetConfiguration( OpenLdapConfiguration configuration )
+    {
+        setConfiguration( configuration );
+
+        setDirty( true );
+
+        overviewPage.refreshUI();
+        databasesPage.refreshUI();
+        overlaysPage.refreshUI();
+        //        ldapLdapsServersPage.refreshUI();
+        //        kerberosServerPage.refreshUI();
+        //        partitionsPage.refreshUI();
+        //        replicationPage.refreshUI();
+    }
+
+
+    /**
+     * This method is called by the job responsible for loading the 
+     * configuration when it has been fully and correctly loaded.
+     *
+     * @param configBean
+     *      the loaded configuration bean
+     */
+    public void configurationLoaded( OpenLdapConfiguration configuration )
+    {
+        setConfiguration( configuration );
+
+        hideLoadingPageAndDisplayConfigPages();
+    }
+
+
+    /**
+     * This method is called by the job responsible for loading the
+     * configuration when it failed to load it.
+     *
+     * @param exception
+     *      the exception
+     */
+    public void configurationLoadFailed( Exception exception )
+    {
+        // Overriding the default dirty setting 
+        // (especially in the case of a new configuration file)
+        setDirty( false );
+
+        hideLoadingPageAndDisplayErrorPage( exception );
+    }
+
+
+    /**
+     * Hides the loading page and displays the standard configuration pages.
+     */
+    private void hideLoadingPageAndDisplayConfigPages()
+    {
+        // Removing the loading page
+        removePage( 0 );
+
+        // Adding the configuration pages
+        try
+        {
+            overviewPage = new OverviewPage( this );
+            addPage( overviewPage );
+            databasesPage = new DatabasesPage( this );
+            addPage( databasesPage );
+            overlaysPage = new OverlaysPage( this );
+            addPage( overlaysPage );
+        }
+        catch ( PartInitException e )
+        {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+
+        // Activating the first page
+        setActivePage( 0 );
+
+        showOrHideTabFolder();
+    }
+
+
+    /**
+     * Hides the loading page and displays the error page.
+     *
+     * @param exception
+     *      the exception
+     */
+    private void hideLoadingPageAndDisplayErrorPage( Exception exception )
+    {
+        // Removing the loading page
+        removePage( 0 );
+
+        // Adding the error page
+        try
+        {
+            addPage( new ErrorPage( this, exception ) );
+        }
+        catch ( PartInitException e )
+        {
+        }
+
+        // Activating the first page
+        setActivePage( 0 );
+
+        showOrHideTabFolder();
+    }
+
+
+    /**
+     * Set a particular page as active if it is found in the pages vector.
+     *
+     * @param pageClass
+     *      the class of the page
+     */
+    public void showPage( Class<?> pageClass )
+    {
+        if ( pageClass != null )
+        {
+            Enumeration<Object> enumeration = pages.elements();
+            while ( enumeration.hasMoreElements() )
+            {
+                Object page = enumeration.nextElement();
+                if ( pageClass.isInstance( page ) )
+                {
+                    setActivePage( pages.indexOf( page ) );
+                    return;
+                }
+            }
+        }
+    }
+}



Mime
View raw message