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 2007/04/12 19:24:36 UTC
svn commit: r528050 - in
/directory/ldapstudio/trunk/ldapstudio-apacheds-configuration: ./ icons/
src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/
src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/dialogs/
src/ma...
Author: pamarcelot
Date: Thu Apr 12 10:24:34 2007
New Revision: 528050
URL: http://svn.apache.org/viewvc?view=rev&rev=528050
Log:
Attached the UI to the Model.
Added listeners on every UI fields that trigger the dirty state of the editor.
Added icons for Partition, Interceptor and Extended Operation.
Added:
directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/icons/extended_operation.gif (with props)
directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/icons/interceptor.gif (with props)
directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/icons/partition.gif (with props)
directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/dialogs/
directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/dialogs/IndexedAttributeDialog.java
Modified:
directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/plugin.xml
directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/PluginConstants.java
directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/ExtendedOperationDetailsPage.java
directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/ExtendedOperationsMasterDetailsBlock.java
directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/ExtendedOperationsPage.java
directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/GeneralPage.java
directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/InterceptorDetailsPage.java
directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/InterceptorsMasterDetailsBlock.java
directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/InterceptorsPage.java
directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/PartitionDetailsPage.java
directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/PartitionsMasterDetailsBlock.java
directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/PartitionsPage.java
directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/ServerConfigurationEditor.java
directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/ServerConfigurationEditorInput.java
directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/model/IndexedAttribute.java
directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/model/Interceptor.java
Added: directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/icons/extended_operation.gif
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/icons/extended_operation.gif?view=auto&rev=528050
==============================================================================
Binary file - no diff available.
Propchange: directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/icons/extended_operation.gif
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/icons/interceptor.gif
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/icons/interceptor.gif?view=auto&rev=528050
==============================================================================
Binary file - no diff available.
Propchange: directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/icons/interceptor.gif
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/icons/partition.gif
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/icons/partition.gif?view=auto&rev=528050
==============================================================================
Binary file - no diff available.
Propchange: directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/icons/partition.gif
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Modified: directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/plugin.xml
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/plugin.xml?view=diff&rev=528050&r1=528049&r2=528050
==============================================================================
--- directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/plugin.xml (original)
+++ directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/plugin.xml Thu Apr 12 10:24:34 2007
@@ -43,6 +43,7 @@
default="true"
icon="icons/editor.gif"
id="org.apache.directory.ldapstudio.apacheds.configuration.editor"
- name="Server Configuration Editor"/>
+ name="Server Configuration Editor">
+ </editor>
</extension>
</plugin>
Modified: directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/PluginConstants.java
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/PluginConstants.java?view=diff&rev=528050&r1=528049&r2=528050
==============================================================================
--- directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/PluginConstants.java (original)
+++ directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/PluginConstants.java Thu Apr 12 10:24:34 2007
@@ -29,4 +29,7 @@
{
public static final String IMG_VERTICAL_ORIENTATION = "icons/vertical_orientation.gif";
public static final String IMG_HORIZONTAL_ORIENTATION = "icons/horizontal_orientation.gif";
+ public static final String IMG_PARTITION = "icons/partition.gif";
+ public static final String IMG_INTERCEPTOR= "icons/interceptor.gif";
+ public static final String IMG_EXTENDED_OPERATION = "icons/extended_operation.gif";
}
Added: directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/dialogs/IndexedAttributeDialog.java
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/dialogs/IndexedAttributeDialog.java?view=auto&rev=528050
==============================================================================
--- directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/dialogs/IndexedAttributeDialog.java (added)
+++ directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/dialogs/IndexedAttributeDialog.java Thu Apr 12 10:24:34 2007
@@ -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.ldapstudio.apacheds.configuration.dialogs;
+
+
+import org.apache.directory.ldapstudio.apacheds.configuration.model.IndexedAttribute;
+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 Indexed Attribute.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class IndexedAttributeDialog extends Dialog
+{
+ /** The Indexed Attribute */
+ private IndexedAttribute indexedAttribute;
+
+ /** The dirty flag */
+ private boolean dirty = false;
+
+ // UI Fields
+ private Text attributeIdText;
+ private Text cacheSizeText;
+
+
+ /**
+ * Creates a new instance of IndexedAttributeDialog.
+ */
+ public IndexedAttributeDialog( IndexedAttribute indexedAttribute )
+ {
+ super( PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell() );
+ this.indexedAttribute = indexedAttribute;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)
+ */
+ protected void configureShell( Shell newShell )
+ {
+ super.configureShell( newShell );
+ newShell.setText( "Indexed Attribute" );
+ }
+
+
+ /* (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 );
+ 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( "Attribute ID:" );
+
+ 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( "Cache Size:" );
+
+ 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 = indexedAttribute.getAttributeId();
+ attributeIdText.setText( ( attributeId == null ) ? "" : attributeId );
+ cacheSizeText.setText( "" + indexedAttribute.getCacheSize() );
+ }
+
+
+ /**
+ * 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;
+ }
+ } );
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.dialogs.Dialog#okPressed()
+ */
+ protected void okPressed()
+ {
+ indexedAttribute.setAttributeId( attributeIdText.getText() );
+ try
+ {
+ indexedAttribute.setCacheSize( 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 IndexedAttribute getIndexedAttribute()
+ {
+ return indexedAttribute;
+ }
+
+
+ /**
+ * Returns the dirty flag of the dialog.
+ *
+ * @return
+ * the dirty flag of the dialog
+ */
+ public boolean isDirty()
+ {
+ return dirty;
+ }
+}
Modified: directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/ExtendedOperationDetailsPage.java
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/ExtendedOperationDetailsPage.java?view=diff&rev=528050&r1=528049&r2=528050
==============================================================================
--- directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/ExtendedOperationDetailsPage.java (original)
+++ directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/ExtendedOperationDetailsPage.java Thu Apr 12 10:24:34 2007
@@ -24,6 +24,8 @@
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.swt.SWT;
+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;
@@ -45,6 +47,9 @@
*/
public class ExtendedOperationDetailsPage implements IDetailsPage
{
+ /** The associated Master Details Block */
+ private ExtendedOperationsMasterDetailsBlock masterDetailsBlock;
+
/** The Managed Form */
private IManagedForm mform;
@@ -54,6 +59,28 @@
// UI fields
private Text classTypeText;
+ // Listeners
+ /** The Modify Listener for Text Widgets */
+ private ModifyListener textModifyListener = new ModifyListener()
+ {
+ public void modifyText( ModifyEvent e )
+ {
+ masterDetailsBlock.setEditorDirty();
+ }
+ };
+
+
+ /**
+ * Creates a new instance of ExtendedOperationDetailsPage.
+ *
+ * @param emdb
+ * the associated Master Details Block
+ */
+ public ExtendedOperationDetailsPage( ExtendedOperationsMasterDetailsBlock emdb )
+ {
+ masterDetailsBlock = emdb;
+ }
+
/* (non-Javadoc)
* @see org.eclipse.ui.forms.IDetailsPage#createContents(org.eclipse.swt.widgets.Composite)
@@ -99,6 +126,26 @@
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 );
}
@@ -173,7 +220,11 @@
*/
public void refresh()
{
+ removeListeners();
+
classTypeText.setText( input.getClassType() );
+
+ addListeners();
}
Modified: directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/ExtendedOperationsMasterDetailsBlock.java
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/ExtendedOperationsMasterDetailsBlock.java?view=diff&rev=528050&r1=528049&r2=528050
==============================================================================
--- directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/ExtendedOperationsMasterDetailsBlock.java (original)
+++ directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/ExtendedOperationsMasterDetailsBlock.java Thu Apr 12 10:24:34 2007
@@ -20,6 +20,8 @@
package org.apache.directory.ldapstudio.apacheds.configuration.editor;
+import java.util.List;
+
import org.apache.directory.ldapstudio.apacheds.configuration.Activator;
import org.apache.directory.ldapstudio.apacheds.configuration.PluginConstants;
import org.apache.directory.ldapstudio.apacheds.configuration.model.ExtendedOperation;
@@ -28,8 +30,12 @@
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;
@@ -43,6 +49,7 @@
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.plugin.AbstractUIPlugin;
/**
@@ -55,7 +62,15 @@
{
/** The associated page */
private FormPage page;
-
+
+ /** The editor input */
+ private ServerConfigurationEditorInput input;
+
+ /** The Extended Operations List */
+ private List<ExtendedOperation> extendedOperations;
+
+ private static final String NEW_NAME = "newExtendedOperation";
+
// UI Fields
private TableViewer viewer;
private Button addButton;
@@ -70,6 +85,8 @@
public ExtendedOperationsMasterDetailsBlock( FormPage page )
{
this.page = page;
+ input = ( ServerConfigurationEditorInput ) page.getEditorInput();
+ extendedOperations = input.getServerConfiguration().getExtendedOperations();
}
@@ -112,21 +129,111 @@
}
} );
viewer.setContentProvider( new ArrayContentProvider() );
- viewer.setLabelProvider( new LabelProvider() );
- viewer
- .setInput( new Object[]
- {
- new ExtendedOperation( "org.apache.directory.server.ldap.support.extended.GracefulShutdownHandler" ),
- new ExtendedOperation(
- "org.apache.directory.server.ldap.support.extended.LaunchDiagnosticUiHandler" ) } );
+ viewer.setLabelProvider( new LabelProvider()
+ {
+ public Image getImage( Object element )
+ {
+ return AbstractUIPlugin.imageDescriptorFromPlugin( Activator.PLUGIN_ID,
+ PluginConstants.IMG_EXTENDED_OPERATION ).createImage();
+ }
+ } );
// Creating the button(s)
addButton = toolkit.createButton( client, "Add...", SWT.PUSH ); //$NON-NLS-1$
- gd = new GridData( GridData.VERTICAL_ALIGN_BEGINNING );
- addButton.setLayoutData( gd );
+ addButton.setLayoutData( new GridData( SWT.FILL, SWT.BEGINNING, false, false ) );
deleteButton = toolkit.createButton( client, "Delete", SWT.PUSH );
- deleteButton.setLayoutData( gd );
+ 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 )
+ {
+ ExtendedOperation newExtendedOperation = new ExtendedOperation( getNewName() );
+ 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() )
+ {
+ ExtendedOperation extendedOperation = ( ExtendedOperation ) selection.getFirstElement();
+
+ extendedOperations.remove( extendedOperation );
+ viewer.refresh();
+ setEditorDirty();
+ }
+ }
+ } );
+ }
+
+
+ /**
+ * 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;
}
@@ -173,7 +280,15 @@
*/
protected void registerPages( DetailsPart detailsPart )
{
- detailsPart.registerPage( ExtendedOperation.class, new ExtendedOperationDetailsPage() );
+ detailsPart.registerPage( ExtendedOperation.class, new ExtendedOperationDetailsPage( this ) );
}
+
+ /**
+ * Sets the Editor as dirty.
+ */
+ public void setEditorDirty()
+ {
+ ( ( ServerConfigurationEditor ) page.getEditor() ).setDirty( true );
+ }
}
Modified: directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/ExtendedOperationsPage.java
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/ExtendedOperationsPage.java?view=diff&rev=528050&r1=528049&r2=528050
==============================================================================
--- directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/ExtendedOperationsPage.java (original)
+++ directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/ExtendedOperationsPage.java Thu Apr 12 10:24:34 2007
@@ -53,7 +53,6 @@
public ExtendedOperationsPage( FormEditor editor )
{
super( editor, ID, TITLE );
- masterDetailsBlock = new ExtendedOperationsMasterDetailsBlock( this );
}
@@ -64,6 +63,7 @@
{
final ScrolledForm form = managedForm.getForm();
form.setText( "Extended Operations" );
+ masterDetailsBlock = new ExtendedOperationsMasterDetailsBlock( this );
masterDetailsBlock.createContent( managedForm );
}
}
Modified: directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/GeneralPage.java
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/GeneralPage.java?view=diff&rev=528050&r1=528049&r2=528050
==============================================================================
--- directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/GeneralPage.java (original)
+++ directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/GeneralPage.java Thu Apr 12 10:24:34 2007
@@ -412,14 +412,6 @@
}
} );
- showPasswordCheckbox.addSelectionListener( new SelectionAdapter()
- {
- public void widgetSelected( SelectionEvent e )
- {
- setEditorDirty();
- }
- } );
-
allowAnonymousAccessCheckbox.addSelectionListener( new SelectionAdapter()
{
public void widgetSelected( SelectionEvent e )
Modified: directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/InterceptorDetailsPage.java
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/InterceptorDetailsPage.java?view=diff&rev=528050&r1=528049&r2=528050
==============================================================================
--- directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/InterceptorDetailsPage.java (original)
+++ directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/InterceptorDetailsPage.java Thu Apr 12 10:24:34 2007
@@ -24,6 +24,8 @@
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.swt.SWT;
+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;
@@ -45,6 +47,9 @@
*/
public class InterceptorDetailsPage implements IDetailsPage
{
+ /** The associated Master Details Block */
+ private InterceptorsMasterDetailsBlock masterDetailsBlock;
+
/** The Managed Form */
private IManagedForm mform;
@@ -54,6 +59,28 @@
// UI fields
private Text nameText;
private Text classText;
+
+ // Listeners
+ /** The Modify Listener for Text Widgets */
+ private ModifyListener textModifyListener = new ModifyListener()
+ {
+ public void modifyText( ModifyEvent e )
+ {
+ masterDetailsBlock.setEditorDirty();
+ }
+ };
+
+
+ /**
+ * Creates a new instance of InterceptorDetailsPage.
+ *
+ * @param imdb
+ * The associated Master Details Block
+ */
+ public InterceptorDetailsPage( InterceptorsMasterDetailsBlock imdb )
+ {
+ masterDetailsBlock = imdb;
+ }
/* (non-Javadoc)
@@ -106,6 +133,25 @@
classText = toolkit.createText( client, "" );
classText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false, 2, 1 ) );
}
+
+ /**
+ * Adds listeners to UI fields.
+ */
+ private void addListeners()
+ {
+ nameText.addModifyListener( textModifyListener );
+ classText.addModifyListener( textModifyListener );
+ }
+
+
+ /**
+ * Removes listeners to UI fields.
+ */
+ private void removeListeners()
+ {
+ nameText.removeModifyListener( textModifyListener );
+ classText.removeModifyListener( textModifyListener );
+ }
/* (non-Javadoc)
@@ -130,8 +176,9 @@
* @see org.eclipse.ui.forms.IFormPart#commit(boolean)
*/
public void commit( boolean onSave )
- {
+ {
input.setName( nameText.getText() );
+ input.setClassType( classText.getText() );
}
@@ -179,7 +226,17 @@
*/
public void refresh()
{
- nameText.setText( input.getName() );
+ removeListeners();
+
+ // Name
+ String name = input.getName();
+ nameText.setText( ( name == null ) ? "" : name );
+
+ // Class
+ String classType = input.getClassType();
+ classText.setText( ( classType == null ) ? "" : classType );
+
+ addListeners();
}
Modified: directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/InterceptorsMasterDetailsBlock.java
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/InterceptorsMasterDetailsBlock.java?view=diff&rev=528050&r1=528049&r2=528050
==============================================================================
--- directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/InterceptorsMasterDetailsBlock.java (original)
+++ directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/InterceptorsMasterDetailsBlock.java Thu Apr 12 10:24:34 2007
@@ -20,6 +20,8 @@
package org.apache.directory.ldapstudio.apacheds.configuration.editor;
+import java.util.List;
+
import org.apache.directory.ldapstudio.apacheds.configuration.Activator;
import org.apache.directory.ldapstudio.apacheds.configuration.PluginConstants;
import org.apache.directory.ldapstudio.apacheds.configuration.model.Interceptor;
@@ -28,8 +30,12 @@
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;
@@ -43,6 +49,7 @@
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.plugin.AbstractUIPlugin;
/**
@@ -55,11 +62,21 @@
{
/** The associated page */
private FormPage page;
-
+
+ /** The editor input */
+ private ServerConfigurationEditorInput input;
+
+ /** The Interceptors List */
+ private List<Interceptor> interceptors;
+
+ private static final String NEW_NAME = "New Interceptor ";
+
// UI Fields
private TableViewer viewer;
private Button addButton;
private Button deleteButton;
+ private Button upButton;
+ private Button downButton;
/**
@@ -70,6 +87,8 @@
public InterceptorsMasterDetailsBlock( FormPage page )
{
this.page = page;
+ input = ( ServerConfigurationEditorInput ) page.getEditorInput();
+ interceptors = input.getServerConfiguration().getInterceptors();
}
@@ -99,7 +118,7 @@
// Creatig the Table and Table Viewer
Table table = toolkit.createTable( client, SWT.NULL );
- GridData gd = new GridData( SWT.FILL, SWT.FILL, true, true, 1, 2 );
+ GridData gd = new GridData( SWT.FILL, SWT.FILL, true, true, 1, 4 );
gd.heightHint = 20;
gd.widthHint = 100;
table.setLayoutData( gd );
@@ -114,18 +133,193 @@
}
} );
viewer.setContentProvider( new ArrayContentProvider() );
- viewer.setLabelProvider( new LabelProvider() );
- viewer.setInput( new Object[]
- { new Interceptor( "NormalizationService" ), new Interceptor( "AuthenticationService" ),
- new Interceptor( "ReferalService" ), new Interceptor( "AuthorizationService" ) } );
+ viewer.setLabelProvider( new LabelProvider()
+ {
+ public Image getImage( Object element )
+ {
+ return AbstractUIPlugin
+ .imageDescriptorFromPlugin( Activator.PLUGIN_ID, PluginConstants.IMG_INTERCEPTOR ).createImage();
+ }
+ } );
// Creating the button(s)
addButton = toolkit.createButton( client, "Add...", SWT.PUSH ); //$NON-NLS-1$
- gd = new GridData( GridData.VERTICAL_ALIGN_BEGINNING );
- addButton.setLayoutData( gd );
+ addButton.setLayoutData( new GridData( SWT.FILL, SWT.BEGINNING, false, false ) );
deleteButton = toolkit.createButton( client, "Delete", SWT.PUSH );
- deleteButton.setLayoutData( gd );
+ deleteButton.setEnabled( false );
+ deleteButton.setLayoutData( new GridData( SWT.FILL, SWT.BEGINNING, false, false ) );
+
+ upButton = toolkit.createButton( client, "Up", SWT.PUSH );
+ upButton.setEnabled( false );
+ upButton.setLayoutData( new GridData( SWT.FILL, SWT.BEGINNING, false, false ) );
+
+ downButton = toolkit.createButton( client, "Down", SWT.PUSH );
+ downButton.setEnabled( false );
+ downButton.setLayoutData( new GridData( SWT.FILL, SWT.BEGINNING, false, false ) );
+
+ initFromInput();
+ addListeners();
+ }
+
+
+ /**
+ * Initializes the page with the Editor input.
+ */
+ private void initFromInput()
+ {
+ viewer.setInput( interceptors );
+ }
+
+
+ /**
+ * Add listeners to UI fields.
+ */
+ private void addListeners()
+ {
+ viewer.addSelectionChangedListener( new ISelectionChangedListener()
+ {
+ public void selectionChanged( SelectionChangedEvent event )
+ {
+ viewer.refresh();
+
+ deleteButton.setEnabled( !event.getSelection().isEmpty() );
+
+ enableDisableUpDownButtons();
+ }
+ } );
+
+ addButton.addSelectionListener( new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ Interceptor newInterceptor = new Interceptor( getNewName() );
+ interceptors.add( newInterceptor );
+ viewer.refresh();
+ viewer.setSelection( new StructuredSelection( newInterceptor ) );
+ setEditorDirty();
+ }
+ } );
+
+ deleteButton.addSelectionListener( new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ StructuredSelection selection = ( StructuredSelection ) viewer.getSelection();
+ if ( !selection.isEmpty() )
+ {
+ Interceptor interceptor = ( Interceptor ) selection.getFirstElement();
+
+ interceptors.remove( interceptor );
+ viewer.refresh();
+ setEditorDirty();
+ }
+ }
+ } );
+
+ upButton.addSelectionListener( new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ StructuredSelection selection = ( StructuredSelection ) viewer.getSelection();
+ if ( !selection.isEmpty() )
+ {
+ Interceptor interceptor = ( Interceptor ) selection.getFirstElement();
+
+ int index = interceptors.indexOf( interceptor );
+ if ( index > 0 )
+ {
+ Interceptor interceptorBefore = interceptors.get( index - 1 );
+ if ( interceptorBefore != null )
+ {
+ interceptors.set( index - 1, interceptor );
+ interceptors.set( index, interceptorBefore );
+
+ viewer.refresh();
+ setEditorDirty();
+ enableDisableUpDownButtons();
+ }
+ }
+ }
+ }
+ } );
+
+ downButton.addSelectionListener( new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ StructuredSelection selection = ( StructuredSelection ) viewer.getSelection();
+ if ( !selection.isEmpty() )
+ {
+ Interceptor interceptor = ( Interceptor ) selection.getFirstElement();
+
+ int index = interceptors.indexOf( interceptor );
+ if ( index < ( interceptors.size() - 1 ) )
+ {
+ Interceptor interceptorAfter = interceptors.get( index + 1 );
+ if ( interceptorAfter != null )
+ {
+ interceptors.set( index + 1, interceptor );
+ interceptors.set( index, interceptorAfter );
+
+ viewer.refresh();
+ setEditorDirty();
+ enableDisableUpDownButtons();
+ }
+ }
+ }
+ }
+ } );
+ }
+
+
+ /**
+ * 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 ( Interceptor interceptor : interceptors )
+ {
+ if ( interceptor.getName().equalsIgnoreCase( name ) )
+ {
+ ok = false;
+ }
+ }
+
+ counter++;
+ }
+
+ return name;
+ }
+
+
+ /**
+ * Enables or Disables the Up and Down Buttons.
+ */
+ private void enableDisableUpDownButtons()
+ {
+ StructuredSelection selection = ( StructuredSelection ) viewer.getSelection();
+
+ upButton.setEnabled( !selection.isEmpty() );
+ downButton.setEnabled( !selection.isEmpty() );
+ if ( !selection.isEmpty() )
+ {
+ Interceptor interceptor = ( Interceptor ) selection.getFirstElement();
+ upButton.setEnabled( interceptors.indexOf( interceptor ) != 0 );
+ downButton.setEnabled( interceptors.indexOf( interceptor ) != ( interceptors.size() - 1 ) );
+ }
}
@@ -172,7 +366,15 @@
*/
protected void registerPages( DetailsPart detailsPart )
{
- detailsPart.registerPage( Interceptor.class, new InterceptorDetailsPage() );
+ detailsPart.registerPage( Interceptor.class, new InterceptorDetailsPage( this ) );
}
+
+ /**
+ * Sets the Editor as dirty.
+ */
+ public void setEditorDirty()
+ {
+ ( ( ServerConfigurationEditor ) page.getEditor() ).setDirty( true );
+ }
}
Modified: directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/InterceptorsPage.java
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/InterceptorsPage.java?view=diff&rev=528050&r1=528049&r2=528050
==============================================================================
--- directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/InterceptorsPage.java (original)
+++ directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/InterceptorsPage.java Thu Apr 12 10:24:34 2007
@@ -53,7 +53,6 @@
public InterceptorsPage( FormEditor editor )
{
super( editor, ID, TITLE );
- masterDetailsBlock = new InterceptorsMasterDetailsBlock( this );
}
@@ -64,6 +63,7 @@
{
final ScrolledForm form = managedForm.getForm();
form.setText( "Interceptors" );
+ masterDetailsBlock = new InterceptorsMasterDetailsBlock( this );
masterDetailsBlock.createContent( managedForm );
}
}
Modified: directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/PartitionDetailsPage.java
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/PartitionDetailsPage.java?view=diff&rev=528050&r1=528049&r2=528050
==============================================================================
--- directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/PartitionDetailsPage.java (original)
+++ directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/PartitionDetailsPage.java Thu Apr 12 10:24:34 2007
@@ -20,11 +20,31 @@
package org.apache.directory.ldapstudio.apacheds.configuration.editor;
+import java.util.List;
+
+import org.apache.directory.ldapstudio.apacheds.configuration.dialogs.IndexedAttributeDialog;
+import org.apache.directory.ldapstudio.apacheds.configuration.model.IndexedAttribute;
import org.apache.directory.ldapstudio.apacheds.configuration.model.Partition;
+import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
+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.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+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.Button;
@@ -48,26 +68,162 @@
*/
public class PartitionDetailsPage implements IDetailsPage
{
+ /** The associated Master Details Block */
+ private PartitionsMasterDetailsBlock masterDetailsBlock;
+
/** The Managed Form */
private IManagedForm mform;
/** The input Partition */
private Partition input;
+ /** The Indexed Attributes List */
+ private List<IndexedAttribute> indexedAttributes;
+
// UI fields
private Text nameText;
private Text cacheSizeText;
private Text suffixText;
private Button enableOptimizerCheckbox;
private Button synchOnWriteCheckbox;
- private Table indexedAttributesTable;
- private Button indexedAttributeAddButton;
- private Button indexedAttributeEditButton;
- private Button indexedAttributeDeleteButton;
- private Table contextEntryTable;
+ private TableViewer contextEntryTableViewer;
private Button contextEntryAddButton;
private Button contextEntryEditButton;
private Button contextEntryDeleteButton;
+ private TableViewer indexedAttributesTableViewer;
+ private Button indexedAttributeAddButton;
+ private Button indexedAttributeEditButton;
+ private Button indexedAttributeDeleteButton;
+
+ // Listeners
+ /** The Text Modify Listener */
+ private ModifyListener textModifyListener = new ModifyListener()
+ {
+ public void modifyText( ModifyEvent e )
+ {
+ masterDetailsBlock.setEditorDirty();
+ }
+ };
+
+ /** The Checkbox Selection Listener */
+ private SelectionListener checkboxSelectionListener = new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ masterDetailsBlock.setEditorDirty();
+ }
+ };
+
+ /** The Selection Changed Listener for the Context Entry Table Viewer */
+ private ISelectionChangedListener contextEntryTableViewerListener = new ISelectionChangedListener()
+ {
+ public void selectionChanged( SelectionChangedEvent event )
+ {
+ contextEntryEditButton.setEnabled( !event.getSelection().isEmpty() );
+ contextEntryDeleteButton.setEnabled( !event.getSelection().isEmpty() );
+ }
+ };
+
+ /** The Listener for the Add button of the Context Entry Section */
+ private SelectionListener contextEntryAddButtonListener = new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ masterDetailsBlock.setEditorDirty();
+ }
+ };
+
+ /** The Listener for the Edit button of the Context Entry Section */
+ private SelectionListener contextEntryEditButtonListener = new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ // masterDetailsBlock.setEditorDirty();
+ }
+ };
+
+ /** The Listener for the Delete button of the Context Entry Section */
+ private SelectionListener contextEntryDeleteButtonListener = new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ masterDetailsBlock.setEditorDirty();
+ }
+ };
+
+ /** The Selection Changed Listener for the Indexed Attributes Table Viewer */
+ private ISelectionChangedListener indexedAttributesTableViewerListener = new ISelectionChangedListener()
+ {
+ public void selectionChanged( SelectionChangedEvent event )
+ {
+ indexedAttributeEditButton.setEnabled( !event.getSelection().isEmpty() );
+ indexedAttributeDeleteButton.setEnabled( !event.getSelection().isEmpty() );
+ }
+ };
+
+ /** The Double Click Listener for the Indexed Attributes Table Viewer */
+ private IDoubleClickListener indexedAttributesTableViewerDoubleClickListener = new IDoubleClickListener()
+ {
+ public void doubleClick( DoubleClickEvent event )
+ {
+ editSelectedIndexedAttribute();
+ }
+ };
+
+ /** The Listener for the Add button of the Indexed Attributes Section */
+ private SelectionListener indexedAttributeAddButtonListener = new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ IndexedAttributeDialog dialog = new IndexedAttributeDialog( new IndexedAttribute( "", 0 ) );
+
+ if ( Dialog.OK == dialog.open() )
+ {
+ indexedAttributes.add( dialog.getIndexedAttribute() );
+ indexedAttributesTableViewer.refresh();
+ masterDetailsBlock.setEditorDirty();
+ }
+ }
+ };
+
+ /** The Listener for the Edit button of the Indexed Attributes Section */
+ private SelectionListener indexedAttributeEditButtonListener = new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ editSelectedIndexedAttribute();
+ }
+ };
+
+ /** The Listener for the Delete button of the Indexed Attributes Section */
+ private SelectionListener indexedAttributeDeleteButtonListener = new SelectionAdapter()
+ {
+ 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();
+ }
+ }
+ };
+
+
+ /**
+ * Creates a new instance of PartitionDetailsPage.
+ *
+ * @param pmdb
+ * the associated Master Details Block
+ */
+ public PartitionDetailsPage( PartitionsMasterDetailsBlock pmdb )
+ {
+ masterDetailsBlock = pmdb;
+ }
/* (non-Javadoc)
@@ -120,6 +276,16 @@
// Cache Size
toolkit.createLabel( client, "Cache Size:" );
cacheSizeText = toolkit.createText( client, "" );
+ 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, 2, 1 ) );
// Suffix
@@ -132,7 +298,7 @@
enableOptimizerCheckbox.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false, 3, 1 ) );
// Synchronisation On Write
- synchOnWriteCheckbox = toolkit.createButton( client, " Synchronization on write", SWT.CHECK );
+ synchOnWriteCheckbox = toolkit.createButton( client, "Synchronization on write", SWT.CHECK );
synchOnWriteCheckbox.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false, 3, 1 ) );
}
@@ -157,10 +323,13 @@
client.setLayout( new GridLayout( 2, false ) );
section.setClient( client );
- contextEntryTable = toolkit.createTable( client, SWT.NONE );
+ Table contextEntryTable = toolkit.createTable( client, SWT.NONE );
GridData gd = new GridData( SWT.FILL, SWT.NONE, true, false, 1, 3 );
gd.heightHint = 80;
contextEntryTable.setLayoutData( gd );
+ contextEntryTableViewer = new TableViewer( contextEntryTable );
+ contextEntryTableViewer.setContentProvider( new ArrayContentProvider() );
+ contextEntryTableViewer.setLabelProvider( new LabelProvider() );
GridData buttonsGD = new GridData( SWT.FILL, SWT.BEGINNING, false, false );
buttonsGD.widthHint = IDialogConstants.BUTTON_WIDTH;
@@ -169,9 +338,11 @@
contextEntryAddButton.setLayoutData( buttonsGD );
contextEntryEditButton = toolkit.createButton( client, "Edit...", SWT.PUSH );
+ contextEntryEditButton.setEnabled( false );
contextEntryEditButton.setLayoutData( buttonsGD );
contextEntryDeleteButton = toolkit.createButton( client, "Delete", SWT.PUSH );
+ contextEntryDeleteButton.setEnabled( false );
contextEntryDeleteButton.setLayoutData( buttonsGD );
}
@@ -196,10 +367,13 @@
indexedAttributesClient.setLayout( new GridLayout( 2, false ) );
indexedAttributesSection.setClient( indexedAttributesClient );
- indexedAttributesTable = toolkit.createTable( indexedAttributesClient, SWT.NONE );
+ Table indexedAttributesTable = toolkit.createTable( indexedAttributesClient, SWT.NONE );
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() );
GridData buttonsGD = new GridData( SWT.FILL, SWT.BEGINNING, false, false );
buttonsGD.widthHint = IDialogConstants.BUTTON_WIDTH;
@@ -208,13 +382,65 @@
indexedAttributeAddButton.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 );
}
+ /**
+ * Adds listeners to UI fields.
+ */
+ private void addListeners()
+ {
+ nameText.addModifyListener( textModifyListener );
+ cacheSizeText.addModifyListener( textModifyListener );
+ suffixText.addModifyListener( textModifyListener );
+ enableOptimizerCheckbox.addSelectionListener( checkboxSelectionListener );
+ synchOnWriteCheckbox.addSelectionListener( checkboxSelectionListener );
+
+ // TODO Add a listener for the double-click on the contextEntryTable
+ contextEntryTableViewer.addSelectionChangedListener( contextEntryTableViewerListener );
+ contextEntryAddButton.addSelectionListener( contextEntryAddButtonListener );
+ contextEntryEditButton.addSelectionListener( contextEntryEditButtonListener );
+ contextEntryDeleteButton.addSelectionListener( contextEntryDeleteButtonListener );
+
+ indexedAttributesTableViewer.addSelectionChangedListener( indexedAttributesTableViewerListener );
+ indexedAttributesTableViewer.addDoubleClickListener( indexedAttributesTableViewerDoubleClickListener );
+ indexedAttributeAddButton.addSelectionListener( indexedAttributeAddButtonListener );
+ indexedAttributeEditButton.addSelectionListener( indexedAttributeEditButtonListener );
+ indexedAttributeDeleteButton.addSelectionListener( indexedAttributeDeleteButtonListener );
+ }
+
+
+ /**
+ * Removes listeners to UI fields.
+ */
+ private void removeListeners()
+ {
+ nameText.removeModifyListener( textModifyListener );
+ cacheSizeText.removeModifyListener( textModifyListener );
+ suffixText.removeModifyListener( textModifyListener );
+ enableOptimizerCheckbox.removeSelectionListener( checkboxSelectionListener );
+ synchOnWriteCheckbox.removeSelectionListener( checkboxSelectionListener );
+
+ // TODO remove the listener for the double-click on the contextEntryTable
+ contextEntryTableViewer.removeSelectionChangedListener( contextEntryTableViewerListener );
+ contextEntryAddButton.removeSelectionListener( contextEntryAddButtonListener );
+ contextEntryEditButton.removeSelectionListener( contextEntryEditButtonListener );
+ contextEntryDeleteButton.removeSelectionListener( contextEntryDeleteButtonListener );
+
+ indexedAttributesTableViewer.removeSelectionChangedListener( indexedAttributesTableViewerListener );
+ indexedAttributesTableViewer.removeDoubleClickListener( indexedAttributesTableViewerDoubleClickListener );
+ indexedAttributeAddButton.removeSelectionListener( indexedAttributeAddButtonListener );
+ indexedAttributeEditButton.removeSelectionListener( indexedAttributeEditButtonListener );
+ indexedAttributeDeleteButton.removeSelectionListener( indexedAttributeDeleteButtonListener );
+ }
+
+
/* (non-Javadoc)
* @see org.eclipse.ui.forms.IPartSelectionListener#selectionChanged(org.eclipse.ui.forms.IFormPart, org.eclipse.jface.viewers.ISelection)
*/
@@ -286,7 +512,30 @@
*/
public void refresh()
{
- nameText.setText( input.getName() );
+ removeListeners();
+
+ // Name
+ String name = input.getName();
+ nameText.setText( ( name == null ) ? "" : name );
+
+ // Cache Size
+ cacheSizeText.setText( "" + input.getCacheSize() );
+
+ // Suffix
+ String suffix = input.getSuffix();
+ suffixText.setText( ( suffix == null ) ? "" : suffix );
+
+ // Enable Optimizer
+ enableOptimizerCheckbox.setSelection( input.isEnableOptimizer() );
+
+ // Synchronization on write
+ synchOnWriteCheckbox.setSelection( input.isSynchronizationOnWrite() );
+
+ // Indexed Attributes
+ indexedAttributes = input.getIndexedAttributes();
+ indexedAttributesTableViewer.setInput( indexedAttributes );
+
+ addListeners();
}
@@ -305,5 +554,26 @@
public boolean setFormInput( Object input )
{
return false;
+ }
+
+
+ /**
+ * Opens an Indexed Attribute Dialog with the selected Indexed Attribute in the
+ * Indexed Attributes Table Viewer.
+ */
+ private void editSelectedIndexedAttribute()
+ {
+ StructuredSelection selection = ( StructuredSelection ) indexedAttributesTableViewer.getSelection();
+ if ( !selection.isEmpty() )
+ {
+ IndexedAttribute indexedAttribute = ( IndexedAttribute ) selection.getFirstElement();
+
+ IndexedAttributeDialog dialog = new IndexedAttributeDialog( indexedAttribute );
+ if ( Dialog.OK == dialog.open() && dialog.isDirty() )
+ {
+ indexedAttributesTableViewer.refresh();
+ masterDetailsBlock.setEditorDirty();
+ }
+ }
}
}
Modified: directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/PartitionsMasterDetailsBlock.java
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/PartitionsMasterDetailsBlock.java?view=diff&rev=528050&r1=528049&r2=528050
==============================================================================
--- directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/PartitionsMasterDetailsBlock.java (original)
+++ directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/PartitionsMasterDetailsBlock.java Thu Apr 12 10:24:34 2007
@@ -20,6 +20,8 @@
package org.apache.directory.ldapstudio.apacheds.configuration.editor;
+import java.util.List;
+
import org.apache.directory.ldapstudio.apacheds.configuration.Activator;
import org.apache.directory.ldapstudio.apacheds.configuration.PluginConstants;
import org.apache.directory.ldapstudio.apacheds.configuration.model.Partition;
@@ -28,8 +30,12 @@
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;
@@ -43,6 +49,7 @@
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.plugin.AbstractUIPlugin;
/**
@@ -56,6 +63,14 @@
/** The associated page */
private FormPage page;
+ /** The editor input */
+ private ServerConfigurationEditorInput input;
+
+ /** The Interceptors List */
+ private List<Partition> partitions;
+
+ private static final String NEW_NAME = "New Partition ";
+
// UI Fields
private TableViewer viewer;
private Button addButton;
@@ -71,6 +86,8 @@
public PartitionsMasterDetailsBlock( FormPage page )
{
this.page = page;
+ input = ( ServerConfigurationEditorInput ) page.getEditorInput();
+ partitions = input.getServerConfiguration().getPartitions();
}
@@ -113,17 +130,113 @@
}
} );
viewer.setContentProvider( new ArrayContentProvider() );
- viewer.setLabelProvider( new LabelProvider() );
+ viewer.setLabelProvider( new LabelProvider()
+ {
+ public Image getImage( Object element )
+ {
+ return AbstractUIPlugin.imageDescriptorFromPlugin( Activator.PLUGIN_ID, PluginConstants.IMG_PARTITION )
+ .createImage();
+ }
+ } );
viewer.setInput( new Object[]
{ new Partition( "System Partition" ), new Partition( "Example Partition" ) } );
// Creating the button(s)
addButton = toolkit.createButton( client, "Add...", SWT.PUSH ); //$NON-NLS-1$
- gd = new GridData( GridData.VERTICAL_ALIGN_BEGINNING );
- addButton.setLayoutData( gd );
+ addButton.setLayoutData( new GridData( SWT.FILL, SWT.BEGINNING, false, false ) );
deleteButton = toolkit.createButton( client, "Delete", SWT.PUSH );
- deleteButton.setLayoutData( gd );
+ 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( partitions );
+ }
+
+
+ /**
+ * 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 )
+ {
+ Partition newPartition = new Partition( getNewName() );
+ partitions.add( newPartition );
+ viewer.refresh();
+ viewer.setSelection( new StructuredSelection( newPartition ) );
+ setEditorDirty();
+ }
+ } );
+
+ deleteButton.addSelectionListener( new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ StructuredSelection selection = ( StructuredSelection ) viewer.getSelection();
+ if ( !selection.isEmpty() )
+ {
+ Partition partition = ( Partition ) selection.getFirstElement();
+
+ partitions.remove( partition );
+ viewer.refresh();
+ setEditorDirty();
+ }
+ }
+ } );
+ }
+
+
+ /**
+ * 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 ( Partition partition : partitions )
+ {
+ if ( partition.getName().equalsIgnoreCase( name ) )
+ {
+ ok = false;
+ }
+ }
+
+ counter++;
+ }
+
+ return name;
}
@@ -170,6 +283,15 @@
*/
protected void registerPages( DetailsPart detailsPart )
{
- detailsPart.registerPage( Partition.class, new PartitionDetailsPage() );
+ detailsPart.registerPage( Partition.class, new PartitionDetailsPage( this ) );
+ }
+
+
+ /**
+ * Sets the Editor as dirty.
+ */
+ public void setEditorDirty()
+ {
+ ( ( ServerConfigurationEditor ) page.getEditor() ).setDirty( true );
}
}
Modified: directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/PartitionsPage.java
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/PartitionsPage.java?view=diff&rev=528050&r1=528049&r2=528050
==============================================================================
--- directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/PartitionsPage.java (original)
+++ directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/PartitionsPage.java Thu Apr 12 10:24:34 2007
@@ -53,7 +53,6 @@
public PartitionsPage( FormEditor editor )
{
super( editor, ID, TITLE );
- masterDetailsBlock = new PartitionsMasterDetailsBlock( this );
}
@@ -64,6 +63,7 @@
{
ScrolledForm form = managedForm.getForm();
form.setText( "Partitions" );
+ masterDetailsBlock = new PartitionsMasterDetailsBlock( this );
masterDetailsBlock.createContent( managedForm );
}
}
Modified: directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/ServerConfigurationEditor.java
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/ServerConfigurationEditor.java?view=diff&rev=528050&r1=528049&r2=528050
==============================================================================
--- directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/ServerConfigurationEditor.java (original)
+++ directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/ServerConfigurationEditor.java Thu Apr 12 10:24:34 2007
@@ -49,7 +49,9 @@
private FormPage extendedOperationsPage;
- @Override
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.forms.editor.FormEditor#init(org.eclipse.ui.IEditorSite, org.eclipse.ui.IEditorInput)
+ */
public void init( IEditorSite site, IEditorInput input ) throws PartInitException
{
super.init( site, input );
@@ -63,16 +65,18 @@
*/
protected void addPages()
{
- generalPage = new GeneralPage( this );
- partitionsPage = new PartitionsPage( this );
- interceptorsPage = new InterceptorsPage( this );
- extendedOperationsPage = new ExtendedOperationsPage( this );
-
try
{
+ generalPage = new GeneralPage( this );
addPage( generalPage );
+
+ partitionsPage = new PartitionsPage( this );
addPage( partitionsPage );
+
+ interceptorsPage = new InterceptorsPage( this );
addPage( interceptorsPage );
+
+ extendedOperationsPage = new ExtendedOperationsPage( this );
addPage( extendedOperationsPage );
}
catch ( PartInitException e )
Modified: directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/ServerConfigurationEditorInput.java
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/ServerConfigurationEditorInput.java?view=diff&rev=528050&r1=528049&r2=528050
==============================================================================
--- directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/ServerConfigurationEditorInput.java (original)
+++ directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/editor/ServerConfigurationEditorInput.java Thu Apr 12 10:24:34 2007
@@ -67,7 +67,7 @@
*/
public String getToolTipText()
{
- return "server.xml";
+ return serverConfiguration.getPath();
}
@@ -85,7 +85,7 @@
*/
public boolean exists()
{
- return true;
+ return ( serverConfiguration != null );
}
Modified: directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/model/IndexedAttribute.java
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/model/IndexedAttribute.java?view=diff&rev=528050&r1=528049&r2=528050
==============================================================================
--- directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/model/IndexedAttribute.java (original)
+++ directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/model/IndexedAttribute.java Thu Apr 12 10:24:34 2007
@@ -96,4 +96,13 @@
{
this.cacheSize = cacheSize;
}
+
+
+ /* (non-Javadoc)
+ * @see java.lang.Object#toString()
+ */
+ public String toString()
+ {
+ return attributeId + " [" + cacheSize + "]";
+ }
}
Modified: directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/model/Interceptor.java
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/model/Interceptor.java?view=diff&rev=528050&r1=528049&r2=528050
==============================================================================
--- directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/model/Interceptor.java (original)
+++ directory/ldapstudio/trunk/ldapstudio-apacheds-configuration/src/main/java/org/apache/directory/ldapstudio/apacheds/configuration/model/Interceptor.java Thu Apr 12 10:24:34 2007
@@ -31,6 +31,9 @@
/** The name of the interceptor */
private String name;
+ /** The class of the class of the interceptor */
+ private String classType;
+
/**
* Creates a new instance of Interceptor.
@@ -65,6 +68,30 @@
public void setName( String name )
{
this.name = name;
+ }
+
+
+ /**
+ * Gets the class type of the interceptor.
+ *
+ * @return
+ * the class type of the interceptor
+ */
+ public String getClassType()
+ {
+ return classType;
+ }
+
+
+ /**
+ * Sets the class type of the interceptor.
+ *
+ * @param classType
+ * the new class type to set
+ */
+ public void setClassType( String classType )
+ {
+ this.classType = classType;
}