You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by pa...@apache.org on 2010/03/23 17:15:27 UTC

svn commit: r926643 [1/6] - in /directory/studio/trunk/apacheds-configuration/src/main: java/org/apache/directory/studio/apacheds/configuration/ java/org/apache/directory/studio/apacheds/configuration/editor/ java/org/apache/directory/studio/apacheds/c...

Author: pamarcelot
Date: Tue Mar 23 16:15:26 2010
New Revision: 926643

URL: http://svn.apache.org/viewvc?rev=926643&view=rev
Log:
Fix for DIRSTUDIO-640 (Support for server.xml file of Apache DS version 1.5.6).

Added:
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v156/
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v156/AuthenticationPage.java
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v156/ExtendedOperationDetailsPage.java
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v156/ExtendedOperationsMasterDetailsBlock.java
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v156/ExtendedOperationsPage.java
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v156/GeneralPage.java
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v156/InterceptorDetailsPage.java
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v156/InterceptorsMasterDetailsBlock.java
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v156/InterceptorsPage.java
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v156/Messages.java
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v156/PartitionDetailsPage.java
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v156/PartitionsMasterDetailsBlock.java
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v156/PartitionsPage.java
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v156/dialogs/
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v156/dialogs/AttributeValueDialog.java
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v156/dialogs/AttributeValueObject.java
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v156/dialogs/ExtendedOperationDialog.java
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v156/dialogs/IndexedAttributeDialog.java
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v156/dialogs/InterceptorDialog.java
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v156/dialogs/Messages.java
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v156/dialogs/NtlmProviderDialog.java
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v156/dialogs/SaslRealmDialog.java
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v156/dialogs/messages.properties
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v156/dialogs/messages_de.properties
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v156/dialogs/messages_fr.properties
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v156/messages.properties
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v156/messages_de.properties
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v156/messages_fr.properties
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/v156/
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/v156/ExtendedOperationEnum.java
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/v156/IndexedAttribute.java
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/v156/InterceptorConfiguration.java
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/v156/InterceptorEnum.java
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/v156/Messages.java
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/v156/Partition.java
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/v156/ReplicationInterceptorConfiguration.java
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/v156/SaslQualityOfProtectionEnum.java
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/v156/ServerConfigurationV156.java
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/v156/ServerXmlIOV156.java
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/v156/SupportedMechanismEnum.java
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/v156/messages.properties
    directory/studio/trunk/apacheds-configuration/src/main/resources/org/apache/directory/studio/apacheds/configuration/default-server-1.5.6.xml
Modified:
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/ApacheDSConfigurationPlugin.java
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/NonExistingServerConfigurationInput.java
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/ServerConfigurationEditor.java
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/messages.properties
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/messages_de.properties
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/messages_fr.properties
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/ServerConfigurationVersionEnum.java
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/messages.properties
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/messages_fr.properties
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/v155/ServerXmlIOV155.java
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/wizards/NewApacheDSConfigurationFileWizard.java
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/wizards/NewApacheDSConfigurationFileWizardPage.java

Modified: directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/ApacheDSConfigurationPlugin.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/ApacheDSConfigurationPlugin.java?rev=926643&r1=926642&r2=926643&view=diff
==============================================================================
--- directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/ApacheDSConfigurationPlugin.java (original)
+++ directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/ApacheDSConfigurationPlugin.java Tue Mar 23 16:15:26 2010
@@ -45,6 +45,7 @@ import org.apache.directory.studio.apach
 import org.apache.directory.studio.apacheds.configuration.model.v153.ServerXmlIOV153;
 import org.apache.directory.studio.apacheds.configuration.model.v154.ServerXmlIOV154;
 import org.apache.directory.studio.apacheds.configuration.model.v155.ServerXmlIOV155;
+import org.apache.directory.studio.apacheds.configuration.model.v156.ServerXmlIOV156;
 
 
 /**
@@ -62,8 +63,8 @@ public class ApacheDSConfigurationPlugin
     private PropertyResourceBundle properties;
 
     private ServerXmlIO[] serverXmlIOs = new ServerXmlIO[]
-        { new ServerXmlIOV155(), new ServerXmlIOV154(), new ServerXmlIOV153(), new ServerXmlIOV152(),
-            new ServerXmlIOV151(), new ServerXmlIOV150(), };
+        { new ServerXmlIOV156(), new ServerXmlIOV155(), new ServerXmlIOV154(), new ServerXmlIOV153(),
+            new ServerXmlIOV152(), new ServerXmlIOV151(), new ServerXmlIOV150(), };
 
 
     /**

Modified: directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/NonExistingServerConfigurationInput.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/NonExistingServerConfigurationInput.java?rev=926643&r1=926642&r2=926643&view=diff
==============================================================================
--- directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/NonExistingServerConfigurationInput.java (original)
+++ directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/NonExistingServerConfigurationInput.java Tue Mar 23 16:15:26 2010
@@ -90,6 +90,8 @@ public class NonExistingServerConfigurat
     {
         switch ( serverConfiguration.getVersion() )
         {
+            case VERSION_1_5_6:
+                return Messages.getString( "NonExistingServerConfigurationInput.NewApacheDS156Configuration" ); //$NON-NLS-1$
             case VERSION_1_5_5:
                 return Messages.getString( "NonExistingServerConfigurationInput.NewApacheDS155Configuration" ); //$NON-NLS-1$
             case VERSION_1_5_4:

Modified: directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/ServerConfigurationEditor.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/ServerConfigurationEditor.java?rev=926643&r1=926642&r2=926643&view=diff
==============================================================================
--- directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/ServerConfigurationEditor.java (original)
+++ directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/ServerConfigurationEditor.java Tue Mar 23 16:15:26 2010
@@ -42,6 +42,7 @@ import org.apache.directory.studio.apach
 import org.apache.directory.studio.apacheds.configuration.model.v153.ServerXmlIOV153;
 import org.apache.directory.studio.apacheds.configuration.model.v154.ServerXmlIOV154;
 import org.apache.directory.studio.apacheds.configuration.model.v155.ServerXmlIOV155;
+import org.apache.directory.studio.apacheds.configuration.model.v156.ServerXmlIOV156;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
@@ -145,6 +146,9 @@ public class ServerConfigurationEditor e
             // Setting the ServerXmlIO class
             switch ( serverConfiguration.getVersion() )
             {
+                case VERSION_1_5_6:
+                    serverXmlIO = new ServerXmlIOV156();
+                    break;
                 case VERSION_1_5_5:
                     serverXmlIO = new ServerXmlIOV155();
                     break;
@@ -236,6 +240,27 @@ public class ServerConfigurationEditor e
             {
                 switch ( serverConfiguration.getVersion() )
                 {
+                    case VERSION_1_5_6:
+                        generalPage = new org.apache.directory.studio.apacheds.configuration.editor.v156.GeneralPage(
+                            this );
+                        addPage( generalPage );
+
+                        authenticationPage = new org.apache.directory.studio.apacheds.configuration.editor.v156.AuthenticationPage(
+                            this );
+                        addPage( authenticationPage );
+
+                        partitionsPage = new org.apache.directory.studio.apacheds.configuration.editor.v156.PartitionsPage(
+                            this );
+                        addPage( partitionsPage );
+
+                        interceptorsPage = new org.apache.directory.studio.apacheds.configuration.editor.v156.InterceptorsPage(
+                            this );
+                        addPage( interceptorsPage );
+
+                        extendedOperationsPage = new org.apache.directory.studio.apacheds.configuration.editor.v156.ExtendedOperationsPage(
+                            this );
+                        addPage( extendedOperationsPage );
+                        break;
                     case VERSION_1_5_5:
                         generalPage = new org.apache.directory.studio.apacheds.configuration.editor.v155.GeneralPage(
                             this );
@@ -446,6 +471,13 @@ public class ServerConfigurationEditor e
         {
             switch ( serverConfiguration.getVersion() )
             {
+                case VERSION_1_5_6:
+                    generalPage.save();
+                    authenticationPage.save();
+                    partitionsPage.save();
+                    interceptorsPage.save();
+                    extendedOperationsPage.save();
+                    break;
                 case VERSION_1_5_5:
                     generalPage.save();
                     authenticationPage.save();

Modified: directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/messages.properties
URL: http://svn.apache.org/viewvc/directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/messages.properties?rev=926643&r1=926642&r2=926643&view=diff
==============================================================================
--- directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/messages.properties (original)
+++ directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/messages.properties Tue Mar 23 16:15:26 2010
@@ -24,6 +24,7 @@ NonExistingServerConfigurationInput.NewA
 NonExistingServerConfigurationInput.NewApacheDS153Configuration=New Apache DS 1.5.3 Configuration File
 NonExistingServerConfigurationInput.NewApacheDS154Configuration=New Apache DS 1.5.4 Configuration File
 NonExistingServerConfigurationInput.NewApacheDS155Configuration=New Apache DS 1.5.5 Configuration File
+NonExistingServerConfigurationInput.NewApacheDS156Configuration=New Apache DS 1.5.6 Configuration File
 NonExistingServerConfigurationInput.NewApacheDSConfiguration=New Apache DS Configuration File
 ServerConfigurationEditor.AnErrorOccurredWhenWritingTheFileToDisk=An error occurred when writing the file to disk.
 ServerConfigurationEditor.Error=Error\!

Modified: directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/messages_de.properties
URL: http://svn.apache.org/viewvc/directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/messages_de.properties?rev=926643&r1=926642&r2=926643&view=diff
==============================================================================
--- directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/messages_de.properties (original)
+++ directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/messages_de.properties Tue Mar 23 16:15:26 2010
@@ -23,6 +23,8 @@ NonExistingServerConfigurationInput.NewA
 NonExistingServerConfigurationInput.NewApacheDS152Configuration=Neue Konfigurationsdatei f\u00FCr Apache DS 1.5.2
 NonExistingServerConfigurationInput.NewApacheDS153Configuration=Neue Konfigurationsdatei f\u00FCr Apache DS 1.5.3
 NonExistingServerConfigurationInput.NewApacheDS154Configuration=Neue Konfigurationsdatei f\u00FCr Apache DS 1.5.4
+NonExistingServerConfigurationInput.NewApacheDS155Configuration=Neue Konfigurationsdatei f\u00FCr Apache DS 1.5.5
+NonExistingServerConfigurationInput.NewApacheDS156Configuration=Neue Konfigurationsdatei f\u00FCr Apache DS 1.5.6
 NonExistingServerConfigurationInput.NewApacheDSConfiguration=Neue Konfigurationsdatei f\u00FCr Apache DS
 ServerConfigurationEditor.AnErrorOccurredWhenWritingTheFileToDisk=Ein Fehler ist beim Schreiben aufgetreten.
 ServerConfigurationEditor.Error=Fehler\!

Modified: directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/messages_fr.properties
URL: http://svn.apache.org/viewvc/directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/messages_fr.properties?rev=926643&r1=926642&r2=926643&view=diff
==============================================================================
--- directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/messages_fr.properties (original)
+++ directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/messages_fr.properties Tue Mar 23 16:15:26 2010
@@ -23,6 +23,8 @@ NonExistingServerConfigurationInput.NewA
 NonExistingServerConfigurationInput.NewApacheDS152Configuration=Nouveau fichier de configuration ApacheDS 1.5.2
 NonExistingServerConfigurationInput.NewApacheDS153Configuration=Nouveau fichier de configuration ApacheDS 1.5.3
 NonExistingServerConfigurationInput.NewApacheDS154Configuration=Nouveau fichier de configuration ApacheDS 1.5.4
+NonExistingServerConfigurationInput.NewApacheDS155Configuration=Nouveau fichier de configuration ApacheDS 1.5.5
+NonExistingServerConfigurationInput.NewApacheDS156Configuration=Nouveau fichier de configuration ApacheDS 1.5.6
 NonExistingServerConfigurationInput.NewApacheDSConfiguration=Nouveau fichier de configuration ApacheDS
 ServerConfigurationEditor.AnErrorOccurredWhenWritingTheFileToDisk=Une erreur est survenue lors de l'\u00E9criture du fichier sur le disque.
 ServerConfigurationEditor.Error=Erreur \!

Added: directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v156/AuthenticationPage.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v156/AuthenticationPage.java?rev=926643&view=auto
==============================================================================
--- directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v156/AuthenticationPage.java (added)
+++ directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v156/AuthenticationPage.java Tue Mar 23 16:15:26 2010
@@ -0,0 +1,545 @@
+/*
+ *  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.apacheds.configuration.editor.v156;
+
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.directory.studio.apacheds.configuration.ApacheDSConfigurationPluginConstants;
+import org.apache.directory.studio.apacheds.configuration.editor.SaveableFormPage;
+import org.apache.directory.studio.apacheds.configuration.editor.ServerConfigurationEditor;
+import org.apache.directory.studio.apacheds.configuration.editor.v156.dialogs.NtlmProviderDialog;
+import org.apache.directory.studio.apacheds.configuration.editor.v156.dialogs.SaslRealmDialog;
+import org.apache.directory.studio.apacheds.configuration.model.v156.ServerConfigurationV156;
+import org.apache.directory.studio.apacheds.configuration.model.v156.SupportedMechanismEnum;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.CheckStateChangedEvent;
+import org.eclipse.jface.viewers.CheckboxTableViewer;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.ICheckStateListener;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+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.Table;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.PlatformUI;
+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;
+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 Authentication Page of the Server Configuration Editor.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class AuthenticationPage extends FormPage implements SaveableFormPage
+{
+    /** The Page ID */
+    public static final String ID = ServerConfigurationEditor.ID + ".V156.AuthenticationPage"; //$NON-NLS-1$
+
+    /** The Page Title */
+    private static final String TITLE = Messages.getString( "AuthenticationPage.Authentication" ); //$NON-NLS-1$
+
+    private List<String> saslRealms;
+
+    // UI Fields
+    private CheckboxTableViewer supportedMechanismsTableViewer;
+    private Button selectAllSupportedMechanismsButton;
+    private Button deselectAllSupportedMechanismsButton;
+    private Button editSupportedMechanismButton;
+    private Text saslHostText;
+    private Text saslPrincipalText;
+    private Text searchBaseDnText;
+    private CheckboxTableViewer saslRealmsTableViewer;
+    private Button addSaslRealmButton;
+    private Button editSaslRealmsButton;
+    private Button deleteSaslRealmButton;
+
+
+    /**
+     * Creates a new instance of AuthenticationPage.
+     *
+     * @param editor
+     *      the associated editor
+     */
+    public AuthenticationPage( FormEditor editor )
+    {
+        super( editor, ID, TITLE );
+        saslRealms = new ArrayList<String>();
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.forms.editor.FormPage#createFormContent(org.eclipse.ui.forms.IManagedForm)
+     */
+    protected void createFormContent( IManagedForm managedForm )
+    {
+        PlatformUI.getWorkbench().getHelpSystem().setHelp( getPartControl(),
+            ApacheDSConfigurationPluginConstants.PLUGIN_ID + "." + "configuration_editor_156" ); //$NON-NLS-1$ //$NON-NLS-2$
+
+        ScrolledForm form = managedForm.getForm();
+        form.setText( Messages.getString( "AuthenticationPage.Authentication" ) ); //$NON-NLS-1$
+
+        Composite parent = form.getBody();
+        parent.setLayout( new TableWrapLayout() );
+        FormToolkit toolkit = managedForm.getToolkit();
+
+        Composite composite = toolkit.createComposite( parent );
+        composite.setLayout( new GridLayout() );
+        TableWrapData compositeTableWrapData = new TableWrapData( TableWrapData.FILL, TableWrapData.TOP );
+        compositeTableWrapData.grabHorizontal = true;
+        composite.setLayoutData( compositeTableWrapData );
+
+        createSupportedAuthenticationMechanismsSection( composite, toolkit );
+        createSaslSettingsSection( composite, toolkit );
+        createSaslRealmsSection( composite, toolkit );
+
+        initFromInput();
+        addListeners();
+    }
+
+
+    /**
+     * Creates the Supported Authentication Mechanisms Section
+     *
+     * @param parent
+     *      the parent composite
+     * @param toolkit
+     *      the toolkit to use
+     */
+    private void createSupportedAuthenticationMechanismsSection( Composite parent, FormToolkit toolkit )
+    {
+        // Creation of the section
+        Section section = toolkit.createSection( parent, Section.TITLE_BAR );
+        section.setText( Messages.getString( "AuthenticationPage.SupportedAuthenticationMechanisms" ) ); //$NON-NLS-1$
+        section.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+        Composite client = toolkit.createComposite( section );
+        toolkit.paintBordersFor( client );
+        GridLayout glayout = new GridLayout( 2, false );
+        client.setLayout( glayout );
+        section.setClient( client );
+
+        // Supported Authentication Mechanisms Table
+        Table supportedMechanismsTable = toolkit.createTable( client, SWT.CHECK );
+        GridData gd = new GridData( SWT.FILL, SWT.NONE, true, false, 1, 3 );
+        gd.heightHint = 110;
+        supportedMechanismsTable.setLayoutData( gd );
+        supportedMechanismsTableViewer = new CheckboxTableViewer( supportedMechanismsTable );
+        supportedMechanismsTableViewer.setContentProvider( new ArrayContentProvider() );
+        supportedMechanismsTableViewer.setInput( new SupportedMechanismEnum[]
+            { SupportedMechanismEnum.SIMPLE, SupportedMechanismEnum.CRAM_MD5, SupportedMechanismEnum.DIGEST_MD5,
+                SupportedMechanismEnum.GSSAPI, SupportedMechanismEnum.NTLM, SupportedMechanismEnum.GSS_SPNEGO } );
+
+        // Edit Button
+        editSupportedMechanismButton = toolkit.createButton( client,
+            Messages.getString( "AuthenticationPage.Edit" ), SWT.PUSH ); //$NON-NLS-1$
+        editSupportedMechanismButton.setLayoutData( new GridData( SWT.FILL, SWT.BEGINNING, false, false ) );
+        editSupportedMechanismButton.setEnabled( false );
+
+        // Select All Button
+        selectAllSupportedMechanismsButton = toolkit.createButton( client, Messages
+            .getString( "AuthenticationPage.SelectAll" ), SWT.PUSH ); //$NON-NLS-1$
+        selectAllSupportedMechanismsButton.setLayoutData( new GridData( SWT.FILL, SWT.BEGINNING, false, false ) );
+
+        // Deselect All Button
+        deselectAllSupportedMechanismsButton = toolkit.createButton( client, Messages
+            .getString( "AuthenticationPage.DeselectAll" ), SWT.PUSH ); //$NON-NLS-1$
+        deselectAllSupportedMechanismsButton.setLayoutData( new GridData( SWT.FILL, SWT.BEGINNING, false, false ) );
+    }
+
+
+    /**
+     * Creates the SASL Settings Section
+     *
+     * @param parent
+     *      the parent composite
+     * @param toolkit
+     *      the toolkit to use
+     */
+    private void createSaslSettingsSection( Composite parent, FormToolkit toolkit )
+    {
+        // Creation of the section
+        Section section = toolkit.createSection( parent, Section.TITLE_BAR );
+        section.setText( Messages.getString( "AuthenticationPage.SaslSettings" ) ); //$NON-NLS-1$
+        section.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+        Composite client = toolkit.createComposite( section );
+        toolkit.paintBordersFor( client );
+        GridLayout glayout = new GridLayout( 2, false );
+        client.setLayout( glayout );
+        section.setClient( client );
+
+        // SASL Host
+        toolkit.createLabel( client, Messages.getString( "AuthenticationPage.SaslHost" ) ); //$NON-NLS-1$
+        saslHostText = toolkit.createText( client, "" ); //$NON-NLS-1$
+        saslHostText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+
+        // SASL Principal
+        toolkit.createLabel( client, Messages.getString( "AuthenticationPage.SaslPrincipal" ) ); //$NON-NLS-1$
+        saslPrincipalText = toolkit.createText( client, "" ); //$NON-NLS-1$
+        saslPrincipalText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+
+        // Search Base DN
+        toolkit.createLabel( client, Messages.getString( "AuthenticationPage.SearchBaseDN" ) ); //$NON-NLS-1$
+        searchBaseDnText = toolkit.createText( client, "" ); //$NON-NLS-1$
+        searchBaseDnText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+    }
+
+
+    /**
+     * Creates the SASL Realms Section
+     *
+     * @param parent
+     *      the parent composite
+     * @param toolkit
+     *      the toolkit to use
+     */
+    private void createSaslRealmsSection( Composite parent, FormToolkit toolkit )
+    {
+        // Creation of the section
+        Section section = toolkit.createSection( parent, Section.TITLE_BAR );
+        section.setText( Messages.getString( "AuthenticationPage.SaslRealms" ) ); //$NON-NLS-1$
+        section.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+        Composite client = toolkit.createComposite( section );
+        toolkit.paintBordersFor( client );
+        GridLayout glayout = new GridLayout( 2, false );
+        client.setLayout( glayout );
+        section.setClient( client );
+
+        // SASL Realms Table
+        Table saslRealmsTable = toolkit.createTable( client, SWT.NONE );
+        GridData gd = new GridData( SWT.FILL, SWT.NONE, true, false, 1, 3 );
+        gd.heightHint = 82;
+        saslRealmsTable.setLayoutData( gd );
+        saslRealmsTableViewer = new CheckboxTableViewer( saslRealmsTable );
+        saslRealmsTableViewer.setContentProvider( new ArrayContentProvider() );
+
+        // Add Button
+        addSaslRealmButton = toolkit.createButton( client, Messages.getString( "AuthenticationPage.Add" ), SWT.PUSH ); //$NON-NLS-1$
+        addSaslRealmButton.setLayoutData( new GridData( SWT.FILL, SWT.BEGINNING, false, false ) );
+
+        // Edit Button
+        editSaslRealmsButton = toolkit.createButton( client, Messages.getString( "AuthenticationPage.Edit" ), SWT.PUSH ); //$NON-NLS-1$
+        editSaslRealmsButton.setLayoutData( new GridData( SWT.FILL, SWT.BEGINNING, false, false ) );
+        editSaslRealmsButton.setEnabled( false );
+
+        // Delete Button
+        deleteSaslRealmButton = toolkit.createButton( client,
+            Messages.getString( "AuthenticationPage.Delete" ), SWT.PUSH ); //$NON-NLS-1$
+        deleteSaslRealmButton.setLayoutData( new GridData( SWT.FILL, SWT.BEGINNING, false, false ) );
+        deleteSaslRealmButton.setEnabled( false );
+    }
+
+
+    /**
+     * Initializes the page with the Editor input.
+     */
+    private void initFromInput()
+    {
+        ServerConfigurationV156 configuration = ( ServerConfigurationV156 ) ( ( ServerConfigurationEditor ) getEditor() )
+            .getServerConfiguration();
+
+        // Supported Authentication Mechanisms
+        supportedMechanismsTableViewer.setCheckedElements( configuration.getSupportedMechanisms().toArray() );
+
+        // SASL Host
+        saslHostText.setText( configuration.getSaslHost() );
+
+        // SASL Principal
+        saslPrincipalText.setText( configuration.getSaslPrincipal() );
+
+        // Search Base DN
+        searchBaseDnText.setText( configuration.getSearchBaseDn() );
+
+        // SASL Realms
+        saslRealms.addAll( configuration.getSaslRealms() );
+        saslRealmsTableViewer.setInput( saslRealms );
+    }
+
+
+    /**
+     * Add listeners to UI fields.
+     */
+    private void addListeners()
+    {
+        //  The Modify Listener
+        ModifyListener modifyListener = new ModifyListener()
+        {
+            public void modifyText( ModifyEvent e )
+            {
+                setEditorDirty();
+            }
+        };
+
+        // Supported Authentication Mechanisms
+        supportedMechanismsTableViewer.addSelectionChangedListener( new ISelectionChangedListener()
+        {
+            public void selectionChanged( SelectionChangedEvent event )
+            {
+                StructuredSelection selection = ( StructuredSelection ) supportedMechanismsTableViewer.getSelection();
+                if ( !selection.isEmpty() )
+                {
+                    SupportedMechanismEnum selected = ( SupportedMechanismEnum ) selection.getFirstElement();
+                    editSupportedMechanismButton
+                        .setEnabled( ( SupportedMechanismEnum.NTLM.equals( selected ) || SupportedMechanismEnum.GSS_SPNEGO
+                            .equals( selected ) ) );
+                }
+                else
+                {
+                    editSupportedMechanismButton.setEnabled( false );
+                }
+            }
+        } );
+        supportedMechanismsTableViewer.addDoubleClickListener( new IDoubleClickListener()
+        {
+            public void doubleClick( DoubleClickEvent event )
+            {
+                editSelectedSupportedMechanism();
+            }
+        } );
+        editSupportedMechanismButton.addSelectionListener( new SelectionAdapter()
+        {
+            public void widgetSelected( SelectionEvent e )
+            {
+                editSelectedSupportedMechanism();
+            }
+        } );
+        selectAllSupportedMechanismsButton.addSelectionListener( new SelectionAdapter()
+        {
+            public void widgetSelected( SelectionEvent e )
+            {
+                supportedMechanismsTableViewer.setAllChecked( true );
+                setEditorDirty();
+            }
+        } );
+        deselectAllSupportedMechanismsButton.addSelectionListener( new SelectionAdapter()
+        {
+            public void widgetSelected( SelectionEvent e )
+            {
+                supportedMechanismsTableViewer.setAllChecked( false );
+                setEditorDirty();
+            }
+        } );
+        supportedMechanismsTableViewer.addCheckStateListener( new ICheckStateListener()
+        {
+            public void checkStateChanged( CheckStateChangedEvent event )
+            {
+                setEditorDirty();
+            }
+        } );
+
+        // SASL Host
+        saslHostText.addModifyListener( modifyListener );
+
+        // SASL Principal
+        saslPrincipalText.addModifyListener( modifyListener );
+
+        // Search Base DN
+        searchBaseDnText.addModifyListener( modifyListener );
+
+        // SASL Realms
+        saslRealmsTableViewer.addSelectionChangedListener( new ISelectionChangedListener()
+        {
+            public void selectionChanged( SelectionChangedEvent event )
+            {
+                editSaslRealmsButton.setEnabled( !event.getSelection().isEmpty() );
+                deleteSaslRealmButton.setEnabled( !event.getSelection().isEmpty() );
+            }
+        } );
+        saslRealmsTableViewer.addDoubleClickListener( new IDoubleClickListener()
+        {
+            public void doubleClick( DoubleClickEvent event )
+            {
+                editSelectedSaslRealm();
+            }
+        } );
+        addSaslRealmButton.addSelectionListener( new SelectionAdapter()
+        {
+            public void widgetSelected( SelectionEvent e )
+            {
+                SaslRealmDialog dialog = new SaslRealmDialog( "" ); //$NON-NLS-1$
+                if ( Dialog.OK == dialog.open() && dialog.isDirty() )
+                {
+                    String newSaslRealm = dialog.getSaslRealm();
+                    if ( newSaslRealm != null && !"".equals( newSaslRealm ) && !saslRealms.contains( newSaslRealm ) ) //$NON-NLS-1$
+                    {
+                        saslRealms.add( newSaslRealm );
+
+                        saslRealmsTableViewer.refresh();
+                        setEditorDirty();
+                    }
+                }
+            }
+        } );
+        editSaslRealmsButton.addSelectionListener( new SelectionAdapter()
+        {
+            public void widgetSelected( SelectionEvent e )
+            {
+                editSelectedSaslRealm();
+            }
+        } );
+
+        // The SelectionListener for the Binary Attributes Delete Button
+        deleteSaslRealmButton.addSelectionListener( new SelectionAdapter()
+        {
+            public void widgetSelected( SelectionEvent e )
+            {
+                StructuredSelection selection = ( StructuredSelection ) saslRealmsTableViewer.getSelection();
+                if ( !selection.isEmpty() )
+                {
+                    String saslRealm = ( String ) selection.getFirstElement();
+                    saslRealms.remove( saslRealm );
+
+                    saslRealmsTableViewer.refresh();
+                    setEditorDirty();
+                }
+            }
+        } );
+    }
+
+
+    /**
+     * Opens a NTLM Provider with the selected Supported Mechanism the Supported Mechanisms Table.
+     */
+    private void editSelectedSupportedMechanism()
+    {
+        StructuredSelection selection = ( StructuredSelection ) supportedMechanismsTableViewer.getSelection();
+        if ( !selection.isEmpty() )
+        {
+            SupportedMechanismEnum selected = ( SupportedMechanismEnum ) selection.getFirstElement();
+
+            if ( SupportedMechanismEnum.NTLM.equals( selected ) || SupportedMechanismEnum.GSS_SPNEGO.equals( selected ) )
+            {
+                String oldNtlmProvider = selected.getNtlmProviderFqcn();
+
+                NtlmProviderDialog dialog = new NtlmProviderDialog( oldNtlmProvider );
+                if ( Dialog.OK == dialog.open() && dialog.isDirty() )
+                {
+                    selected.setNtlmProviderFqcn( dialog.getNtlmProvider() );
+                    supportedMechanismsTableViewer.refresh();
+                    setEditorDirty();
+                }
+            }
+        }
+    }
+
+
+    /**
+     * Opens a SASL Realm Dialog with the selected SASL Realm in the SASL 
+     * Realms Table Viewer.
+     */
+    private void editSelectedSaslRealm()
+    {
+        StructuredSelection selection = ( StructuredSelection ) saslRealmsTableViewer.getSelection();
+        if ( !selection.isEmpty() )
+        {
+            String oldSaslRealm = ( String ) selection.getFirstElement();
+
+            SaslRealmDialog dialog = new SaslRealmDialog( oldSaslRealm );
+            if ( Dialog.OK == dialog.open() && dialog.isDirty() )
+            {
+                saslRealms.remove( oldSaslRealm );
+
+                String newSaslRealm = dialog.getSaslRealm();
+                if ( newSaslRealm != null && !"".equals( newSaslRealm ) && !saslRealms.contains( newSaslRealm ) ) //$NON-NLS-1$
+                {
+                    saslRealms.add( newSaslRealm );
+                }
+
+                saslRealmsTableViewer.refresh();
+                setEditorDirty();
+            }
+        }
+    }
+
+
+    /**
+     * Sets the Editor as dirty.
+     */
+    private void setEditorDirty()
+    {
+        ( ( ServerConfigurationEditor ) getEditor() ).setDirty( true );
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.apache.directory.studio.apacheds.configuration.editor.SavableWizardPage#save()
+     */
+    public void save()
+    {
+        ServerConfigurationV156 configuration = ( ServerConfigurationV156 ) ( ( ServerConfigurationEditor ) getEditor() )
+            .getServerConfiguration();
+
+        // Supported Authentication Mechanisms
+        if ( ( supportedMechanismsTableViewer != null ) && ( supportedMechanismsTableViewer.getTable() != null )
+            && ( !supportedMechanismsTableViewer.getTable().isDisposed() ) )
+        {
+            List<SupportedMechanismEnum> supportedMechanismsList = new ArrayList<SupportedMechanismEnum>();
+            for ( Object supportedMechanism : supportedMechanismsTableViewer.getCheckedElements() )
+            {
+                supportedMechanismsList.add( ( SupportedMechanismEnum ) supportedMechanism );
+            }
+            configuration.setSupportedMechanisms( supportedMechanismsList );
+        }
+
+        // SASL Host
+        if ( ( saslHostText != null ) && ( !saslHostText.isDisposed() ) )
+        {
+            configuration.setSaslHost( saslHostText.getText() );
+        }
+
+        // SASL Principal
+        if ( ( saslPrincipalText != null ) && ( !saslPrincipalText.isDisposed() ) )
+        {
+            configuration.setSaslPrincipal( saslPrincipalText.getText() );
+        }
+
+        // Search Base DN
+        if ( ( searchBaseDnText != null ) && ( !searchBaseDnText.isDisposed() ) )
+        {
+            configuration.setSearchBaseDn( searchBaseDnText.getText() );
+        }
+
+        // SASL Realms
+        if ( ( saslRealmsTableViewer != null ) && ( saslRealmsTableViewer.getTable() != null )
+            && ( !saslRealmsTableViewer.getTable().isDisposed() ) )
+        {
+            configuration.setSaslRealms( saslRealms );
+        }
+    }
+}

Added: directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v156/ExtendedOperationDetailsPage.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v156/ExtendedOperationDetailsPage.java?rev=926643&view=auto
==============================================================================
--- directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v156/ExtendedOperationDetailsPage.java (added)
+++ directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v156/ExtendedOperationDetailsPage.java Tue Mar 23 16:15:26 2010
@@ -0,0 +1,210 @@
+/*
+ *  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.apacheds.configuration.editor.v156;
+
+
+import org.apache.directory.studio.apacheds.configuration.model.v156.ExtendedOperationEnum;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+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.Text;
+import org.eclipse.ui.forms.IDetailsPage;
+import org.eclipse.ui.forms.IFormPart;
+import org.eclipse.ui.forms.IManagedForm;
+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 Details Page of the Server Configuration Editor for the Extended Operation type
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class ExtendedOperationDetailsPage implements IDetailsPage
+{
+    /** The Managed Form */
+    private IManagedForm mform;
+
+    /** The input Interceptor */
+    private ExtendedOperationEnum input;
+
+    /** The dirty flag */
+    private boolean dirty = false;
+
+    // UI fields
+    private Text nameText;
+    private Text descriptionText;
+
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.forms.IDetailsPage#createContents(org.eclipse.swt.widgets.Composite)
+     */
+    public void createContents( Composite parent )
+    {
+        FormToolkit toolkit = mform.getToolkit();
+        TableWrapLayout layout = new TableWrapLayout();
+        layout.topMargin = 5;
+        layout.leftMargin = 5;
+        layout.rightMargin = 2;
+        layout.bottomMargin = 2;
+        parent.setLayout( layout );
+
+        createDetailsSection( parent, toolkit );
+    }
+
+
+    /**
+     * Creates the Details Section
+     *
+     * @param parent
+     *      the parent composite
+     * @param toolkit
+     *      the toolkit to use
+     */
+    private void createDetailsSection( Composite parent, FormToolkit toolkit )
+    {
+        Section section = toolkit.createSection( parent, Section.TITLE_BAR );
+        section.marginWidth = 10;
+        section.setText( "Extended Operation Details" ); //$NON-NLS-1$
+        TableWrapData td = new TableWrapData( TableWrapData.FILL, TableWrapData.TOP );
+        td.grabHorizontal = true;
+        section.setLayoutData( td );
+        Composite client = toolkit.createComposite( section );
+        toolkit.paintBordersFor( client );
+        GridLayout glayout = new GridLayout( 2, false );
+        client.setLayout( glayout );
+        section.setClient( client );
+
+        // Name
+        toolkit.createLabel( client, Messages.getString( "ExtendedOperationDetailsPage.Name" ) ); //$NON-NLS-1$
+        nameText = toolkit.createText( client, "" ); //$NON-NLS-1$
+        nameText.setEditable( false );
+        nameText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+
+        // Description
+        toolkit.createLabel( client, Messages.getString( "ExtendedOperationDetailsPage.Description" ) ); //$NON-NLS-1$
+        descriptionText = toolkit.createText( client, "", SWT.MULTI | SWT.WRAP | SWT.V_SCROLL ); //$NON-NLS-1$
+        descriptionText.setEditable( false );
+        GridData gridData = new GridData( SWT.FILL, SWT.NONE, true, false );
+        gridData.widthHint = 100;
+        gridData.heightHint = 75;
+        descriptionText.setLayoutData( gridData );
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.forms.IPartSelectionListener#selectionChanged(org.eclipse.ui.forms.IFormPart, org.eclipse.jface.viewers.ISelection)
+     */
+    public void selectionChanged( IFormPart part, ISelection selection )
+    {
+        IStructuredSelection ssel = ( IStructuredSelection ) selection;
+        if ( ssel.size() == 1 )
+        {
+            input = ( ExtendedOperationEnum ) ssel.getFirstElement();
+        }
+        else
+        {
+            input = null;
+        }
+        refresh();
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.forms.IFormPart#commit(boolean)
+     */
+    public void commit( boolean onSave )
+    {
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.forms.IFormPart#dispose()
+     */
+    public void dispose()
+    {
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.forms.IFormPart#initialize(org.eclipse.ui.forms.IManagedForm)
+     */
+    public void initialize( IManagedForm form )
+    {
+        this.mform = form;
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.forms.IFormPart#isDirty()
+     */
+    public boolean isDirty()
+    {
+        return dirty;
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.forms.IFormPart#isStale()
+     */
+    public boolean isStale()
+    {
+        return false;
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.forms.IFormPart#refresh()
+     */
+    public void refresh()
+    {
+        // Name
+        String name = input.getName();
+        nameText.setText( ( name == null ) ? "" : name ); //$NON-NLS-1$
+
+        // Description
+        String description = input.getDescription();
+        descriptionText.setText( ( description == null ) ? "" : description ); //$NON-NLS-1$
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.forms.IFormPart#setFocus()
+     */
+    public void setFocus()
+    {
+        nameText.setFocus();
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.forms.IFormPart#setFormInput(java.lang.Object)
+     */
+    public boolean setFormInput( Object input )
+    {
+        return false;
+    }
+}

Added: directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v156/ExtendedOperationsMasterDetailsBlock.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v156/ExtendedOperationsMasterDetailsBlock.java?rev=926643&view=auto
==============================================================================
--- directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v156/ExtendedOperationsMasterDetailsBlock.java (added)
+++ directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v156/ExtendedOperationsMasterDetailsBlock.java Tue Mar 23 16:15:26 2010
@@ -0,0 +1,296 @@
+/*
+ *  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.apacheds.configuration.editor.v156;
+
+
+import java.util.List;
+
+import org.apache.directory.studio.apacheds.configuration.ApacheDSConfigurationPlugin;
+import org.apache.directory.studio.apacheds.configuration.ApacheDSConfigurationPluginConstants;
+import org.apache.directory.studio.apacheds.configuration.editor.ServerConfigurationEditor;
+import org.apache.directory.studio.apacheds.configuration.editor.v156.dialogs.ExtendedOperationDialog;
+import org.apache.directory.studio.apacheds.configuration.model.v156.ExtendedOperationEnum;
+import org.apache.directory.studio.apacheds.configuration.model.v156.ServerConfigurationV156;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Image;
+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.Table;
+import org.eclipse.ui.forms.DetailsPart;
+import org.eclipse.ui.forms.IManagedForm;
+import org.eclipse.ui.forms.MasterDetailsBlock;
+import org.eclipse.ui.forms.SectionPart;
+import org.eclipse.ui.forms.editor.FormPage;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.ScrolledForm;
+import org.eclipse.ui.forms.widgets.Section;
+
+
+/**
+ * This class represents the Extended Operations Master/Details Block used in the Extended Operations Page.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class ExtendedOperationsMasterDetailsBlock extends MasterDetailsBlock
+{
+    /** The associated page */
+    private FormPage page;
+
+    /** The input Server Configuration */
+    private ServerConfigurationV156 serverConfiguration;
+
+    /** The Extended Operations List */
+    private List<ExtendedOperationEnum> extendedOperations;
+
+    /** The Details Page */
+    private ExtendedOperationDetailsPage detailsPage;
+
+    // UI Fields
+    private TableViewer viewer;
+    private Button addButton;
+    private Button deleteButton;
+
+
+    /**
+     * Creates a new instance of ExtendedOperationsMasterDetailsBlock.
+     *
+     * @param page
+     */
+    public ExtendedOperationsMasterDetailsBlock( FormPage page )
+    {
+        this.page = page;
+        serverConfiguration = ( ServerConfigurationV156 ) ( ( ServerConfigurationEditor ) page.getEditor() )
+            .getServerConfiguration();
+        extendedOperations = serverConfiguration.getExtendedOperations();
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.forms.MasterDetailsBlock#createMasterPart(org.eclipse.ui.forms.IManagedForm, org.eclipse.swt.widgets.Composite)
+     */
+    protected void createMasterPart( final IManagedForm managedForm, Composite parent )
+    {
+        FormToolkit toolkit = managedForm.getToolkit();
+
+        // Creating the Section
+        Section section = toolkit.createSection( parent, Section.TITLE_BAR );
+        section.setText( Messages.getString( "ExtendedOperationsMasterDetailsBlock.AllExtendedOperations" ) ); //$NON-NLS-1$
+        section.marginWidth = 10;
+        section.marginHeight = 5;
+        Composite client = toolkit.createComposite( section, SWT.WRAP );
+        GridLayout layout = new GridLayout();
+        layout.numColumns = 2;
+        layout.makeColumnsEqualWidth = false;
+        layout.marginWidth = 2;
+        layout.marginHeight = 2;
+        client.setLayout( layout );
+        toolkit.paintBordersFor( client );
+        section.setClient( client );
+
+        // Creating the Table and Table Viewer
+        Table table = toolkit.createTable( client, SWT.NULL );
+        GridData gd = new GridData( SWT.FILL, SWT.FILL, true, true, 1, 2 );
+        gd.heightHint = 20;
+        gd.widthHint = 100;
+        table.setLayoutData( gd );
+        final SectionPart spart = new SectionPart( section );
+        managedForm.addPart( spart );
+        viewer = new TableViewer( table );
+        viewer.addSelectionChangedListener( new ISelectionChangedListener()
+        {
+            public void selectionChanged( SelectionChangedEvent event )
+            {
+                managedForm.fireSelectionChanged( spart, event.getSelection() );
+            }
+        } );
+        viewer.setContentProvider( new ArrayContentProvider() );
+        viewer.setLabelProvider( new LabelProvider()
+        {
+            public Image getImage( Object element )
+            {
+                return ApacheDSConfigurationPlugin.getDefault().getImage(
+                    ApacheDSConfigurationPluginConstants.IMG_EXTENDED_OPERATION );
+            }
+
+
+            public String getText( Object element )
+            {
+                if ( element instanceof ExtendedOperationEnum )
+                {
+                    return ( ( ExtendedOperationEnum ) element ).getName();
+
+                }
+
+                return super.getText( element );
+            }
+        } );
+
+        // Creating the button(s)
+        addButton = toolkit.createButton( client,
+            Messages.getString( "ExtendedOperationsMasterDetailsBlock.Add" ), SWT.PUSH ); //$NON-NLS-1$
+        addButton.setLayoutData( new GridData( SWT.FILL, SWT.BEGINNING, false, false ) );
+
+        deleteButton = toolkit.createButton( client,
+            Messages.getString( "ExtendedOperationsMasterDetailsBlock.Delete" ), SWT.PUSH ); //$NON-NLS-1$
+        deleteButton.setEnabled( false );
+        deleteButton.setLayoutData( new GridData( SWT.FILL, SWT.BEGINNING, false, false ) );
+
+        initFromInput();
+        addListeners();
+    }
+
+
+    /**
+     * Initializes the page with the Editor input.
+     */
+    private void initFromInput()
+    {
+        viewer.setInput( extendedOperations );
+    }
+
+
+    /**
+     * Add listeners to UI fields.
+     */
+    private void addListeners()
+    {
+        viewer.addSelectionChangedListener( new ISelectionChangedListener()
+        {
+            public void selectionChanged( SelectionChangedEvent event )
+            {
+                viewer.refresh();
+
+                deleteButton.setEnabled( !event.getSelection().isEmpty() );
+            }
+        } );
+
+        addButton.addSelectionListener( new SelectionAdapter()
+        {
+            public void widgetSelected( SelectionEvent e )
+            {
+                ExtendedOperationDialog dialog = new ExtendedOperationDialog( extendedOperations );
+                if ( Dialog.OK == dialog.open() )
+                {
+                    ExtendedOperationEnum newExtendedOperation = dialog.getExtendedOperation();
+                    extendedOperations.add( newExtendedOperation );
+                    viewer.refresh();
+                    viewer.setSelection( new StructuredSelection( newExtendedOperation ) );
+                    setEditorDirty();
+                }
+            }
+        } );
+
+        deleteButton.addSelectionListener( new SelectionAdapter()
+        {
+            public void widgetSelected( SelectionEvent e )
+            {
+                StructuredSelection selection = ( StructuredSelection ) viewer.getSelection();
+                if ( !selection.isEmpty() )
+                {
+                    ExtendedOperationEnum extendedOperation = ( ExtendedOperationEnum ) selection.getFirstElement();
+
+                    extendedOperations.remove( extendedOperation );
+                    viewer.refresh();
+                    setEditorDirty();
+                }
+            }
+        } );
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.forms.MasterDetailsBlock#createToolBarActions(org.eclipse.ui.forms.IManagedForm)
+     */
+    protected void createToolBarActions( IManagedForm managedForm )
+    {
+        final ScrolledForm form = managedForm.getForm();
+
+        // Horizontal layout Action
+        Action horizontalAction = new Action( "Horizontal layout", Action.AS_RADIO_BUTTON ) { //$NON-NLS-1$
+            public void run()
+            {
+                sashForm.setOrientation( SWT.HORIZONTAL );
+                form.reflow( true );
+            }
+        };
+        horizontalAction.setChecked( true );
+        horizontalAction.setToolTipText( "Horizontal Orientation" ); //$NON-NLS-1$
+        horizontalAction.setImageDescriptor( ApacheDSConfigurationPlugin.getDefault().getImageDescriptor(
+            ApacheDSConfigurationPluginConstants.IMG_HORIZONTAL_ORIENTATION ) );
+
+        // Vertical layout Action
+        Action verticalAction = new Action( "Vertical Orientation", Action.AS_RADIO_BUTTON ) { //$NON-NLS-1$
+            public void run()
+            {
+                sashForm.setOrientation( SWT.VERTICAL );
+                form.reflow( true );
+            }
+        };
+        verticalAction.setChecked( false );
+        verticalAction.setToolTipText( "Vertical Orientation" ); //$NON-NLS-1$
+        verticalAction.setImageDescriptor( ApacheDSConfigurationPlugin.getDefault().getImageDescriptor(
+            ApacheDSConfigurationPluginConstants.IMG_VERTICAL_ORIENTATION ) );
+
+        form.getToolBarManager().add( horizontalAction );
+        form.getToolBarManager().add( verticalAction );
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.forms.MasterDetailsBlock#registerPages(org.eclipse.ui.forms.DetailsPart)
+     */
+    protected void registerPages( DetailsPart detailsPart )
+    {
+        detailsPage = new ExtendedOperationDetailsPage();
+        detailsPart.registerPage( ExtendedOperationEnum.class, detailsPage );
+    }
+
+
+    /**
+     * Sets the Editor as dirty.
+     */
+    public void setEditorDirty()
+    {
+        ( ( ServerConfigurationEditor ) page.getEditor() ).setDirty( true );
+    }
+
+
+    /**
+     * Saves the necessary elements to the input model.
+     */
+    public void save()
+    {
+        detailsPage.commit( true );
+        viewer.setInput( extendedOperations );
+    }
+}

Added: directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v156/ExtendedOperationsPage.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v156/ExtendedOperationsPage.java?rev=926643&view=auto
==============================================================================
--- directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v156/ExtendedOperationsPage.java (added)
+++ directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v156/ExtendedOperationsPage.java Tue Mar 23 16:15:26 2010
@@ -0,0 +1,88 @@
+/*
+ *  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.apacheds.configuration.editor.v156;
+
+
+import org.apache.directory.studio.apacheds.configuration.ApacheDSConfigurationPluginConstants;
+import org.apache.directory.studio.apacheds.configuration.editor.SaveableFormPage;
+import org.apache.directory.studio.apacheds.configuration.editor.ServerConfigurationEditor;
+import org.eclipse.ui.PlatformUI;
+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.ScrolledForm;
+
+
+/**
+ * This class represents the Extended Operations Page of the Server Configuration Editor.
+ * 
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class ExtendedOperationsPage extends FormPage implements SaveableFormPage
+{
+    /** The Page ID*/
+    public static final String ID = ServerConfigurationEditor.ID + ".V156.ExtendedOperationsPage"; //$NON-NLS-1$
+
+    /** The Page Title */
+    private static final String TITLE = Messages.getString( "ExtendedOperationsPage.ExtendedOperations" ); //$NON-NLS-1$
+
+    /** The Master/Details Block */
+    private ExtendedOperationsMasterDetailsBlock masterDetailsBlock;
+
+
+    /**
+     * Creates a new instance of ExtendedOperationsPage.
+     *
+     * @param editor
+     *      the associated editor
+     */
+    public ExtendedOperationsPage( FormEditor editor )
+    {
+        super( editor, ID, TITLE );
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.forms.editor.FormPage#createFormContent(org.eclipse.ui.forms.IManagedForm)
+     */
+    protected void createFormContent( IManagedForm managedForm )
+    {
+        PlatformUI.getWorkbench().getHelpSystem().setHelp( getPartControl(),
+            ApacheDSConfigurationPluginConstants.PLUGIN_ID + "." + "configuration_editor_156" ); //$NON-NLS-1$ //$NON-NLS-2$
+
+        final ScrolledForm form = managedForm.getForm();
+        form.setText( Messages.getString( "ExtendedOperationsPage.ExtendedOperations" ) ); //$NON-NLS-1$
+        masterDetailsBlock = new ExtendedOperationsMasterDetailsBlock( this );
+        masterDetailsBlock.createContent( managedForm );
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.apache.directory.studio.apacheds.configuration.editor.SavableWizardPage#save()
+     */
+    public void save()
+    {
+        if ( masterDetailsBlock != null )
+        {
+            masterDetailsBlock.save();
+        }
+    }
+}