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 2008/05/16 18:52:25 UTC

svn commit: r657131 - in /directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration: editor/v152/ editor/v152/dialogs/ model/v152/

Author: pamarcelot
Date: Fri May 16 09:52:24 2008
New Revision: 657131

URL: http://svn.apache.org/viewvc?rev=657131&view=rev
Log:
o Removed old ExtendedOperation class.
o Added ExtendedOperationEnum enum which contains all extended operations.
o Adapted the UI for extended operations.
o Updated parser/writer to read/write extended operations

Added:
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v152/dialogs/ExtendedOperationDialog.java
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/v152/ExtendedOperationEnum.java
Removed:
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/v152/ExtendedOperation.java
Modified:
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v152/ExtendedOperationDetailsPage.java
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v152/ExtendedOperationsMasterDetailsBlock.java
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v152/InterceptorDetailsPage.java
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/v152/ServerConfigurationV152.java
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/v152/ServerXmlIOV152.java

Modified: directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v152/ExtendedOperationDetailsPage.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v152/ExtendedOperationDetailsPage.java?rev=657131&r1=657130&r2=657131&view=diff
==============================================================================
--- directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v152/ExtendedOperationDetailsPage.java (original)
+++ directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v152/ExtendedOperationDetailsPage.java Fri May 16 09:52:24 2008
@@ -20,7 +20,7 @@
 package org.apache.directory.studio.apacheds.configuration.editor.v152;
 
 
-import org.apache.directory.studio.apacheds.configuration.model.v152.ExtendedOperation;
+import org.apache.directory.studio.apacheds.configuration.model.v152.ExtendedOperationEnum;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.swt.SWT;
@@ -54,13 +54,14 @@
     private IManagedForm mform;
 
     /** The input Interceptor */
-    private ExtendedOperation input;
+    private ExtendedOperationEnum input;
 
     /** The dirty flag */
     private boolean dirty = false;
 
     // UI fields
-    private Text classTypeText;
+    private Text nameText;
+    private Text descriptionText;
 
     // Listeners
     /** The Modify Listener for Text Widgets */
@@ -113,43 +114,32 @@
      */
     private void createDetailsSection( Composite parent, FormToolkit toolkit )
     {
-        Section section = toolkit.createSection( parent, Section.DESCRIPTION | Section.TITLE_BAR );
+        Section section = toolkit.createSection( parent, Section.TITLE_BAR );
         section.marginWidth = 10;
         section.setText( "Extended Operation Details" ); //$NON-NLS-1$
-        section.setDescription( "Set the properties of the extended operation." ); //$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( 3, false );
+        GridLayout glayout = new GridLayout( 2, false );
         client.setLayout( glayout );
         section.setClient( client );
 
-        // Class
-        toolkit.createLabel( client, "Class:" );
-        classTypeText = toolkit.createText( client, "" );
-        classTypeText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false, 2, 1 ) );
-
-        addListeners();
-    }
-
-
-    /**
-     * Adds listeners to UI fields.
-     */
-    private void addListeners()
-    {
-        classTypeText.addModifyListener( textModifyListener );
-    }
-
-
-    /**
-     * Removes listeners to UI fields.
-     */
-    private void removeListeners()
-    {
-        classTypeText.removeModifyListener( textModifyListener );
+        // Name
+        toolkit.createLabel( client, "Name:" );
+        nameText = toolkit.createText( client, "" );
+        nameText.setEditable( false );
+        nameText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+
+        // Description
+        toolkit.createLabel( client, "Description:" );
+        descriptionText = toolkit.createText( client, "", SWT.MULTI | SWT.WRAP | SWT.V_SCROLL );
+        descriptionText.setEditable( false );
+        GridData gridData = new GridData( SWT.FILL, SWT.NONE, true, false );
+        gridData.widthHint = 100;
+        gridData.heightHint = 75;
+        descriptionText.setLayoutData( gridData );
     }
 
 
@@ -161,7 +151,7 @@
         IStructuredSelection ssel = ( IStructuredSelection ) selection;
         if ( ssel.size() == 1 )
         {
-            input = ( ExtendedOperation ) ssel.getFirstElement();
+            input = ( ExtendedOperationEnum ) ssel.getFirstElement();
         }
         else
         {
@@ -176,10 +166,6 @@
      */
     public void commit( boolean onSave )
     {
-        if ( input != null )
-        {
-            input.setClassType( classTypeText.getText() );
-        }
     }
 
 
@@ -223,11 +209,13 @@
      */
     public void refresh()
     {
-        removeListeners();
-
-        classTypeText.setText( input.getClassType() );
-
-        addListeners();
+        // Name
+        String name = input.getName();
+        nameText.setText( ( name == null ) ? "" : name );
+
+        // Description
+        String description = input.getDescription();
+        descriptionText.setText( ( description == null ) ? "" : description );
     }
 
 
@@ -236,7 +224,7 @@
      */
     public void setFocus()
     {
-        classTypeText.setFocus();
+        nameText.setFocus();
     }
 
 

Modified: directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v152/ExtendedOperationsMasterDetailsBlock.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v152/ExtendedOperationsMasterDetailsBlock.java?rev=657131&r1=657130&r2=657131&view=diff
==============================================================================
--- directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v152/ExtendedOperationsMasterDetailsBlock.java (original)
+++ directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v152/ExtendedOperationsMasterDetailsBlock.java Fri May 16 09:52:24 2008
@@ -25,15 +25,18 @@
 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.model.v152.ExtendedOperation;
+import org.apache.directory.studio.apacheds.configuration.editor.v152.dialogs.ExtendedOperationDialog;
+import org.apache.directory.studio.apacheds.configuration.model.v152.ExtendedOperationEnum;
 import org.apache.directory.studio.apacheds.configuration.model.v152.ServerConfigurationV152;
 import org.eclipse.jface.action.Action;
+import org.eclipse.jface.dialogs.Dialog;
 import org.eclipse.jface.viewers.ArrayContentProvider;
 import org.eclipse.jface.viewers.CheckboxTableViewer;
 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;
@@ -68,15 +71,13 @@
     private ServerConfigurationV152 serverConfiguration;
 
     /** The Extended Operations List */
-    private List<ExtendedOperation> extendedOperations;
+    private List<ExtendedOperationEnum> extendedOperations;
 
     /** The Details Page */
     private ExtendedOperationDetailsPage detailsPage;
 
-    private static final String NEW_NAME = "newExtendedOperation";
-
     // UI Fields
-    private CheckboxTableViewer viewer;
+    private TableViewer viewer;
     private Button addButton;
     private Button deleteButton;
 
@@ -89,7 +90,8 @@
     public ExtendedOperationsMasterDetailsBlock( FormPage page )
     {
         this.page = page;
-        serverConfiguration = ( ServerConfigurationV152 ) ( ( ServerConfigurationEditor ) page.getEditor() ).getServerConfiguration();
+        serverConfiguration = ( ServerConfigurationV152 ) ( ( ServerConfigurationEditor ) page.getEditor() )
+            .getServerConfiguration();
         extendedOperations = serverConfiguration.getExtendedOperations();
     }
 
@@ -117,14 +119,14 @@
         section.setClient( client );
 
         // Creatig the Table and Table Viewer
-        Table table = toolkit.createTable( client, SWT.CHECK );
+        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 CheckboxTableViewer( table );
+        viewer = new TableViewer( table );
         viewer.addSelectionChangedListener( new ISelectionChangedListener()
         {
             public void selectionChanged( SelectionChangedEvent event )
@@ -183,11 +185,15 @@
         {
             public void widgetSelected( SelectionEvent e )
             {
-                ExtendedOperation newExtendedOperation = new ExtendedOperation( getNewName() );
-                extendedOperations.add( newExtendedOperation );
-                viewer.refresh();
-                viewer.setSelection( new StructuredSelection( newExtendedOperation ) );
-                setEditorDirty();
+                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();
+                }
             }
         } );
 
@@ -198,7 +204,7 @@
                 StructuredSelection selection = ( StructuredSelection ) viewer.getSelection();
                 if ( !selection.isEmpty() )
                 {
-                    ExtendedOperation extendedOperation = ( ExtendedOperation ) selection.getFirstElement();
+                    ExtendedOperationEnum extendedOperation = ( ExtendedOperationEnum ) selection.getFirstElement();
 
                     extendedOperations.remove( extendedOperation );
                     viewer.refresh();
@@ -209,38 +215,6 @@
     }
 
 
-    /**
-     * Gets a new Name for a new Extended Operation.
-     *
-     * @return 
-     *      a new Name for a new Extended Operation
-     */
-    private String getNewName()
-    {
-        int counter = 1;
-        String name = NEW_NAME;
-        boolean ok = false;
-
-        while ( !ok )
-        {
-            ok = true;
-            name = NEW_NAME + counter;
-
-            for ( ExtendedOperation extendedOperation : extendedOperations )
-            {
-                if ( extendedOperation.getClassType().equalsIgnoreCase( name ) )
-                {
-                    ok = false;
-                }
-            }
-
-            counter++;
-        }
-
-        return name;
-    }
-
-
     /* (non-Javadoc)
      * @see org.eclipse.ui.forms.MasterDetailsBlock#createToolBarActions(org.eclipse.ui.forms.IManagedForm)
      */
@@ -285,7 +259,7 @@
     protected void registerPages( DetailsPart detailsPart )
     {
         detailsPage = new ExtendedOperationDetailsPage( this );
-        detailsPart.registerPage( ExtendedOperation.class, detailsPage );
+        detailsPart.registerPage( ExtendedOperationEnum.class, detailsPage );
     }
 
 

Modified: directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v152/InterceptorDetailsPage.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v152/InterceptorDetailsPage.java?rev=657131&r1=657130&r2=657131&view=diff
==============================================================================
--- directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v152/InterceptorDetailsPage.java (original)
+++ directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v152/InterceptorDetailsPage.java Fri May 16 09:52:24 2008
@@ -24,9 +24,6 @@
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;
@@ -64,17 +61,6 @@
     private Text nameText;
     private Text descriptionText;
 
-    // Listeners
-    /** The Modify Listener for Text Widgets */
-    private ModifyListener textModifyListener = new ModifyListener()
-    {
-        public void modifyText( ModifyEvent e )
-        {
-            masterDetailsBlock.setEditorDirty();
-            dirty = true;
-        }
-    };
-
 
     /**
      * Creates a new instance of InterceptorDetailsPage.
@@ -115,10 +101,9 @@
      */
     private void createDetailsSection( Composite parent, FormToolkit toolkit )
     {
-        Section section = toolkit.createSection( parent, Section.DESCRIPTION | Section.TITLE_BAR );
+        Section section = toolkit.createSection( parent, Section.TITLE_BAR );
         section.marginWidth = 10;
         section.setText( "Interceptor Details" ); //$NON-NLS-1$
-        section.setDescription( "Set the properties of the interceptor." ); //$NON-NLS-1$
         TableWrapData td = new TableWrapData( TableWrapData.FILL, TableWrapData.TOP );
         td.grabHorizontal = true;
         section.setLayoutData( td );
@@ -145,22 +130,6 @@
     }
 
 
-    /**
-     * Adds listeners to UI fields.
-     */
-    private void addListeners()
-    {
-    }
-
-
-    /**
-     * Removes listeners to UI fields.
-     */
-    private void removeListeners()
-    {
-    }
-
-
     /* (non-Javadoc)
      * @see org.eclipse.ui.forms.IPartSelectionListener#selectionChanged(org.eclipse.ui.forms.IFormPart, org.eclipse.jface.viewers.ISelection)
      */
@@ -184,10 +153,6 @@
      */
     public void commit( boolean onSave )
     {
-        if ( input != null )
-        {
-            //TODO
-        }
     }
 
 
@@ -231,8 +196,6 @@
      */
     public void refresh()
     {
-        removeListeners();
-
         // Name
         String name = input.getName();
         nameText.setText( ( name == null ) ? "" : name );
@@ -240,8 +203,6 @@
         // Description
         String description = input.getDescription();
         descriptionText.setText( ( description == null ) ? "" : description );
-
-        addListeners();
     }
 
 

Added: directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v152/dialogs/ExtendedOperationDialog.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v152/dialogs/ExtendedOperationDialog.java?rev=657131&view=auto
==============================================================================
--- directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v152/dialogs/ExtendedOperationDialog.java (added)
+++ directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v152/dialogs/ExtendedOperationDialog.java Fri May 16 09:52:24 2008
@@ -0,0 +1,241 @@
+/*
+ *  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.v152.dialogs;
+
+
+import java.util.ArrayList;
+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.model.v152.ExtendedOperationEnum;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IDialogConstants;
+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.MouseAdapter;
+import org.eclipse.swt.events.MouseEvent;
+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.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.ui.PlatformUI;
+
+
+/**
+ * This class implements the Dialog for Extended Operation.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class ExtendedOperationDialog extends Dialog
+{
+    /** The initial extended operations list */
+    private List<ExtendedOperationEnum> initialExtendedOperations;
+
+    /** The available extended operations list */
+    private List<ExtendedOperationEnum> availableExtendedOperations;
+
+    /** The selected extended operation */
+    private ExtendedOperationEnum selectedExtendedOperation;
+
+    // UI Fields
+    private Table extendedOperationsTable;
+    private TableViewer extendedOperationsTableViewer;
+    private Button addButton;
+
+
+    /**
+     * Creates a new instance of ExtendedOperationDialog.
+     */
+    public ExtendedOperationDialog( List<ExtendedOperationEnum> extendedOperations )
+    {
+        super( PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell() );
+        this.initialExtendedOperations = extendedOperations;
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)
+     */
+    protected void configureShell( Shell newShell )
+    {
+        super.configureShell( newShell );
+        newShell.setText( "Add An Extended Operation" );
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
+     */
+    protected Control createDialogArea( Composite parent )
+    {
+        Composite composite = new Composite( parent, SWT.NONE );
+        composite.setLayout( new GridLayout() );
+        composite.setLayoutData( new GridData( GridData.FILL, GridData.FILL, true, true ) );
+
+        // Choose Label
+        Label chooseLabel = new Label( composite, SWT.NONE );
+        chooseLabel.setText( "Choose an extended operation:" );
+        chooseLabel.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+
+        // Interceptors Table Viewer
+        extendedOperationsTable = new Table( composite, SWT.SINGLE | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL
+            | SWT.FULL_SELECTION | SWT.HIDE_SELECTION );
+        GridData gridData = new GridData( SWT.FILL, SWT.FILL, true, true );
+        gridData.heightHint = 148;
+        gridData.minimumHeight = 148;
+        gridData.widthHint = 350;
+        gridData.minimumWidth = 350;
+        extendedOperationsTable.setLayoutData( gridData );
+        extendedOperationsTable.addMouseListener( new MouseAdapter()
+        {
+            public void mouseDoubleClick( MouseEvent e )
+            {
+                if ( extendedOperationsTable.getSelectionIndex() != -1 )
+                {
+                    okPressed();
+                }
+            }
+        } );
+
+        extendedOperationsTableViewer = new TableViewer( extendedOperationsTable );
+        extendedOperationsTableViewer.setContentProvider( new ArrayContentProvider() );
+        extendedOperationsTableViewer.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 );
+            }
+        } );
+        extendedOperationsTableViewer.addSelectionChangedListener( new ISelectionChangedListener()
+        {
+            public void selectionChanged( SelectionChangedEvent event )
+            {
+                StructuredSelection selection = ( StructuredSelection ) extendedOperationsTableViewer.getSelection();
+                if ( selection.isEmpty() )
+                {
+                    if ( ( addButton != null ) && ( !addButton.isDisposed() ) )
+                    {
+                        addButton.setEnabled( false );
+                    }
+                }
+                else
+                {
+                    if ( ( addButton != null ) && ( !addButton.isDisposed() ) )
+                    {
+                        addButton.setEnabled( true );
+                    }
+                }
+            }
+        } );
+
+        initFromInput();
+
+        return composite;
+    }
+
+
+    /**
+     * Initializes the UI from the input.
+     */
+    private void initFromInput()
+    {
+        // Creating the available extended operations list
+        availableExtendedOperations = new ArrayList<ExtendedOperationEnum>();
+        if ( !initialExtendedOperations.contains( ExtendedOperationEnum.START_TLS ) )
+        {
+            availableExtendedOperations.add( ExtendedOperationEnum.START_TLS );
+        }
+        if ( !initialExtendedOperations.contains( ExtendedOperationEnum.GRACEFUL_SHUTDOWN ) )
+        {
+            availableExtendedOperations.add( ExtendedOperationEnum.GRACEFUL_SHUTDOWN );
+        }
+        if ( !initialExtendedOperations.contains( ExtendedOperationEnum.LAUNCH_DIAGNOSTIC_UI ) )
+        {
+            availableExtendedOperations.add( ExtendedOperationEnum.LAUNCH_DIAGNOSTIC_UI );
+        }
+
+        // Setting the input
+        extendedOperationsTableViewer.setInput( availableExtendedOperations );
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.eclipse.jface.dialogs.Dialog#createButtonsForButtonBar(org.eclipse.swt.widgets.Composite)
+     */
+    protected void createButtonsForButtonBar( Composite parent )
+    {
+        addButton = createButton( parent, IDialogConstants.OK_ID, "Add", true ); //$NON-NLS-1$
+        createButton( parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false );
+
+        addButton.setEnabled( false );
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.eclipse.jface.dialogs.Dialog#okPressed()
+     */
+    protected void okPressed()
+    {
+        StructuredSelection selection = ( StructuredSelection ) extendedOperationsTableViewer.getSelection();
+        if ( !selection.isEmpty() )
+        {
+            selectedExtendedOperation = ( ExtendedOperationEnum ) selection.getFirstElement();
+        }
+
+        super.okPressed();
+    }
+
+
+    /**
+     * Gets the extended operation.
+     *
+     * @return
+     *      the extended operation
+     */
+    public ExtendedOperationEnum getExtendedOperation()
+    {
+        return selectedExtendedOperation;
+    }
+}

Added: directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/v152/ExtendedOperationEnum.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/v152/ExtendedOperationEnum.java?rev=657131&view=auto
==============================================================================
--- directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/v152/ExtendedOperationEnum.java (added)
+++ directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/v152/ExtendedOperationEnum.java Fri May 16 09:52:24 2008
@@ -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.apacheds.configuration.model.v152;
+
+
+/**
+ * This enum contains all the extended operations.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public enum ExtendedOperationEnum
+{
+    /** The Start TLS Extended Operation */
+    START_TLS("Start TLS", "Description"),
+
+    /** The Graceful Shutdown Extended Operation */
+    GRACEFUL_SHUTDOWN("Graceful Shutdown", "Description"),
+
+    /** The Launch Diagnostic UI Extended Operation */
+    LAUNCH_DIAGNOSTIC_UI("Launch Diagnostic UI", "Description");
+
+    /** The name */
+    private String name;
+
+    /** The description */
+    private String description;
+
+
+    /**
+     * Creates a new instance of InterceptorEnum.
+     *
+     * @param name
+     *      the name
+     * @param description
+     *      the description
+     */
+    private ExtendedOperationEnum( String name, String description )
+    {
+        this.name = name;
+        this.description = description;
+    }
+
+
+    /**
+     * Gets the name.
+     *
+     * @return
+     *      the name
+     */
+    public String getName()
+    {
+        return name;
+    }
+
+
+    /**
+     * Sets the name.
+     *
+     * @param name
+     *      the name
+     */
+    public void setName( String name )
+    {
+        this.name = name;
+    }
+
+
+    /**
+     * Gets the description.
+     *
+     * @return
+     *      the description
+     */
+    public String getDescription()
+    {
+        return description;
+    }
+
+
+    /**
+     * Sets the description.
+     *
+     * @param description
+     *      the description
+     */
+    public void setDescription( String description )
+    {
+        this.description = description;
+    }
+}

Modified: directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/v152/ServerConfigurationV152.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/v152/ServerConfigurationV152.java?rev=657131&r1=657130&r2=657131&view=diff
==============================================================================
--- directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/v152/ServerConfigurationV152.java (original)
+++ directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/v152/ServerConfigurationV152.java Fri May 16 09:52:24 2008
@@ -136,7 +136,7 @@
     private List<InterceptorEnum> interceptors;
 
     /** The Extended Operations */
-    private List<ExtendedOperation> extendedOperations;
+    private List<ExtendedOperationEnum> extendedOperations;
 
 
     /**
@@ -151,7 +151,7 @@
         saslRealms = new ArrayList<String>();
         partitions = new ArrayList<Partition>();
         interceptors = new ArrayList<InterceptorEnum>();
-        extendedOperations = new ArrayList<ExtendedOperation>();
+        extendedOperations = new ArrayList<ExtendedOperationEnum>();
         binaryAttributes = new ArrayList<String>();
     }
 
@@ -178,7 +178,7 @@
      * @return
      *      true (as per the general contract of the Collection.add method).
      */
-    public boolean addExtendedOperation( ExtendedOperation extendedOperation )
+    public boolean addExtendedOperation( ExtendedOperationEnum extendedOperation )
     {
         return extendedOperations.add( extendedOperation );
     }
@@ -332,7 +332,7 @@
      * @return
      *      the Extended Operations List
      */
-    public List<ExtendedOperation> getExtendedOperations()
+    public List<ExtendedOperationEnum> getExtendedOperations()
     {
         return extendedOperations;
     }
@@ -672,7 +672,7 @@
      * @return
      *      true if this list contained the specified element.
      */
-    public boolean removeExtendedOperation( ExtendedOperation extendedOperation )
+    public boolean removeExtendedOperation( ExtendedOperationEnum extendedOperation )
     {
         return extendedOperations.remove( extendedOperation );
     }
@@ -886,7 +886,7 @@
      * @param extendedOperations
      *      the new value
      */
-    public void setExtendedOperations( List<ExtendedOperation> extendedOperations )
+    public void setExtendedOperations( List<ExtendedOperationEnum> extendedOperations )
     {
         this.extendedOperations = extendedOperations;
     }

Modified: directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/v152/ServerXmlIOV152.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/v152/ServerXmlIOV152.java?rev=657131&r1=657130&r2=657131&view=diff
==============================================================================
--- directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/v152/ServerXmlIOV152.java (original)
+++ directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/v152/ServerXmlIOV152.java Fri May 16 09:52:24 2008
@@ -597,7 +597,7 @@
             // Looping on all interceptor elements
             for ( Iterator<?> i = interceptorsElement.elementIterator(); i.hasNext(); )
             {
-                // Getting the 'jbdmPartition' element
+                // Getting the element
                 Element interceptorElement = ( Element ) i.next();
 
                 // Checking which interceptor it is
@@ -910,7 +910,7 @@
                         // If the 'ipPort' attribute does not exists,
                         // we throw an exception
                         throw new ServerXmlIOException(
-                            "Unable to find the 'ipPort' attribute for the 'ldapsServer' bean." );
+                            "Unable to find the 'ipPort' attribute for the 'ldapServer' bean." );
                     }
                     else
                     {
@@ -924,13 +924,16 @@
                         // If the 'allowAnonymousAccess' attribute does not exists,
                         // we throw an exception
                         throw new ServerXmlIOException(
-                            "Unable to find the 'allowAnonymousAccess' attribute for the 'ldapsServer' bean." );
+                            "Unable to find the 'allowAnonymousAccess' attribute for the 'ldapServer' bean." );
                     }
                     else
                     {
                         serverConfiguration.setAllowAnonymousAccess( parseBoolean( allowAnonymousAccess.getValue() ) );
                     }
 
+                    // Extended operations
+                    readExtendedOperations( ldapServerElement, serverConfiguration );
+
                     return;
                 }
             }
@@ -939,6 +942,46 @@
 
 
     /**
+     * Reads the extended operations.
+     *
+     * @param element
+     *      the element
+     * @param serverConfiguration
+     *      the server configuration
+     */
+    private void readExtendedOperations( Element element, ServerConfigurationV152 serverConfiguration )
+    {
+        // Getting the 'interceptors
+        Element interceptorsElement = element.element( "extendedOperationHandlers" );
+        if ( interceptorsElement != null )
+        {
+            // Looping on all interceptor elements
+            for ( Iterator<?> i = interceptorsElement.elementIterator(); i.hasNext(); )
+            {
+                // Getting the element
+                Element extendedOperationElement = ( Element ) i.next();
+
+                // Checking which extended operation it is
+                String extendedOperationElementName = extendedOperationElement.getName();
+                if ( "startTlsHandler".equalsIgnoreCase( extendedOperationElementName ) )
+                {
+                    serverConfiguration.addExtendedOperation( ExtendedOperationEnum.START_TLS );
+                }
+                if ( "gracefulShutdownHandler".equalsIgnoreCase( extendedOperationElementName ) )
+                {
+                    serverConfiguration.addExtendedOperation( ExtendedOperationEnum.GRACEFUL_SHUTDOWN );
+                }
+                if ( "launchDiagnosticUiHandler".equalsIgnoreCase( extendedOperationElementName ) )
+                {
+                    serverConfiguration.addExtendedOperation( ExtendedOperationEnum.LAUNCH_DIAGNOSTIC_UI );
+                }
+            }
+
+        }
+    }
+
+
+    /**
      * Reads the ApacheDS Bean.
      *
      * @param element
@@ -1580,7 +1623,23 @@
             saslRealmsElement.addElement( new QName( "value", NAMESPACE_SPRINGFRAMEWORK ) ).setText( saslRealm );
         }
 
-        // TODO Add Extended Operations
+        // Adding 'ExtendedOperations' element
+        Element extendedOperationsElement = ldapServerElement.addElement( "extendedOperations" );
+
+        // Adding each extended operation item
+        List<ExtendedOperationEnum> extendedOperations = serverConfiguration.getExtendedOperations();
+        if ( extendedOperations.contains( ExtendedOperationEnum.START_TLS ) )
+        {
+            extendedOperationsElement.addElement( "startTlsHandler" );
+        }
+        if ( extendedOperations.contains( ExtendedOperationEnum.GRACEFUL_SHUTDOWN ) )
+        {
+            extendedOperationsElement.addElement( "gracefulShutDownHandler" );
+        }
+        if ( extendedOperations.contains( ExtendedOperationEnum.LAUNCH_DIAGNOSTIC_UI ) )
+        {
+            extendedOperationsElement.addElement( "launchDiagnosticUiHandler" );
+        }
     }
 
 
@@ -1600,8 +1659,8 @@
         // Id
         apacheDSElement.addAttribute( "id", "apacheDS" );
 
-        // SyncPeriodMillis
-        apacheDSElement.addAttribute( "syncPeriodMillis", "" + serverConfiguration.getSynchronizationPeriod() );
+        // SynchPeriodMillis
+        apacheDSElement.addAttribute( "synchPeriodMillis", "" + serverConfiguration.getSynchronizationPeriod() );
 
         // AllowAnonymousAccess
         apacheDSElement.addAttribute( "allowAnonymousAccess", "" + serverConfiguration.isAllowAnonymousAccess() );