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 2011/10/24 17:28:03 UTC

svn commit: r1188172 - in /directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2: dialogs/ editor/

Author: pamarcelot
Date: Mon Oct 24 15:28:02 2011
New Revision: 1188172

URL: http://svn.apache.org/viewvc?rev=1188172&view=rev
Log:
Added support for modifying the indexes of a partition.
Added a new IndexDialog which is used to edit the properties of an index.

Added:
    directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/dialogs/
    directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/dialogs/IndexDialog.java
    directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/dialogs/Messages.java
    directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/dialogs/messages.properties
    directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/dialogs/messages_de.properties
    directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/dialogs/messages_fr.properties
Modified:
    directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/PartitionDetailsPage.java
    directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/PartitionsMasterDetailsBlock.java

Added: directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/dialogs/IndexDialog.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/dialogs/IndexDialog.java?rev=1188172&view=auto
==============================================================================
--- directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/dialogs/IndexDialog.java (added)
+++ directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/dialogs/IndexDialog.java Mon Oct 24 15:28:02 2011
@@ -0,0 +1,193 @@
+/*
+ *  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.v2.dialogs;
+
+
+import org.apache.directory.server.config.beans.JdbmIndexBean;
+import org.apache.directory.shared.ldap.model.entry.Entry;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.VerifyEvent;
+import org.eclipse.swt.events.VerifyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+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.Text;
+import org.eclipse.ui.PlatformUI;
+
+
+/**
+ * This class implements the Dialog for an Index.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class IndexDialog extends Dialog
+{
+    /** The Indexed Attribute */
+    private JdbmIndexBean<String, Entry> index;
+
+    /** The dirty flag */
+    private boolean dirty = false;
+
+    // UI Fields
+    private Text attributeIdText;
+    private Text cacheSizeText;
+
+
+    /**
+     * Creates a new instance of IndexDialog.
+     */
+    public IndexDialog( JdbmIndexBean<String, Entry> index )
+    {
+        super( PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell() );
+        this.index = index;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    protected void configureShell( Shell newShell )
+    {
+        super.configureShell( newShell );
+        newShell.setText( Messages.getString( "IndexDialog.IndexedAttributeDialog" ) ); //$NON-NLS-1$
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    protected Control createDialogArea( Composite parent )
+    {
+        Composite composite = new Composite( parent, SWT.NONE );
+        GridLayout layout = new GridLayout( 2, false );
+        composite.setLayout( layout );
+        composite.setLayoutData( new GridData( GridData.FILL, GridData.FILL, true, true ) );
+
+        Label attributeIdLabel = new Label( composite, SWT.NONE );
+        attributeIdLabel.setText( Messages.getString( "IndexDialog.AttributeID" ) ); //$NON-NLS-1$
+
+        attributeIdText = new Text( composite, SWT.BORDER );
+        attributeIdText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+
+        Label cacheSizeLabel = new Label( composite, SWT.NONE );
+        cacheSizeLabel.setText( Messages.getString( "IndexDialog.CacheSize" ) ); //$NON-NLS-1$
+
+        cacheSizeText = new Text( composite, SWT.BORDER );
+        cacheSizeText.addVerifyListener( new VerifyListener()
+        {
+            public void verifyText( VerifyEvent e )
+            {
+                if ( !e.text.matches( "[0-9]*" ) ) //$NON-NLS-1$
+                {
+                    e.doit = false;
+                }
+            }
+        } );
+        cacheSizeText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+
+        initFromInput();
+        addListeners();
+
+        return composite;
+    }
+
+
+    /**
+     * Initializes the UI from the input.
+     */
+    private void initFromInput()
+    {
+        String attributeId = index.getIndexAttributeId();
+        attributeIdText.setText( ( attributeId == null ) ? "" : attributeId ); //$NON-NLS-1$
+        cacheSizeText.setText( "" + index.getIndexCacheSize() ); //$NON-NLS-1$
+    }
+
+
+    /**
+     * Adds listeners to the UI Fields.
+     */
+    private void addListeners()
+    {
+        attributeIdText.addModifyListener( new ModifyListener()
+        {
+            public void modifyText( ModifyEvent e )
+            {
+                dirty = true;
+            }
+        } );
+
+        cacheSizeText.addModifyListener( new ModifyListener()
+        {
+            public void modifyText( ModifyEvent e )
+            {
+                dirty = true;
+            }
+        } );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    protected void okPressed()
+    {
+        index.setIndexAttributeId( attributeIdText.getText() );
+        try
+        {
+            index.setIndexCacheSize( Integer.parseInt( cacheSizeText.getText() ) );
+        }
+        catch ( NumberFormatException e )
+        {
+            // Nothing to do, it won't happen
+        }
+
+        super.okPressed();
+    }
+
+
+    /**
+     * Gets the Indexed Attribute.
+     *
+     * @return
+     *      the Indexed Attribute
+     */
+    public JdbmIndexBean<String, Entry> getIndex()
+    {
+        return index;
+    }
+
+
+    /**
+     * Returns the dirty flag of the dialog.
+     *
+     * @return
+     *      the dirty flag of the dialog
+     */
+    public boolean isDirty()
+    {
+        return dirty;
+    }
+}

Added: directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/dialogs/Messages.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/dialogs/Messages.java?rev=1188172&view=auto
==============================================================================
--- directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/dialogs/Messages.java (added)
+++ directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/dialogs/Messages.java Mon Oct 24 15:28:02 2011
@@ -0,0 +1,50 @@
+/*
+ *  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.v2.dialogs;
+
+
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+
+public class Messages
+{
+    private static final String BUNDLE_NAME = "org.apache.directory.studio.apacheds.configuration.v2.dialogs.messages"; //$NON-NLS-1$
+
+    private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle( BUNDLE_NAME );
+
+
+    private Messages()
+    {
+    }
+
+
+    public static String getString( String key )
+    {
+        try
+        {
+            return RESOURCE_BUNDLE.getString( key );
+        }
+        catch ( MissingResourceException e )
+        {
+            return '!' + key + '!';
+        }
+    }
+}

Added: directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/dialogs/messages.properties
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/dialogs/messages.properties?rev=1188172&view=auto
==============================================================================
--- directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/dialogs/messages.properties (added)
+++ directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/dialogs/messages.properties Mon Oct 24 15:28:02 2011
@@ -0,0 +1,20 @@
+#  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.
+
+IndexDialog.AttributeID=Attribute ID:
+IndexDialog.CacheSize=Cache Size:
+IndexDialog.IndexedAttributeDialog=Indexed Attribute Dialog

Added: directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/dialogs/messages_de.properties
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/dialogs/messages_de.properties?rev=1188172&view=auto
==============================================================================
--- directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/dialogs/messages_de.properties (added)
+++ directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/dialogs/messages_de.properties Mon Oct 24 15:28:02 2011
@@ -0,0 +1,20 @@
+#  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.
+
+IndexDialog.AttributeID=Attribut ID:
+IndexDialog.CacheSize=Cachegr\u00F6\u00DFe:
+IndexDialog.IndexedAttributeDialog=Indiziertes Attribut

Added: directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/dialogs/messages_fr.properties
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/dialogs/messages_fr.properties?rev=1188172&view=auto
==============================================================================
--- directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/dialogs/messages_fr.properties (added)
+++ directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/dialogs/messages_fr.properties Mon Oct 24 15:28:02 2011
@@ -0,0 +1,20 @@
+#  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.
+
+IndexDialog.AttributeID=ID de l'attribut:
+IndexDialog.CacheSize=Taille du cache:
+IndexDialog.IndexedAttributeDialog=Dialogue d'attribut index\u00E9

Modified: directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/PartitionDetailsPage.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/PartitionDetailsPage.java?rev=1188172&r1=1188171&r2=1188172&view=diff
==============================================================================
--- directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/PartitionDetailsPage.java (original)
+++ directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/PartitionDetailsPage.java Mon Oct 24 15:28:02 2011
@@ -28,6 +28,8 @@ import org.apache.directory.server.confi
 import org.apache.directory.shared.ldap.model.entry.Entry;
 import org.apache.directory.shared.ldap.model.exception.LdapInvalidDnException;
 import org.apache.directory.shared.ldap.model.name.Dn;
+import org.apache.directory.studio.apacheds.configuration.v2.dialogs.IndexDialog;
+import org.eclipse.jface.dialogs.Dialog;
 import org.eclipse.jface.dialogs.IDialogConstants;
 import org.eclipse.jface.viewers.ArrayContentProvider;
 import org.eclipse.jface.viewers.DoubleClickEvent;
@@ -79,8 +81,8 @@ public class PartitionDetailsPage implem
     /** The input Partition */
     private JdbmPartitionBean input;
 
-    /** The Indexed Attributes List */
-    private List<IndexBean> indexedAttributes;
+    /** The Indexes List */
+    private List<IndexBean> indexesList;
 
     /** The dirty flag */
     private boolean dirty = false;
@@ -91,10 +93,10 @@ public class PartitionDetailsPage implem
     private Text suffixText;
     private Button enableOptimizerCheckbox;
     private Button synchOnWriteCheckbox;
-    private TableViewer indexedAttributesTableViewer;
-    private Button indexedAttributeAddButton;
-    private Button indexedAttributeEditButton;
-    private Button indexedAttributeDeleteButton;
+    private TableViewer indexesTableViewer;
+    private Button indexesAddButton;
+    private Button indexesEditButton;
+    private Button indexesDeleteButton;
 
     // Listeners
     /** The Text Modify Listener */
@@ -104,6 +106,7 @@ public class PartitionDetailsPage implem
         {
             masterDetailsBlock.setEditorDirty();
             dirty = true;
+            commit( true );
         }
     };
 
@@ -114,6 +117,7 @@ public class PartitionDetailsPage implem
         {
             masterDetailsBlock.setEditorDirty();
             dirty = true;
+            commit( true );
         }
     };
 
@@ -122,8 +126,8 @@ public class PartitionDetailsPage implem
     {
         public void selectionChanged( SelectionChangedEvent event )
         {
-            indexedAttributeEditButton.setEnabled( !event.getSelection().isEmpty() );
-            indexedAttributeDeleteButton.setEnabled( !event.getSelection().isEmpty() );
+            indexesEditButton.setEnabled( !event.getSelection().isEmpty() );
+            indexesDeleteButton.setEnabled( !event.getSelection().isEmpty() );
         }
     };
 
@@ -132,7 +136,7 @@ public class PartitionDetailsPage implem
     {
         public void doubleClick( DoubleClickEvent event )
         {
-            //            editSelectedIndexedAttribute();
+            editSelectedIndex();
         }
     };
 
@@ -141,14 +145,7 @@ public class PartitionDetailsPage implem
     {
         public void widgetSelected( SelectionEvent e )
         {
-            //            IndexedAttributeDialog dialog = new IndexedAttributeDialog( new IndexedAttribute( "", 0 ) ); //$NON-NLS-1$
-            //            if ( Dialog.OK == dialog.open() )
-            //            {
-            //                indexedAttributes.add( dialog.getIndexedAttribute() );
-            //                indexedAttributesTableViewer.refresh();
-            //                masterDetailsBlock.setEditorDirty();
-            //                dirty = true;
-            //            }
+            addNewIndex();
         }
     };
 
@@ -157,7 +154,7 @@ public class PartitionDetailsPage implem
     {
         public void widgetSelected( SelectionEvent e )
         {
-            //            editSelectedIndexedAttribute();
+            editSelectedIndex();
         }
     };
 
@@ -166,16 +163,7 @@ public class PartitionDetailsPage implem
     {
         public void widgetSelected( SelectionEvent e )
         {
-            StructuredSelection selection = ( StructuredSelection ) indexedAttributesTableViewer.getSelection();
-            if ( !selection.isEmpty() )
-            {
-                //                IndexedAttribute indexedAttribute = ( IndexedAttribute ) selection.getFirstElement();
-                //
-                //                indexedAttributes.remove( indexedAttribute );
-                //                indexedAttributesTableViewer.refresh();
-                //                masterDetailsBlock.setEditorDirty();
-                //                dirty = true;
-            }
+            deleteSelectedIndex();
         }
     };
 
@@ -206,7 +194,7 @@ public class PartitionDetailsPage implem
         parent.setLayout( layout );
 
         createDetailsSection( parent, toolkit );
-        createIndexedAttributesSection( parent, toolkit );
+        createIndexesSection( parent, toolkit );
     }
 
 
@@ -269,14 +257,14 @@ public class PartitionDetailsPage implem
 
 
     /**
-     * Creates the Indexed Attributes Section
+     * Creates the Indexes Section
      *
      * @param parent
      *      the parent composite
      * @param toolkit
      *      the toolkit to use
      */
-    private void createIndexedAttributesSection( Composite parent, FormToolkit toolkit )
+    private void createIndexesSection( Composite parent, FormToolkit toolkit )
     {
         Section indexedAttributesSection = toolkit.createSection( parent, Section.DESCRIPTION | Section.TITLE_BAR );
         indexedAttributesSection.marginWidth = 10;
@@ -292,9 +280,9 @@ public class PartitionDetailsPage implem
         GridData gd = new GridData( SWT.FILL, SWT.NONE, true, false, 1, 3 );
         gd.heightHint = 80;
         indexedAttributesTable.setLayoutData( gd );
-        indexedAttributesTableViewer = new TableViewer( indexedAttributesTable );
-        indexedAttributesTableViewer.setContentProvider( new ArrayContentProvider() );
-        indexedAttributesTableViewer.setLabelProvider( new LabelProvider()
+        indexesTableViewer = new TableViewer( indexedAttributesTable );
+        indexesTableViewer.setContentProvider( new ArrayContentProvider() );
+        indexesTableViewer.setLabelProvider( new LabelProvider()
         {
             public String getText( Object element )
             {
@@ -313,16 +301,16 @@ public class PartitionDetailsPage implem
         GridData buttonsGD = new GridData( SWT.FILL, SWT.BEGINNING, false, false );
         buttonsGD.widthHint = IDialogConstants.BUTTON_WIDTH;
 
-        indexedAttributeAddButton = toolkit.createButton( indexedAttributesClient, "Add", SWT.PUSH );
-        indexedAttributeAddButton.setLayoutData( buttonsGD );
+        indexesAddButton = toolkit.createButton( indexedAttributesClient, "Add", SWT.PUSH );
+        indexesAddButton.setLayoutData( buttonsGD );
 
-        indexedAttributeEditButton = toolkit.createButton( indexedAttributesClient, "Edit", SWT.PUSH );
-        indexedAttributeEditButton.setEnabled( false );
-        indexedAttributeEditButton.setLayoutData( buttonsGD );
-
-        indexedAttributeDeleteButton = toolkit.createButton( indexedAttributesClient, "Delete", SWT.PUSH );
-        indexedAttributeDeleteButton.setEnabled( false );
-        indexedAttributeDeleteButton.setLayoutData( buttonsGD );
+        indexesEditButton = toolkit.createButton( indexedAttributesClient, "Edit", SWT.PUSH );
+        indexesEditButton.setEnabled( false );
+        indexesEditButton.setLayoutData( buttonsGD );
+
+        indexesDeleteButton = toolkit.createButton( indexedAttributesClient, "Delete", SWT.PUSH );
+        indexesDeleteButton.setEnabled( false );
+        indexesDeleteButton.setLayoutData( buttonsGD );
     }
 
 
@@ -337,11 +325,11 @@ public class PartitionDetailsPage implem
         enableOptimizerCheckbox.addSelectionListener( checkboxSelectionListener );
         synchOnWriteCheckbox.addSelectionListener( checkboxSelectionListener );
 
-        indexedAttributesTableViewer.addSelectionChangedListener( indexedAttributesTableViewerListener );
-        indexedAttributesTableViewer.addDoubleClickListener( indexedAttributesTableViewerDoubleClickListener );
-        indexedAttributeAddButton.addSelectionListener( indexedAttributeAddButtonListener );
-        indexedAttributeEditButton.addSelectionListener( indexedAttributeEditButtonListener );
-        indexedAttributeDeleteButton.addSelectionListener( indexedAttributeDeleteButtonListener );
+        indexesTableViewer.addSelectionChangedListener( indexedAttributesTableViewerListener );
+        indexesTableViewer.addDoubleClickListener( indexedAttributesTableViewerDoubleClickListener );
+        indexesAddButton.addSelectionListener( indexedAttributeAddButtonListener );
+        indexesEditButton.addSelectionListener( indexedAttributeEditButtonListener );
+        indexesDeleteButton.addSelectionListener( indexedAttributeDeleteButtonListener );
     }
 
 
@@ -356,11 +344,11 @@ public class PartitionDetailsPage implem
         enableOptimizerCheckbox.removeSelectionListener( checkboxSelectionListener );
         synchOnWriteCheckbox.removeSelectionListener( checkboxSelectionListener );
 
-        indexedAttributesTableViewer.removeSelectionChangedListener( indexedAttributesTableViewerListener );
-        indexedAttributesTableViewer.removeDoubleClickListener( indexedAttributesTableViewerDoubleClickListener );
-        indexedAttributeAddButton.removeSelectionListener( indexedAttributeAddButtonListener );
-        indexedAttributeEditButton.removeSelectionListener( indexedAttributeEditButtonListener );
-        indexedAttributeDeleteButton.removeSelectionListener( indexedAttributeDeleteButtonListener );
+        indexesTableViewer.removeSelectionChangedListener( indexedAttributesTableViewerListener );
+        indexesTableViewer.removeDoubleClickListener( indexedAttributesTableViewerDoubleClickListener );
+        indexesAddButton.removeSelectionListener( indexedAttributeAddButtonListener );
+        indexesEditButton.removeSelectionListener( indexedAttributeEditButtonListener );
+        indexesDeleteButton.removeSelectionListener( indexedAttributeDeleteButtonListener );
     }
 
 
@@ -466,15 +454,15 @@ public class PartitionDetailsPage implem
         synchOnWriteCheckbox.setSelection( input.isPartitionSyncOnWrite() );
 
         // Indexed Attributes
-        indexedAttributes = input.getIndexes();
-        indexedAttributesTableViewer.setInput( indexedAttributes );
+        indexesList = input.getIndexes();
+        indexesTableViewer.setInput( indexesList );
 
         addListeners();
     }
 
 
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.forms.IFormPart#setFocus()
+    /**
+     * {@inheritDoc}
      */
     public void setFocus()
     {
@@ -482,11 +470,71 @@ public class PartitionDetailsPage implem
     }
 
 
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.forms.IFormPart#setFormInput(java.lang.Object)
+    /**
+     * {@inheritDoc}
      */
     public boolean setFormInput( Object input )
     {
         return false;
     }
+
+
+    /**
+     * Opens an indexed dialog with the selected index in the indexes table viewer.
+     */
+    private void editSelectedIndex()
+    {
+        StructuredSelection selection = ( StructuredSelection ) indexesTableViewer.getSelection();
+        if ( !selection.isEmpty() )
+        {
+            JdbmIndexBean<String, Entry> index = ( JdbmIndexBean<String, Entry> ) selection.getFirstElement();
+
+            IndexDialog dialog = new IndexDialog( index );
+            if ( Dialog.OK == dialog.open() && dialog.isDirty() )
+            {
+                indexesTableViewer.refresh();
+                masterDetailsBlock.setEditorDirty();
+                dirty = true;
+            }
+        }
+    }
+
+
+    /**
+     * Adds a new index and opens the index dialog.
+     */
+    private void addNewIndex()
+    {
+        JdbmIndexBean<String, Entry> newIndex = new JdbmIndexBean<String, Entry>();
+        newIndex.setIndexAttributeId( "" ); //$NON-NLS-1$
+        newIndex.setIndexCacheSize( 1000 );
+
+        IndexDialog dialog = new IndexDialog( newIndex );
+        if ( Dialog.OK == dialog.open() )
+        {
+            indexesList.add( dialog.getIndex() );
+            indexesTableViewer.refresh();
+            indexesTableViewer.setSelection( new StructuredSelection( dialog.getIndex() ) );
+            masterDetailsBlock.setEditorDirty();
+            dirty = true;
+        }
+    }
+
+
+    /**
+     * Deletes the selected index in the indexes table viewer
+     */
+    private void deleteSelectedIndex()
+    {
+        StructuredSelection selection = ( StructuredSelection ) indexesTableViewer.getSelection();
+        if ( !selection.isEmpty() )
+        {
+            JdbmIndexBean<String, Entry> selectedIndex = ( JdbmIndexBean<String, Entry> ) selection.getFirstElement();
+
+            indexesList.remove( selectedIndex );
+            indexesTableViewer.refresh();
+            masterDetailsBlock.setEditorDirty();
+            dirty = true;
+        }
+    }
 }

Modified: directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/PartitionsMasterDetailsBlock.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/PartitionsMasterDetailsBlock.java?rev=1188172&r1=1188171&r2=1188172&view=diff
==============================================================================
--- directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/PartitionsMasterDetailsBlock.java (original)
+++ directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/PartitionsMasterDetailsBlock.java Mon Oct 24 15:28:02 2011
@@ -228,7 +228,6 @@ public class PartitionsMasterDetailsBloc
                     if ( !PartitionsPage.isSystemPartition( partition ) )
                     {
                         page.getConfigBean().getDirectoryServiceBean().getPartitions().remove( partition );
-                        viewer.refresh();
                         setEditorDirty();
                     }
                 }
@@ -309,6 +308,7 @@ public class PartitionsMasterDetailsBloc
     public void setEditorDirty()
     {
         ( ( ServerConfigurationEditor ) page.getEditor() ).setDirty( true );
+        viewer.refresh();
     }
 
 
@@ -318,6 +318,5 @@ public class PartitionsMasterDetailsBloc
     public void save()
     {
         detailsPage.commit( true );
-        //        viewer.setInput( partitions );
     }
 }