You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by pa...@apache.org on 2010/09/09 12:11:44 UTC
svn commit: r995368 [2/6] - in
/directory/studio/trunk/plugins/apacheds.configuration/src/main:
java/org/apache/directory/studio/apacheds/configuration/
java/org/apache/directory/studio/apacheds/configuration/editor/
java/org/apache/directory/studio/ap...
Added: directory/studio/trunk/plugins/apacheds.configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v157/GeneralPage.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/apacheds.configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v157/GeneralPage.java?rev=995368&view=auto
==============================================================================
--- directory/studio/trunk/plugins/apacheds.configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v157/GeneralPage.java (added)
+++ directory/studio/trunk/plugins/apacheds.configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v157/GeneralPage.java Thu Sep 9 10:11:43 2010
@@ -0,0 +1,580 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.directory.studio.apacheds.configuration.editor.v157;
+
+
+import org.apache.directory.studio.apacheds.configuration.ApacheDSConfigurationPluginConstants;
+import org.apache.directory.studio.apacheds.configuration.editor.SaveableFormPage;
+import org.apache.directory.studio.apacheds.configuration.editor.ServerConfigurationEditor;
+import org.apache.directory.studio.apacheds.configuration.model.v157.ServerConfigurationV157;
+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;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.forms.IManagedForm;
+import org.eclipse.ui.forms.editor.FormEditor;
+import org.eclipse.ui.forms.editor.FormPage;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.ScrolledForm;
+import org.eclipse.ui.forms.widgets.Section;
+import org.eclipse.ui.forms.widgets.TableWrapData;
+import org.eclipse.ui.forms.widgets.TableWrapLayout;
+
+
+/**
+ * This class represents the General Page of the Server Configuration Editor.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class GeneralPage extends FormPage implements SaveableFormPage
+{
+ /** The Page ID*/
+ public static final String ID = ServerConfigurationEditor.ID + ".V157.GeneralPage"; //$NON-NLS-1$
+
+ /** The Page Title */
+ private static final String TITLE = Messages.getString( "GeneralPage.General" ); //$NON-NLS-1$
+
+ // UI Fields
+ private Button allowAnonymousAccessCheckbox;
+ private Text maxTimeLimitText;
+ private Text maxSizeLimitText;
+ private Text synchPeriodText;
+ private Text maxThreadsText;
+ private Button enableAccesControlCheckbox;
+ private Button enableKerberosCheckbox;
+ private Button enableChangePasswordCheckbox;
+ private Button denormalizeOpAttrCheckbox;
+ private Button enableLdapCheckbox;
+ private Text ldapPortText;
+ private Button enableLdapsCheckbox;
+ private Text ldapsPortText;
+ private Text kerberosPortText;
+ private Button enableNtpCheckbox;
+ private Text ntpPortText;
+ private Button enableDnsCheckbox;
+ private Text dnsPortText;
+ private Text changePasswordPortText;
+
+
+ /**
+ * Creates a new instance of GeneralPage.
+ *
+ * @param editor
+ * the associated editor
+ */
+ public GeneralPage( FormEditor editor )
+ {
+ super( editor, ID, TITLE );
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.forms.editor.FormPage#createFormContent(org.eclipse.ui.forms.IManagedForm)
+ */
+ protected void createFormContent( IManagedForm managedForm )
+ {
+ PlatformUI.getWorkbench().getHelpSystem().setHelp( getPartControl(),
+ ApacheDSConfigurationPluginConstants.PLUGIN_ID + "." + "configuration_editor_157" ); //$NON-NLS-1$ //$NON-NLS-2$
+
+ ScrolledForm form = managedForm.getForm();
+ form.setText( Messages.getString( "GeneralPage.General" ) ); //$NON-NLS-1$
+
+ Composite parent = form.getBody();
+ TableWrapLayout twl = new TableWrapLayout();
+ twl.numColumns = 2;
+ parent.setLayout( twl );
+ FormToolkit toolkit = managedForm.getToolkit();
+
+ Composite composite = toolkit.createComposite( parent );
+ composite.setLayout( new GridLayout() );
+ TableWrapData compositeTableWrapData = new TableWrapData( TableWrapData.FILL, TableWrapData.TOP, 1, 2 );
+ compositeTableWrapData.grabHorizontal = true;
+ composite.setLayoutData( compositeTableWrapData );
+
+ Composite leftComposite = toolkit.createComposite( parent );
+ leftComposite.setLayout( new GridLayout() );
+ TableWrapData leftCompositeTableWrapData = new TableWrapData( TableWrapData.FILL, TableWrapData.TOP );
+ leftCompositeTableWrapData.grabHorizontal = true;
+ leftComposite.setLayoutData( leftCompositeTableWrapData );
+
+ Composite rightComposite = toolkit.createComposite( parent );
+ rightComposite.setLayout( new GridLayout() );
+ TableWrapData rightCompositeTableWrapData = new TableWrapData( TableWrapData.FILL, TableWrapData.TOP );
+ rightCompositeTableWrapData.grabHorizontal = true;
+ rightComposite.setLayoutData( rightCompositeTableWrapData );
+
+ createProtocolsSection( composite, toolkit );
+ createLimitsSection( leftComposite, toolkit );
+ createOptionsSection( rightComposite, toolkit );
+
+ initFromInput();
+ addListeners();
+ }
+
+
+ /**
+ * Creates the Protocols Section
+ *
+ * @param parent
+ * the parent composite
+ * @param toolkit
+ * the toolkit to use
+ */
+ private void createProtocolsSection( Composite parent, FormToolkit toolkit )
+ {
+ // Creation of the section
+ Section section = toolkit.createSection( parent, Section.TITLE_BAR );
+ section.setText( Messages.getString( "GeneralPage.Protocols" ) ); //$NON-NLS-1$
+ section.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+ Composite client = toolkit.createComposite( section );
+ toolkit.paintBordersFor( client );
+ client.setLayout( new GridLayout( 3, true ) );
+ section.setClient( client );
+
+ // LDAP
+ Composite ldapProtocolComposite = createProtocolComposite( toolkit, client );
+ enableLdapCheckbox = toolkit.createButton( ldapProtocolComposite,
+ Messages.getString( "GeneralPage.EnableLDAP" ), SWT.CHECK ); //$NON-NLS-1$
+ enableLdapCheckbox.setLayoutData( new GridData( SWT.NONE, SWT.NONE, true, false, 3, 1 ) );
+ toolkit.createLabel( ldapProtocolComposite, " " ); //$NON-NLS-1$
+ toolkit.createLabel( ldapProtocolComposite, Messages.getString( "GeneralPage.Port" ) ); //$NON-NLS-1$
+ ldapPortText = createPortText( toolkit, ldapProtocolComposite );
+
+ // LDAPS
+ Composite ldapsProtocolComposite = createProtocolComposite( toolkit, client );
+ enableLdapsCheckbox = toolkit.createButton( ldapsProtocolComposite, Messages
+ .getString( "GeneralPage.EnableLDAPS" ), SWT.CHECK ); //$NON-NLS-1$
+ enableLdapsCheckbox.setLayoutData( new GridData( SWT.NONE, SWT.NONE, true, false, 3, 1 ) );
+ toolkit.createLabel( ldapsProtocolComposite, " " ); //$NON-NLS-1$
+ toolkit.createLabel( ldapsProtocolComposite, Messages.getString( "GeneralPage.Port" ) ); //$NON-NLS-1$
+ ldapsPortText = createPortText( toolkit, ldapsProtocolComposite );
+
+ // Kerberos
+ Composite kerberosProtocolComposite = createProtocolComposite( toolkit, client );
+ enableKerberosCheckbox = toolkit.createButton( kerberosProtocolComposite, Messages
+ .getString( "GeneralPage.EnableKerberos" ), SWT.CHECK ); //$NON-NLS-1$
+ enableKerberosCheckbox.setLayoutData( new GridData( SWT.NONE, SWT.NONE, true, false, 3, 1 ) );
+ toolkit.createLabel( kerberosProtocolComposite, " " ); //$NON-NLS-1$
+ toolkit.createLabel( kerberosProtocolComposite, Messages.getString( "GeneralPage.Port" ) ); //$NON-NLS-1$
+ kerberosPortText = createPortText( toolkit, kerberosProtocolComposite );
+
+ // NTP
+ Composite ntpProtocolComposite = createProtocolComposite( toolkit, client );
+ enableNtpCheckbox = toolkit.createButton( ntpProtocolComposite,
+ Messages.getString( "GeneralPage.EnableNTP" ), SWT.CHECK ); //$NON-NLS-1$
+ enableNtpCheckbox.setLayoutData( new GridData( SWT.NONE, SWT.NONE, true, false, 3, 1 ) );
+ toolkit.createLabel( ntpProtocolComposite, " " ); //$NON-NLS-1$
+ toolkit.createLabel( ntpProtocolComposite, Messages.getString( "GeneralPage.Port" ) ); //$NON-NLS-1$
+ ntpPortText = createPortText( toolkit, ntpProtocolComposite );
+
+ // DNS
+ Composite dnsProtocolComposite = createProtocolComposite( toolkit, client );
+ enableDnsCheckbox = toolkit.createButton( dnsProtocolComposite,
+ Messages.getString( "GeneralPage.EnableDNS" ), SWT.CHECK ); //$NON-NLS-1$
+ enableDnsCheckbox.setLayoutData( new GridData( SWT.NONE, SWT.NONE, true, false, 3, 1 ) );
+ toolkit.createLabel( dnsProtocolComposite, " " ); //$NON-NLS-1$
+ toolkit.createLabel( dnsProtocolComposite, Messages.getString( "GeneralPage.Port" ) ); //$NON-NLS-1$
+ dnsPortText = createPortText( toolkit, dnsProtocolComposite );
+
+ // Change Password
+ Composite changePasswordProtocolComposite = createProtocolComposite( toolkit, client );
+ enableChangePasswordCheckbox = toolkit.createButton( changePasswordProtocolComposite, Messages
+ .getString( "GeneralPage.EnableChangePassword" ), //$NON-NLS-1$
+ SWT.CHECK );
+ enableChangePasswordCheckbox.setLayoutData( new GridData( SWT.NONE, SWT.NONE, true, false, 3, 1 ) );
+ toolkit.createLabel( changePasswordProtocolComposite, " " ); //$NON-NLS-1$
+ toolkit.createLabel( changePasswordProtocolComposite, Messages.getString( "GeneralPage.Port" ) ); //$NON-NLS-1$
+ changePasswordPortText = createPortText( toolkit, changePasswordProtocolComposite );
+ }
+
+
+ /**
+ * Creates a Protocol Composite : a Composite composed of a GridLayout with
+ * 3 columns and marginHeight and marginWidth set to 0.
+ *
+ * @param toolkit
+ * the toolkit
+ * @param parent
+ * the parent
+ * @return
+ * a Protocol Composite
+ */
+ private Composite createProtocolComposite( FormToolkit toolkit, Composite parent )
+ {
+ Composite protocolComposite = toolkit.createComposite( parent );
+ GridLayout protocolGridLayout = new GridLayout( 3, false );
+ protocolGridLayout.marginHeight = protocolGridLayout.marginWidth = 0;
+ toolkit.paintBordersFor( protocolComposite );
+ protocolComposite.setLayout( protocolGridLayout );
+
+ return protocolComposite;
+ }
+
+
+ /**
+ * Creates a Text that can be used to enter a port number.
+ *
+ * @param toolkit
+ * the toolkit
+ * @param parent
+ * the parent
+ * @return
+ * a Text that can be used to enter a port number
+ */
+ private Text createPortText( FormToolkit toolkit, Composite parent )
+ {
+ Text portText = toolkit.createText( parent, "" ); //$NON-NLS-1$
+ GridData gd = new GridData( SWT.NONE, SWT.NONE, false, false );
+ gd.widthHint = 42;
+ portText.setLayoutData( gd );
+ portText.addVerifyListener( new VerifyListener()
+ {
+ public void verifyText( VerifyEvent e )
+ {
+ if ( !e.text.matches( "[0-9]*" ) ) //$NON-NLS-1$
+ {
+ e.doit = false;
+ }
+ }
+ } );
+ portText.setTextLimit( 5 );
+
+ return portText;
+ }
+
+
+ /**
+ * Creates the Limits Section
+ *
+ * @param parent
+ * the parent composite
+ * @param toolkit
+ * the toolkit to use
+ */
+ private void createLimitsSection( Composite parent, FormToolkit toolkit )
+ {
+ // Creation of the section
+ Section section = toolkit.createSection( parent, Section.TITLE_BAR );
+ section.setText( Messages.getString( "GeneralPage.Limits" ) ); //$NON-NLS-1$
+ section.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+ Composite client = toolkit.createComposite( section );
+ toolkit.paintBordersFor( client );
+ GridLayout glayout = new GridLayout( 2, false );
+ client.setLayout( glayout );
+ section.setClient( client );
+
+ // Max. Time Limit
+ toolkit.createLabel( client, Messages.getString( "GeneralPage.MaxTimeLimit" ) ); //$NON-NLS-1$
+ maxTimeLimitText = toolkit.createText( client, "" ); //$NON-NLS-1$
+ maxTimeLimitText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+ maxTimeLimitText.addVerifyListener( new VerifyListener()
+ {
+ public void verifyText( VerifyEvent e )
+ {
+ if ( !e.text.matches( "[0-9]*" ) ) //$NON-NLS-1$
+ {
+ e.doit = false;
+ }
+ }
+ } );
+
+ // Max. Size Limit
+ toolkit.createLabel( client, Messages.getString( "GeneralPage.MaxSizeLimit" ) ); //$NON-NLS-1$
+ maxSizeLimitText = toolkit.createText( client, "" ); //$NON-NLS-1$
+ maxSizeLimitText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+ maxSizeLimitText.addVerifyListener( new VerifyListener()
+ {
+ public void verifyText( VerifyEvent e )
+ {
+ if ( !e.text.matches( "[0-9]*" ) ) //$NON-NLS-1$
+ {
+ e.doit = false;
+ }
+ }
+ } );
+
+ // Synchronization Period
+ toolkit.createLabel( client, Messages.getString( "GeneralPage.SyncPeriod" ) ); //$NON-NLS-1$
+ synchPeriodText = toolkit.createText( client, "" ); //$NON-NLS-1$
+ synchPeriodText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+ synchPeriodText.addVerifyListener( new VerifyListener()
+ {
+ public void verifyText( VerifyEvent e )
+ {
+ if ( !e.text.matches( "[0-9]*" ) ) //$NON-NLS-1$
+ {
+ e.doit = false;
+ }
+ }
+ } );
+
+ // Max. Threads
+ toolkit.createLabel( client, Messages.getString( "GeneralPage.MaxThreads" ) ); //$NON-NLS-1$
+ maxThreadsText = toolkit.createText( client, "" ); //$NON-NLS-1$
+ maxThreadsText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+ maxThreadsText.addVerifyListener( new VerifyListener()
+ {
+ public void verifyText( VerifyEvent e )
+ {
+ if ( !e.text.matches( "[0-9]*" ) ) //$NON-NLS-1$
+ {
+ e.doit = false;
+ }
+ }
+ } );
+ }
+
+
+ /**
+ * Creates the Options Section
+ *
+ * @param parent
+ * the parent composite
+ * @param toolkit
+ * the toolkit to use
+ */
+ private void createOptionsSection( Composite parent, FormToolkit toolkit )
+ {
+ // Creation of the section
+ Section section = toolkit.createSection( parent, Section.TITLE_BAR );
+ section.setText( Messages.getString( "GeneralPage.Options" ) ); //$NON-NLS-1$
+ section.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+ Composite client = toolkit.createComposite( section );
+ toolkit.paintBordersFor( client );
+ client.setLayout( new GridLayout() );
+ section.setClient( client );
+
+ // Allow Anonymous Access
+ allowAnonymousAccessCheckbox = toolkit.createButton( client, Messages
+ .getString( "GeneralPage.AllowAnonymousAccess" ), SWT.CHECK ); //$NON-NLS-1$
+ allowAnonymousAccessCheckbox.setLayoutData( new GridData( SWT.NONE, SWT.NONE, true, false ) );
+
+ // Enable Access Control
+ enableAccesControlCheckbox = toolkit.createButton( client, Messages
+ .getString( "GeneralPage.EnableAccessControl" ), SWT.CHECK ); //$NON-NLS-1$
+ enableAccesControlCheckbox.setLayoutData( new GridData( SWT.NONE, SWT.NONE, true, false ) );
+
+ // Denormalize Operational Attributes
+ denormalizeOpAttrCheckbox = toolkit.createButton( client, Messages
+ .getString( "GeneralPage.DenormalizeOperationalAttributes" ), SWT.CHECK ); //$NON-NLS-1$
+ denormalizeOpAttrCheckbox.setLayoutData( new GridData( SWT.NONE, SWT.NONE, true, false ) );
+ }
+
+
+ /**
+ * Initializes the page with the Editor input.
+ */
+ private void initFromInput()
+ {
+ ServerConfigurationV157 configuration = ( ServerConfigurationV157 ) ( ( ServerConfigurationEditor ) getEditor() )
+ .getServerConfiguration();
+
+ // LDAP Protocol
+ enableLdapCheckbox.setSelection( configuration.isEnableLdap() );
+ ldapPortText.setEnabled( enableLdapCheckbox.getSelection() );
+ ldapPortText.setText( "" + configuration.getLdapPort() ); //$NON-NLS-1$
+
+ // LDAPS Protocol
+ enableLdapsCheckbox.setSelection( configuration.isEnableLdaps() );
+ ldapsPortText.setEnabled( enableLdapsCheckbox.getSelection() );
+ ldapsPortText.setText( "" + configuration.getLdapsPort() ); //$NON-NLS-1$
+
+ // Kerberos Protocol
+ enableKerberosCheckbox.setSelection( configuration.isEnableKerberos() );
+ kerberosPortText.setEnabled( enableKerberosCheckbox.getSelection() );
+ kerberosPortText.setText( "" + configuration.getKerberosPort() ); //$NON-NLS-1$
+
+ // NTP Protocol
+ enableNtpCheckbox.setSelection( configuration.isEnableNtp() );
+ ntpPortText.setEnabled( enableNtpCheckbox.getSelection() );
+ ntpPortText.setText( "" + configuration.getNtpPort() ); //$NON-NLS-1$
+
+ // DNS Protocol
+ enableDnsCheckbox.setSelection( configuration.isEnableDns() );
+ dnsPortText.setEnabled( enableDnsCheckbox.getSelection() );
+ dnsPortText.setText( "" + configuration.getDnsPort() ); //$NON-NLS-1$
+
+ // Change Password Protocol
+ enableChangePasswordCheckbox.setSelection( configuration.isEnableChangePassword() );
+ changePasswordPortText.setEnabled( enableChangePasswordCheckbox.getSelection() );
+ changePasswordPortText.setText( "" + configuration.getChangePasswordPort() ); //$NON-NLS-1$
+
+ // Max Time Limit
+ maxTimeLimitText.setText( "" + configuration.getMaxTimeLimit() ); //$NON-NLS-1$
+
+ // Max Size Limit
+ maxSizeLimitText.setText( "" + configuration.getMaxSizeLimit() ); //$NON-NLS-1$
+
+ // Synchronization Period
+ synchPeriodText.setText( "" + configuration.getSynchronizationPeriod() ); //$NON-NLS-1$
+
+ // Max Threads
+ maxThreadsText.setText( "" + configuration.getMaxThreads() ); //$NON-NLS-1$
+
+ // Allow Anonymous Access
+ allowAnonymousAccessCheckbox.setSelection( configuration.isAllowAnonymousAccess() );
+
+ // Enable Access Control
+ enableAccesControlCheckbox.setSelection( configuration.isEnableAccessControl() );
+
+ // Denormalize Op Attr
+ denormalizeOpAttrCheckbox.setSelection( configuration.isDenormalizeOpAttr() );
+ }
+
+
+ /**
+ * Add listeners to UI fields.
+ */
+ private void addListeners()
+ {
+ // The Modify Listener
+ ModifyListener modifyListener = new ModifyListener()
+ {
+ public void modifyText( ModifyEvent e )
+ {
+ setEditorDirty();
+ }
+ };
+
+ // The Selection Listener
+ SelectionListener selectionListener = new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ setEditorDirty();
+ }
+ };
+
+ enableLdapCheckbox.addSelectionListener( selectionListener );
+ enableLdapCheckbox.addSelectionListener( new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ ldapPortText.setEnabled( enableLdapCheckbox.getSelection() );
+ }
+ } );
+ ldapPortText.addModifyListener( modifyListener );
+ enableLdapsCheckbox.addSelectionListener( selectionListener );
+ enableLdapsCheckbox.addSelectionListener( new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ ldapsPortText.setEnabled( enableLdapsCheckbox.getSelection() );
+ }
+ } );
+ ldapsPortText.addModifyListener( modifyListener );
+ enableKerberosCheckbox.addSelectionListener( selectionListener );
+ enableKerberosCheckbox.addSelectionListener( new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ kerberosPortText.setEnabled( enableKerberosCheckbox.getSelection() );
+ }
+ } );
+ kerberosPortText.addModifyListener( modifyListener );
+ enableNtpCheckbox.addSelectionListener( selectionListener );
+ enableNtpCheckbox.addSelectionListener( new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ ntpPortText.setEnabled( enableNtpCheckbox.getSelection() );
+ }
+ } );
+ ntpPortText.addModifyListener( modifyListener );
+ enableDnsCheckbox.addSelectionListener( selectionListener );
+ enableDnsCheckbox.addSelectionListener( new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ dnsPortText.setEnabled( enableDnsCheckbox.getSelection() );
+ }
+ } );
+ dnsPortText.addModifyListener( modifyListener );
+ enableChangePasswordCheckbox.addSelectionListener( selectionListener );
+ enableChangePasswordCheckbox.addSelectionListener( new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ changePasswordPortText.setEnabled( enableChangePasswordCheckbox.getSelection() );
+ }
+ } );
+ changePasswordPortText.addModifyListener( modifyListener );
+
+ maxTimeLimitText.addModifyListener( modifyListener );
+ maxSizeLimitText.addModifyListener( modifyListener );
+ synchPeriodText.addModifyListener( modifyListener );
+ maxThreadsText.addModifyListener( modifyListener );
+
+ allowAnonymousAccessCheckbox.addSelectionListener( selectionListener );
+ enableAccesControlCheckbox.addSelectionListener( selectionListener );
+ denormalizeOpAttrCheckbox.addSelectionListener( selectionListener );
+ }
+
+
+ /**
+ * Sets the Editor as dirty.
+ */
+ private void setEditorDirty()
+ {
+ ( ( ServerConfigurationEditor ) getEditor() ).setDirty( true );
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.studio.apacheds.configuration.editor.SavableWizardPage#save()
+ */
+ public void save()
+ {
+ ServerConfigurationV157 configuration = ( ServerConfigurationV157 ) ( ( ServerConfigurationEditor ) getEditor() )
+ .getServerConfiguration();
+
+ configuration.setEnableLdap( enableLdapCheckbox.getSelection() );
+ configuration.setLdapPort( Integer.parseInt( ldapPortText.getText() ) );
+ configuration.setEnableLdaps( enableLdapsCheckbox.getSelection() );
+ configuration.setLdapsPort( Integer.parseInt( ldapsPortText.getText() ) );
+ configuration.setEnableKerberos( enableKerberosCheckbox.getSelection() );
+ configuration.setKerberosPort( Integer.parseInt( kerberosPortText.getText() ) );
+ configuration.setEnableNtp( enableNtpCheckbox.getSelection() );
+ configuration.setNtpPort( Integer.parseInt( ntpPortText.getText() ) );
+ configuration.setEnableDns( enableDnsCheckbox.getSelection() );
+ configuration.setDnsPort( Integer.parseInt( dnsPortText.getText() ) );
+ configuration.setEnableChangePassword( enableChangePasswordCheckbox.getSelection() );
+ configuration.setChangePasswordPort( Integer.parseInt( changePasswordPortText.getText() ) );
+
+ configuration.setMaxTimeLimit( Integer.parseInt( maxTimeLimitText.getText() ) );
+ configuration.setMaxSizeLimit( Integer.parseInt( maxSizeLimitText.getText() ) );
+ configuration.setSynchronizationPeriod( Long.parseLong( synchPeriodText.getText() ) );
+ configuration.setMaxThreads( Integer.parseInt( maxThreadsText.getText() ) );
+
+ configuration.setAllowAnonymousAccess( allowAnonymousAccessCheckbox.getSelection() );
+ configuration.setEnableAccessControl( enableAccesControlCheckbox.getSelection() );
+ configuration.setDenormalizeOpAttr( denormalizeOpAttrCheckbox.getSelection() );
+ }
+}
Added: directory/studio/trunk/plugins/apacheds.configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v157/InterceptorDetailsPage.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/apacheds.configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v157/InterceptorDetailsPage.java?rev=995368&view=auto
==============================================================================
--- directory/studio/trunk/plugins/apacheds.configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v157/InterceptorDetailsPage.java (added)
+++ directory/studio/trunk/plugins/apacheds.configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v157/InterceptorDetailsPage.java Thu Sep 9 10:11:43 2010
@@ -0,0 +1,224 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.directory.studio.apacheds.configuration.editor.v157;
+
+
+import org.apache.directory.studio.apacheds.configuration.model.v157.InterceptorEnum;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.forms.IDetailsPage;
+import org.eclipse.ui.forms.IFormPart;
+import org.eclipse.ui.forms.IManagedForm;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.Section;
+import org.eclipse.ui.forms.widgets.TableWrapData;
+import org.eclipse.ui.forms.widgets.TableWrapLayout;
+
+
+/**
+ * This class represents the Details Page of the Server Configuration Editor for the Interceptor type
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class InterceptorDetailsPage implements IDetailsPage
+{
+ /** The associated Master Details Block */
+ private InterceptorsMasterDetailsBlock masterDetailsBlock;
+
+ /** The Managed Form */
+ private IManagedForm mform;
+
+ /** The input Interceptor */
+ private InterceptorEnum input;
+
+ /** The dirty flag */
+ private boolean dirty = false;
+
+ // UI fields
+ private Text nameText;
+ private Text descriptionText;
+
+
+ /**
+ * Creates a new instance of InterceptorDetailsPage.
+ *
+ * @param imdb
+ * The associated Master Details Block
+ */
+ public InterceptorDetailsPage( InterceptorsMasterDetailsBlock imdb )
+ {
+ masterDetailsBlock = imdb;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.forms.IDetailsPage#createContents(org.eclipse.swt.widgets.Composite)
+ */
+ public void createContents( Composite parent )
+ {
+ FormToolkit toolkit = mform.getToolkit();
+ TableWrapLayout layout = new TableWrapLayout();
+ layout.topMargin = 5;
+ layout.leftMargin = 5;
+ layout.rightMargin = 2;
+ layout.bottomMargin = 2;
+ parent.setLayout( layout );
+
+ createDetailsSection( parent, toolkit );
+ }
+
+
+ /**
+ * Creates the Details Section
+ *
+ * @param parent
+ * the parent composite
+ * @param toolkit
+ * the toolkit to use
+ */
+ private void createDetailsSection( Composite parent, FormToolkit toolkit )
+ {
+ Section section = toolkit.createSection( parent, Section.TITLE_BAR );
+ section.marginWidth = 10;
+ section.setText( "Interceptor Details" ); //$NON-NLS-1$
+ TableWrapData td = new TableWrapData( TableWrapData.FILL, TableWrapData.TOP );
+ td.grabHorizontal = true;
+ section.setLayoutData( td );
+ Composite client = toolkit.createComposite( section );
+ toolkit.paintBordersFor( client );
+ GridLayout glayout = new GridLayout( 2, false );
+ client.setLayout( glayout );
+ section.setClient( client );
+
+ // Name
+ toolkit.createLabel( client, Messages.getString( "InterceptorDetailsPage.Name" ) ); //$NON-NLS-1$
+ nameText = toolkit.createText( client, "" ); //$NON-NLS-1$
+ nameText.setEditable( false );
+ nameText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+
+ // Description
+ toolkit.createLabel( client, Messages.getString( "InterceptorDetailsPage.Description" ) ); //$NON-NLS-1$
+ descriptionText = toolkit.createText( client, "", SWT.MULTI | SWT.WRAP | SWT.V_SCROLL ); //$NON-NLS-1$
+ descriptionText.setEditable( false );
+ GridData gridData = new GridData( SWT.FILL, SWT.NONE, true, false );
+ gridData.widthHint = 100;
+ gridData.heightHint = 75;
+ descriptionText.setLayoutData( gridData );
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.forms.IPartSelectionListener#selectionChanged(org.eclipse.ui.forms.IFormPart, org.eclipse.jface.viewers.ISelection)
+ */
+ public void selectionChanged( IFormPart part, ISelection selection )
+ {
+ IStructuredSelection ssel = ( IStructuredSelection ) selection;
+ if ( ssel.size() == 1 )
+ {
+ input = ( InterceptorEnum ) ssel.getFirstElement();
+ }
+ else
+ {
+ input = null;
+ }
+ refresh();
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.forms.IFormPart#commit(boolean)
+ */
+ public void commit( boolean onSave )
+ {
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.forms.IFormPart#dispose()
+ */
+ public void dispose()
+ {
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.forms.IFormPart#initialize(org.eclipse.ui.forms.IManagedForm)
+ */
+ public void initialize( IManagedForm form )
+ {
+ this.mform = form;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.forms.IFormPart#isDirty()
+ */
+ public boolean isDirty()
+ {
+ return dirty;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.forms.IFormPart#isStale()
+ */
+ public boolean isStale()
+ {
+ return false;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.forms.IFormPart#refresh()
+ */
+ public void refresh()
+ {
+ // Name
+ String name = input.getName();
+ nameText.setText( ( name == null ) ? "" : name ); //$NON-NLS-1$
+
+ // Description
+ String description = input.getDescription();
+ descriptionText.setText( ( description == null ) ? "" : description ); //$NON-NLS-1$
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.forms.IFormPart#setFocus()
+ */
+ public void setFocus()
+ {
+ nameText.setFocus();
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.forms.IFormPart#setFormInput(java.lang.Object)
+ */
+ public boolean setFormInput( Object input )
+ {
+ return false;
+ }
+}
Added: directory/studio/trunk/plugins/apacheds.configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v157/InterceptorsMasterDetailsBlock.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/apacheds.configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v157/InterceptorsMasterDetailsBlock.java?rev=995368&view=auto
==============================================================================
--- directory/studio/trunk/plugins/apacheds.configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v157/InterceptorsMasterDetailsBlock.java (added)
+++ directory/studio/trunk/plugins/apacheds.configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v157/InterceptorsMasterDetailsBlock.java Thu Sep 9 10:11:43 2010
@@ -0,0 +1,376 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.directory.studio.apacheds.configuration.editor.v157;
+
+
+import java.util.List;
+
+import org.apache.directory.studio.apacheds.configuration.ApacheDSConfigurationPlugin;
+import org.apache.directory.studio.apacheds.configuration.ApacheDSConfigurationPluginConstants;
+import org.apache.directory.studio.apacheds.configuration.editor.ServerConfigurationEditor;
+import org.apache.directory.studio.apacheds.configuration.editor.v157.dialogs.InterceptorDialog;
+import org.apache.directory.studio.apacheds.configuration.model.v157.InterceptorEnum;
+import org.apache.directory.studio.apacheds.configuration.model.v157.ServerConfigurationV157;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.ui.forms.DetailsPart;
+import org.eclipse.ui.forms.IManagedForm;
+import org.eclipse.ui.forms.MasterDetailsBlock;
+import org.eclipse.ui.forms.SectionPart;
+import org.eclipse.ui.forms.editor.FormPage;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.ScrolledForm;
+import org.eclipse.ui.forms.widgets.Section;
+
+
+/**
+ * This class represents the Interceptors Master/Details Block used in the Interceptors Page.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class InterceptorsMasterDetailsBlock extends MasterDetailsBlock
+{
+ /** The associated page */
+ private FormPage page;
+
+ /** The input Server Configuration */
+ private ServerConfigurationV157 serverConfiguration;
+
+ /** The Interceptors List */
+ private List<InterceptorEnum> interceptors;
+
+ /** The Details Page */
+ private InterceptorDetailsPage detailsPage;
+
+ // UI Fields
+ private TableViewer viewer;
+ private Button addButton;
+ private Button deleteButton;
+ private Button upButton;
+ private Button downButton;
+
+
+ /**
+ * Creates a new instance of InterceptorsMasterDetailsBlock.
+ *
+ * @param page
+ */
+ public InterceptorsMasterDetailsBlock( FormPage page )
+ {
+ this.page = page;
+ serverConfiguration = ( ServerConfigurationV157 ) ( ( ServerConfigurationEditor ) page.getEditor() )
+ .getServerConfiguration();
+ interceptors = serverConfiguration.getInterceptors();
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.forms.MasterDetailsBlock#createMasterPart(org.eclipse.ui.forms.IManagedForm, org.eclipse.swt.widgets.Composite)
+ */
+ protected void createMasterPart( final IManagedForm managedForm, Composite parent )
+ {
+ FormToolkit toolkit = managedForm.getToolkit();
+
+ // Creating the Section
+ Section section = toolkit.createSection( parent, Section.TITLE_BAR | Section.DESCRIPTION );
+ section.setText( Messages.getString( "InterceptorsMasterDetailsBlock.AllInterceptors" ) ); //$NON-NLS-1$
+ section.setDescription( Messages.getString( "InterceptorsMasterDetailsBlock.SetTheInterceptorsDescription" ) ); //$NON-NLS-1$
+ section.marginWidth = 10;
+ section.marginHeight = 5;
+ Composite client = toolkit.createComposite( section, SWT.WRAP );
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 2;
+ layout.makeColumnsEqualWidth = false;
+ layout.marginWidth = 2;
+ layout.marginHeight = 2;
+ client.setLayout( layout );
+ toolkit.paintBordersFor( client );
+ section.setClient( client );
+
+ // Creatig the Table and Table Viewer
+ Table table = toolkit.createTable( client, SWT.NULL );
+ GridData gd = new GridData( SWT.FILL, SWT.FILL, true, true, 1, 4 );
+ gd.heightHint = 20;
+ gd.widthHint = 100;
+ table.setLayoutData( gd );
+ final SectionPart spart = new SectionPart( section );
+ managedForm.addPart( spart );
+ viewer = new TableViewer( table );
+ viewer.addSelectionChangedListener( new ISelectionChangedListener()
+ {
+ public void selectionChanged( SelectionChangedEvent event )
+ {
+ managedForm.fireSelectionChanged( spart, event.getSelection() );
+ }
+ } );
+ viewer.setContentProvider( new ArrayContentProvider() );
+ viewer.setLabelProvider( new LabelProvider()
+ {
+ public Image getImage( Object element )
+ {
+ return ApacheDSConfigurationPlugin.getDefault().getImage(
+ ApacheDSConfigurationPluginConstants.IMG_INTERCEPTOR );
+ }
+
+
+ public String getText( Object element )
+ {
+ if ( element instanceof InterceptorEnum )
+ {
+ return ( ( InterceptorEnum ) element ).getName();
+
+ }
+
+ return super.getText( element );
+ }
+ } );
+
+ // Creating the button(s)
+ addButton = toolkit.createButton( client, Messages.getString( "InterceptorsMasterDetailsBlock.Add" ), SWT.PUSH ); //$NON-NLS-1$
+ addButton.setLayoutData( new GridData( SWT.FILL, SWT.BEGINNING, false, false ) );
+
+ deleteButton = toolkit.createButton( client,
+ Messages.getString( "InterceptorsMasterDetailsBlock.Delete" ), SWT.PUSH ); //$NON-NLS-1$
+ deleteButton.setEnabled( false );
+ deleteButton.setLayoutData( new GridData( SWT.FILL, SWT.BEGINNING, false, false ) );
+
+ upButton = toolkit.createButton( client, Messages.getString( "InterceptorsMasterDetailsBlock.Up" ), SWT.PUSH ); //$NON-NLS-1$
+ upButton.setEnabled( false );
+ upButton.setLayoutData( new GridData( SWT.FILL, SWT.BEGINNING, false, false ) );
+
+ downButton = toolkit.createButton( client,
+ Messages.getString( "InterceptorsMasterDetailsBlock.Down" ), SWT.PUSH ); //$NON-NLS-1$
+ 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 )
+ {
+ InterceptorDialog dialog = new InterceptorDialog( interceptors );
+ if ( Dialog.OK == dialog.open() )
+ {
+ InterceptorEnum newInterceptor = dialog.getInterceptor();
+ 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() )
+ {
+ InterceptorEnum interceptor = ( InterceptorEnum ) 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() )
+ {
+ InterceptorEnum interceptor = ( InterceptorEnum ) selection.getFirstElement();
+
+ int index = interceptors.indexOf( interceptor );
+ if ( index > 0 )
+ {
+ InterceptorEnum 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() )
+ {
+ InterceptorEnum interceptor = ( InterceptorEnum ) selection.getFirstElement();
+
+ int index = interceptors.indexOf( interceptor );
+ if ( index < ( interceptors.size() - 1 ) )
+ {
+ InterceptorEnum interceptorAfter = interceptors.get( index + 1 );
+ if ( interceptorAfter != null )
+ {
+ interceptors.set( index + 1, interceptor );
+ interceptors.set( index, interceptorAfter );
+
+ viewer.refresh();
+ setEditorDirty();
+ enableDisableUpDownButtons();
+ }
+ }
+ }
+ }
+ } );
+ }
+
+
+ /**
+ * 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() )
+ {
+ InterceptorEnum interceptor = ( InterceptorEnum ) selection.getFirstElement();
+ upButton.setEnabled( interceptors.indexOf( interceptor ) != 0 );
+ downButton.setEnabled( interceptors.indexOf( interceptor ) != ( interceptors.size() - 1 ) );
+ }
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.forms.MasterDetailsBlock#createToolBarActions(org.eclipse.ui.forms.IManagedForm)
+ */
+ protected void createToolBarActions( IManagedForm managedForm )
+ {
+ final ScrolledForm form = managedForm.getForm();
+
+ // Horizontal layout Action
+ Action horizontalAction = new Action( "Horizontal layout", Action.AS_RADIO_BUTTON ) { //$NON-NLS-1$
+ public void run()
+ {
+ sashForm.setOrientation( SWT.HORIZONTAL );
+ form.reflow( true );
+ }
+ };
+ horizontalAction.setChecked( true );
+ horizontalAction.setToolTipText( "Horizontal Orientation" ); //$NON-NLS-1$
+ horizontalAction.setImageDescriptor( ApacheDSConfigurationPlugin.getDefault().getImageDescriptor(
+ ApacheDSConfigurationPluginConstants.IMG_HORIZONTAL_ORIENTATION ) );
+
+ // Vertical layout Action
+ Action verticalAction = new Action( "Vertical Orientation", Action.AS_RADIO_BUTTON ) { //$NON-NLS-1$
+ public void run()
+ {
+ sashForm.setOrientation( SWT.VERTICAL );
+ form.reflow( true );
+ }
+ };
+ verticalAction.setChecked( false );
+ verticalAction.setToolTipText( "Vertical Orientation" ); //$NON-NLS-1$
+ verticalAction.setImageDescriptor( ApacheDSConfigurationPlugin.getDefault().getImageDescriptor(
+ ApacheDSConfigurationPluginConstants.IMG_VERTICAL_ORIENTATION ) );
+
+ form.getToolBarManager().add( horizontalAction );
+ form.getToolBarManager().add( verticalAction );
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.forms.MasterDetailsBlock#registerPages(org.eclipse.ui.forms.DetailsPart)
+ */
+ protected void registerPages( DetailsPart detailsPart )
+ {
+ detailsPage = new InterceptorDetailsPage( this );
+ detailsPart.registerPage( InterceptorEnum.class, detailsPage );
+ }
+
+
+ /**
+ * Sets the Editor as dirty.
+ */
+ public void setEditorDirty()
+ {
+ ( ( ServerConfigurationEditor ) page.getEditor() ).setDirty( true );
+ }
+
+
+ /**
+ * Saves the necessary elements to the input model.
+ */
+ public void save()
+ {
+ detailsPage.commit( true );
+ viewer.setInput( interceptors );
+ }
+}
Added: directory/studio/trunk/plugins/apacheds.configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v157/InterceptorsPage.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/apacheds.configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v157/InterceptorsPage.java?rev=995368&view=auto
==============================================================================
--- directory/studio/trunk/plugins/apacheds.configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v157/InterceptorsPage.java (added)
+++ directory/studio/trunk/plugins/apacheds.configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v157/InterceptorsPage.java Thu Sep 9 10:11:43 2010
@@ -0,0 +1,87 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.directory.studio.apacheds.configuration.editor.v157;
+
+
+import org.apache.directory.studio.apacheds.configuration.ApacheDSConfigurationPluginConstants;
+import org.apache.directory.studio.apacheds.configuration.editor.SaveableFormPage;
+import org.apache.directory.studio.apacheds.configuration.editor.ServerConfigurationEditor;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.forms.IManagedForm;
+import org.eclipse.ui.forms.editor.FormEditor;
+import org.eclipse.ui.forms.editor.FormPage;
+import org.eclipse.ui.forms.widgets.ScrolledForm;
+
+
+/**
+ * This class represents the Interceptors Page of the Server Configuration Editor.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class InterceptorsPage extends FormPage implements SaveableFormPage
+{
+ /** The Page ID*/
+ public static final String ID = ServerConfigurationEditor.ID + ".V157.InterceptorsPage"; //$NON-NLS-1$
+
+ /** The Page Title */
+ private static final String TITLE = Messages.getString( "InterceptorsPage.Interceptors" ); //$NON-NLS-1$
+
+ /** The Master/Details Block */
+ private InterceptorsMasterDetailsBlock masterDetailsBlock;
+
+
+ /**
+ * Creates a new instance of InterceptorsPage.
+ *
+ * @param editor
+ * the associated editor
+ */
+ public InterceptorsPage( FormEditor editor )
+ {
+ super( editor, ID, TITLE );
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.forms.editor.FormPage#createFormContent(org.eclipse.ui.forms.IManagedForm)
+ */
+ protected void createFormContent( IManagedForm managedForm )
+ {
+ PlatformUI.getWorkbench().getHelpSystem().setHelp( getPartControl(),
+ ApacheDSConfigurationPluginConstants.PLUGIN_ID + "." + "configuration_editor_157" ); //$NON-NLS-1$ //$NON-NLS-2$
+
+ final ScrolledForm form = managedForm.getForm();
+ form.setText( Messages.getString( "InterceptorsPage.Interceptors" ) ); //$NON-NLS-1$
+ masterDetailsBlock = new InterceptorsMasterDetailsBlock( this );
+ masterDetailsBlock.createContent( managedForm );
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.studio.apacheds.configuration.editor.SavableWizardPage#save()
+ */
+ public void save()
+ {
+ if ( masterDetailsBlock != null )
+ {
+ masterDetailsBlock.save();
+ }
+ }
+}
Added: directory/studio/trunk/plugins/apacheds.configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v157/Messages.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/apacheds.configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v157/Messages.java?rev=995368&view=auto
==============================================================================
--- directory/studio/trunk/plugins/apacheds.configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v157/Messages.java (added)
+++ directory/studio/trunk/plugins/apacheds.configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v157/Messages.java Thu Sep 9 10:11:43 2010
@@ -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.editor.v157;
+
+
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+
+public class Messages
+{
+ private static final String BUNDLE_NAME = "org.apache.directory.studio.apacheds.configuration.editor.v157.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/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v157/PartitionDetailsPage.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/apacheds.configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v157/PartitionDetailsPage.java?rev=995368&view=auto
==============================================================================
--- directory/studio/trunk/plugins/apacheds.configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v157/PartitionDetailsPage.java (added)
+++ directory/studio/trunk/plugins/apacheds.configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v157/PartitionDetailsPage.java Thu Sep 9 10:11:43 2010
@@ -0,0 +1,495 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.directory.studio.apacheds.configuration.editor.v157;
+
+
+import java.util.List;
+
+import org.apache.directory.studio.apacheds.configuration.editor.v157.dialogs.IndexedAttributeDialog;
+import org.apache.directory.studio.apacheds.configuration.model.v157.IndexedAttribute;
+import org.apache.directory.studio.apacheds.configuration.model.v157.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;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.forms.IDetailsPage;
+import org.eclipse.ui.forms.IFormPart;
+import org.eclipse.ui.forms.IManagedForm;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.Section;
+import org.eclipse.ui.forms.widgets.TableWrapData;
+import org.eclipse.ui.forms.widgets.TableWrapLayout;
+
+
+/**
+ * This class represents the Details Page of the Server Configuration Editor for the Partition type
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+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;
+
+ /** The dirty flag */
+ private boolean dirty = false;
+
+ // UI fields
+ private Text idText;
+ private Text cacheSizeText;
+ private Text suffixText;
+ private Button enableOptimizerCheckbox;
+ private Button synchOnWriteCheckbox;
+ 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();
+ dirty = true;
+ }
+ };
+
+ /** The Checkbox Selection Listener */
+ private SelectionListener checkboxSelectionListener = new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ masterDetailsBlock.setEditorDirty();
+ dirty = true;
+ }
+ };
+
+ /** 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 ) ); //$NON-NLS-1$
+ if ( Dialog.OK == dialog.open() )
+ {
+ indexedAttributes.add( dialog.getIndexedAttribute() );
+ indexedAttributesTableViewer.refresh();
+ masterDetailsBlock.setEditorDirty();
+ dirty = true;
+ }
+ }
+ };
+
+ /** 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();
+ dirty = true;
+ }
+ }
+ };
+
+
+ /**
+ * Creates a new instance of PartitionDetailsPage.
+ *
+ * @param pmdb
+ * the associated Master Details Block
+ */
+ public PartitionDetailsPage( PartitionsMasterDetailsBlock pmdb )
+ {
+ masterDetailsBlock = pmdb;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.forms.IDetailsPage#createContents(org.eclipse.swt.widgets.Composite)
+ */
+ public void createContents( Composite parent )
+ {
+ FormToolkit toolkit = mform.getToolkit();
+ TableWrapLayout layout = new TableWrapLayout();
+ layout.topMargin = 5;
+ layout.leftMargin = 5;
+ layout.rightMargin = 2;
+ layout.bottomMargin = 2;
+ parent.setLayout( layout );
+
+ createDetailsSection( parent, toolkit );
+ createIndexedAttributesSection( parent, toolkit );
+ }
+
+
+ /**
+ * Creates the Details Section
+ *
+ * @param parent
+ * the parent composite
+ * @param toolkit
+ * the toolkit to use
+ */
+ private void createDetailsSection( Composite parent, FormToolkit toolkit )
+ {
+ Section section = toolkit.createSection( parent, Section.DESCRIPTION | Section.TITLE_BAR );
+ section.marginWidth = 10;
+ section.setText( Messages.getString( "PartitionDetailsPage.PartitionDetails" ) ); //$NON-NLS-1$
+ section.setDescription( Messages.getString( "PartitionDetailsPage.PartitionsDetailsDescription" ) ); //$NON-NLS-1$
+ TableWrapData td = new TableWrapData( TableWrapData.FILL, TableWrapData.TOP );
+ td.grabHorizontal = true;
+ section.setLayoutData( td );
+ Composite client = toolkit.createComposite( section );
+ toolkit.paintBordersFor( client );
+ GridLayout glayout = new GridLayout( 3, false );
+ client.setLayout( glayout );
+ section.setClient( client );
+
+ // ID
+ toolkit.createLabel( client, Messages.getString( "PartitionDetailsPage.ID" ) ); //$NON-NLS-1$
+ idText = toolkit.createText( client, "" ); //$NON-NLS-1$
+ idText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false, 2, 1 ) );
+
+ // Cache Size
+ toolkit.createLabel( client, Messages.getString( "PartitionDetailsPage.CacheSize" ) ); //$NON-NLS-1$
+ cacheSizeText = toolkit.createText( client, "" ); //$NON-NLS-1$
+ 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
+ toolkit.createLabel( client, Messages.getString( "PartitionDetailsPage.Suffix" ) ); //$NON-NLS-1$
+ suffixText = toolkit.createText( client, "" ); //$NON-NLS-1$
+ suffixText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false, 2, 1 ) );
+
+ // Enable Optimizer
+ enableOptimizerCheckbox = toolkit.createButton( client, Messages
+ .getString( "PartitionDetailsPage.EnableOptimizer" ), SWT.CHECK ); //$NON-NLS-1$
+ enableOptimizerCheckbox.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false, 3, 1 ) );
+
+ // Synchronisation On Write
+ synchOnWriteCheckbox = toolkit.createButton( client, Messages
+ .getString( "PartitionDetailsPage.SynchronizationOnWrite" ), SWT.CHECK ); //$NON-NLS-1$
+ synchOnWriteCheckbox.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false, 3, 1 ) );
+ }
+
+
+ /**
+ * Creates the Indexed Attributes Section
+ *
+ * @param parent
+ * the parent composite
+ * @param toolkit
+ * the toolkit to use
+ */
+ private void createIndexedAttributesSection( Composite parent, FormToolkit toolkit )
+ {
+ Section indexedAttributesSection = toolkit.createSection( parent, Section.DESCRIPTION | Section.TITLE_BAR );
+ indexedAttributesSection.marginWidth = 10;
+ indexedAttributesSection.setText( Messages.getString( "PartitionDetailsPage.IndexedAttributes" ) ); //$NON-NLS-1$
+ indexedAttributesSection.setDescription( Messages
+ .getString( "PartitionDetailsPage.IndexedAttributesDescription" ) ); //$NON-NLS-1$
+ indexedAttributesSection.setLayoutData( new TableWrapData( TableWrapData.FILL ) );
+ Composite indexedAttributesClient = toolkit.createComposite( indexedAttributesSection );
+ toolkit.paintBordersFor( indexedAttributesClient );
+ indexedAttributesClient.setLayout( new GridLayout( 2, false ) );
+ indexedAttributesSection.setClient( indexedAttributesClient );
+
+ 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;
+
+ indexedAttributeAddButton = toolkit.createButton( indexedAttributesClient, Messages
+ .getString( "PartitionDetailsPage.Add" ), SWT.PUSH ); //$NON-NLS-1$
+ indexedAttributeAddButton.setLayoutData( buttonsGD );
+
+ indexedAttributeEditButton = toolkit.createButton( indexedAttributesClient, Messages
+ .getString( "PartitionDetailsPage.Edit" ), SWT.PUSH ); //$NON-NLS-1$
+ indexedAttributeEditButton.setEnabled( false );
+ indexedAttributeEditButton.setLayoutData( buttonsGD );
+
+ indexedAttributeDeleteButton = toolkit.createButton( indexedAttributesClient, Messages
+ .getString( "PartitionDetailsPage.Delete" ), SWT.PUSH ); //$NON-NLS-1$
+ indexedAttributeDeleteButton.setEnabled( false );
+ indexedAttributeDeleteButton.setLayoutData( buttonsGD );
+ }
+
+
+ /**
+ * Adds listeners to UI fields.
+ */
+ private void addListeners()
+ {
+ idText.addModifyListener( textModifyListener );
+ cacheSizeText.addModifyListener( textModifyListener );
+ suffixText.addModifyListener( textModifyListener );
+ enableOptimizerCheckbox.addSelectionListener( checkboxSelectionListener );
+ synchOnWriteCheckbox.addSelectionListener( checkboxSelectionListener );
+
+ indexedAttributesTableViewer.addSelectionChangedListener( indexedAttributesTableViewerListener );
+ indexedAttributesTableViewer.addDoubleClickListener( indexedAttributesTableViewerDoubleClickListener );
+ indexedAttributeAddButton.addSelectionListener( indexedAttributeAddButtonListener );
+ indexedAttributeEditButton.addSelectionListener( indexedAttributeEditButtonListener );
+ indexedAttributeDeleteButton.addSelectionListener( indexedAttributeDeleteButtonListener );
+ }
+
+
+ /**
+ * Removes listeners to UI fields.
+ */
+ private void removeListeners()
+ {
+ idText.removeModifyListener( textModifyListener );
+ cacheSizeText.removeModifyListener( textModifyListener );
+ suffixText.removeModifyListener( textModifyListener );
+ enableOptimizerCheckbox.removeSelectionListener( checkboxSelectionListener );
+ synchOnWriteCheckbox.removeSelectionListener( checkboxSelectionListener );
+
+ 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)
+ */
+ public void selectionChanged( IFormPart part, ISelection selection )
+ {
+ IStructuredSelection ssel = ( IStructuredSelection ) selection;
+ if ( ssel.size() == 1 )
+ {
+ input = ( Partition ) ssel.getFirstElement();
+ }
+ else
+ {
+ input = null;
+ }
+ refresh();
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.forms.IFormPart#commit(boolean)
+ */
+ public void commit( boolean onSave )
+ {
+ if ( input != null )
+ {
+ input.setId( idText.getText() );
+ input.setCacheSize( Integer.parseInt( cacheSizeText.getText() ) );
+ input.setSuffix( suffixText.getText() );
+ input.setEnableOptimizer( enableOptimizerCheckbox.getSelection() );
+ input.setSynchronizationOnWrite( synchOnWriteCheckbox.getSelection() );
+ }
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.forms.IFormPart#dispose()
+ */
+ public void dispose()
+ {
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.forms.IFormPart#initialize(org.eclipse.ui.forms.IManagedForm)
+ */
+ public void initialize( IManagedForm form )
+ {
+ this.mform = form;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.forms.IFormPart#isDirty()
+ */
+ public boolean isDirty()
+ {
+ return dirty;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.forms.IFormPart#isStale()
+ */
+ public boolean isStale()
+ {
+ return false;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.forms.IFormPart#refresh()
+ */
+ public void refresh()
+ {
+ removeListeners();
+
+ // ID
+ String id = input.getId();
+ idText.setText( ( id == null ) ? "" : id ); //$NON-NLS-1$
+
+ // Cache Size
+ cacheSizeText.setText( "" + input.getCacheSize() ); //$NON-NLS-1$
+
+ // Suffix
+ String suffix = input.getSuffix();
+ suffixText.setText( ( suffix == null ) ? "" : suffix ); //$NON-NLS-1$
+
+ // Enable Optimizer
+ enableOptimizerCheckbox.setSelection( input.isEnableOptimizer() );
+
+ // Synchronization on write
+ synchOnWriteCheckbox.setSelection( input.isSynchronizationOnWrite() );
+
+ // Indexed Attributes
+ indexedAttributes = input.getIndexedAttributes();
+ indexedAttributesTableViewer.setInput( indexedAttributes );
+
+ addListeners();
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.forms.IFormPart#setFocus()
+ */
+ public void setFocus()
+ {
+ idText.setFocus();
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.forms.IFormPart#setFormInput(java.lang.Object)
+ */
+ 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();
+ dirty = true;
+ }
+ }
+ }
+}