Return-Path: Delivered-To: apmail-directory-commits-archive@www.apache.org Received: (qmail 86394 invoked from network); 10 Jul 2008 17:37:27 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 10 Jul 2008 17:37:27 -0000 Received: (qmail 64104 invoked by uid 500); 10 Jul 2008 17:37:27 -0000 Delivered-To: apmail-directory-commits-archive@directory.apache.org Received: (qmail 64074 invoked by uid 500); 10 Jul 2008 17:37:27 -0000 Mailing-List: contact commits-help@directory.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@directory.apache.org Delivered-To: mailing list commits@directory.apache.org Received: (qmail 64065 invoked by uid 99); 10 Jul 2008 17:37:27 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 10 Jul 2008 10:37:27 -0700 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED,FUZZY_CPILL X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 10 Jul 2008 17:36:41 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 342C62388A04; Thu, 10 Jul 2008 10:36:34 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r675657 [1/6] - in /directory/studio/trunk/apacheds-configuration/src/main: java/org/apache/directory/studio/apacheds/configuration/ java/org/apache/directory/studio/apacheds/configuration/editor/ java/org/apache/directory/studio/apacheds/c... Date: Thu, 10 Jul 2008 17:36:31 -0000 To: commits@directory.apache.org From: pamarcelot@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20080710173634.342C62388A04@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: pamarcelot Date: Thu Jul 10 10:36:30 2008 New Revision: 675657 URL: http://svn.apache.org/viewvc?rev=675657&view=rev Log: Added support for Apache DS 1.5.3 configuration file. (still need to parse correctly the FQCN of the NTLM Provider). Added: directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v153/ directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v153/AuthenticationPage.java directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v153/ExtendedOperationDetailsPage.java directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v153/ExtendedOperationsMasterDetailsBlock.java directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v153/ExtendedOperationsPage.java directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v153/GeneralPage.java directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v153/InterceptorDetailsPage.java directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v153/InterceptorsMasterDetailsBlock.java directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v153/InterceptorsPage.java directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v153/PartitionDetailsPage.java directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v153/PartitionsMasterDetailsBlock.java directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v153/PartitionsPage.java directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v153/dialogs/ directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v153/dialogs/AttributeValueDialog.java directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v153/dialogs/AttributeValueObject.java directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v153/dialogs/ExtendedOperationDialog.java directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v153/dialogs/IndexedAttributeDialog.java directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v153/dialogs/InterceptorDialog.java directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v153/dialogs/NtlmProviderDialog.java directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v153/dialogs/SaslRealmDialog.java directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/v153/ directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/v153/ExtendedOperationEnum.java directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/v153/IndexedAttribute.java directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/v153/InterceptorConfiguration.java directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/v153/InterceptorEnum.java directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/v153/Partition.java directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/v153/ReplicationInterceptorConfiguration.java directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/v153/SaslQualityOfProtectionEnum.java directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/v153/ServerConfigurationV153.java directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/v153/ServerXmlIOV153.java directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/v153/SupportedMechanismEnum.java directory/studio/trunk/apacheds-configuration/src/main/resources/org/apache/directory/studio/apacheds/configuration/default-server-1.5.3.xml Modified: directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/ApacheDSConfigurationPlugin.java directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/NonExistingServerConfigurationInput.java directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/ServerConfigurationEditor.java directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/model/ServerConfigurationVersionEnum.java directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/wizards/NewApacheDSConfigurationFileWizard.java directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/wizards/NewApacheDSConfigurationFileWizardPage.java Modified: directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/ApacheDSConfigurationPlugin.java URL: http://svn.apache.org/viewvc/directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/ApacheDSConfigurationPlugin.java?rev=675657&r1=675656&r2=675657&view=diff ============================================================================== --- directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/ApacheDSConfigurationPlugin.java (original) +++ directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/ApacheDSConfigurationPlugin.java Thu Jul 10 10:36:30 2008 @@ -39,6 +39,7 @@ import org.apache.directory.studio.apacheds.configuration.model.v150.ServerXmlIOV150; import org.apache.directory.studio.apacheds.configuration.model.v151.ServerXmlIOV151; import org.apache.directory.studio.apacheds.configuration.model.v152.ServerXmlIOV152; +import org.apache.directory.studio.apacheds.configuration.model.v153.ServerXmlIOV153; /** @@ -56,7 +57,7 @@ private static ApacheDSConfigurationPlugin plugin; private ServerXmlIO[] serverXmlIOs = new ServerXmlIO[] - { new ServerXmlIOV152(), new ServerXmlIOV151(), new ServerXmlIOV150(), }; + { new ServerXmlIOV153(), new ServerXmlIOV152(), new ServerXmlIOV151(), new ServerXmlIOV150(), }; /** Modified: directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/NonExistingServerConfigurationInput.java URL: http://svn.apache.org/viewvc/directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/NonExistingServerConfigurationInput.java?rev=675657&r1=675656&r2=675657&view=diff ============================================================================== --- directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/NonExistingServerConfigurationInput.java (original) +++ directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/NonExistingServerConfigurationInput.java Thu Jul 10 10:36:30 2008 @@ -67,17 +67,7 @@ */ public String getToolTipText() { - switch ( serverConfiguration.getVersion() ) - { - case VERSION_1_5_2: - return "New Apache DS 1.5.2 Configuration File"; - case VERSION_1_5_1: - return "New Apache DS 1.5.1 Configuration File"; - case VERSION_1_5_0: - return "New Apache DS 1.5.0 Configuration File"; - default: - return "New Apache DS Configuration File"; - } + return getNameOrToolTipText(); } @@ -86,8 +76,22 @@ */ public String getName() { + return getNameOrToolTipText(); + } + + + /** + * Returns the name or tooltip text. + * + * @return + * the name or tooltip text + */ + private String getNameOrToolTipText() + { switch ( serverConfiguration.getVersion() ) { + case VERSION_1_5_3: + return "New Apache DS 1.5.3 Configuration File"; case VERSION_1_5_2: return "New Apache DS 1.5.2 Configuration File"; case VERSION_1_5_1: Modified: directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/ServerConfigurationEditor.java URL: http://svn.apache.org/viewvc/directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/ServerConfigurationEditor.java?rev=675657&r1=675656&r2=675657&view=diff ============================================================================== --- directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/ServerConfigurationEditor.java (original) +++ directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/ServerConfigurationEditor.java Thu Jul 10 10:36:30 2008 @@ -38,6 +38,7 @@ import org.apache.directory.studio.apacheds.configuration.model.v150.ServerXmlIOV150; import org.apache.directory.studio.apacheds.configuration.model.v151.ServerXmlIOV151; import org.apache.directory.studio.apacheds.configuration.model.v152.ServerXmlIOV152; +import org.apache.directory.studio.apacheds.configuration.model.v153.ServerXmlIOV153; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; @@ -140,6 +141,9 @@ // Setting the ServerXmlIO class switch ( serverConfiguration.getVersion() ) { + case VERSION_1_5_3: + serverXmlIO = new ServerXmlIOV153(); + break; case VERSION_1_5_2: serverXmlIO = new ServerXmlIOV152(); break; @@ -222,6 +226,27 @@ { switch ( serverConfiguration.getVersion() ) { + case VERSION_1_5_3: + generalPage = new org.apache.directory.studio.apacheds.configuration.editor.v153.GeneralPage( + this ); + addPage( generalPage ); + + authenticationPage = new org.apache.directory.studio.apacheds.configuration.editor.v153.AuthenticationPage( + this ); + addPage( authenticationPage ); + + partitionsPage = new org.apache.directory.studio.apacheds.configuration.editor.v153.PartitionsPage( + this ); + addPage( partitionsPage ); + + interceptorsPage = new org.apache.directory.studio.apacheds.configuration.editor.v153.InterceptorsPage( + this ); + addPage( interceptorsPage ); + + extendedOperationsPage = new org.apache.directory.studio.apacheds.configuration.editor.v153.ExtendedOperationsPage( + this ); + addPage( extendedOperationsPage ); + break; case VERSION_1_5_2: generalPage = new org.apache.directory.studio.apacheds.configuration.editor.v152.GeneralPage( this ); Added: directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v153/AuthenticationPage.java URL: http://svn.apache.org/viewvc/directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v153/AuthenticationPage.java?rev=675657&view=auto ============================================================================== --- directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v153/AuthenticationPage.java (added) +++ directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v153/AuthenticationPage.java Thu Jul 10 10:36:30 2008 @@ -0,0 +1,618 @@ +/* + * 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.v153; + + +import java.util.ArrayList; +import java.util.List; + +import org.apache.directory.studio.apacheds.configuration.editor.SaveableFormPage; +import org.apache.directory.studio.apacheds.configuration.editor.ServerConfigurationEditor; +import org.apache.directory.studio.apacheds.configuration.editor.v153.dialogs.NtlmProviderDialog; +import org.apache.directory.studio.apacheds.configuration.editor.v153.dialogs.SaslRealmDialog; +import org.apache.directory.studio.apacheds.configuration.model.v153.SaslQualityOfProtectionEnum; +import org.apache.directory.studio.apacheds.configuration.model.v153.ServerConfigurationV153; +import org.apache.directory.studio.apacheds.configuration.model.v153.SupportedMechanismEnum; +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.viewers.ArrayContentProvider; +import org.eclipse.jface.viewers.CheckStateChangedEvent; +import org.eclipse.jface.viewers.CheckboxTableViewer; +import org.eclipse.jface.viewers.DoubleClickEvent; +import org.eclipse.jface.viewers.ICheckStateListener; +import org.eclipse.jface.viewers.IDoubleClickListener; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.ModifyEvent; +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Table; +import org.eclipse.swt.widgets.Text; +import org.eclipse.ui.forms.IManagedForm; +import org.eclipse.ui.forms.editor.FormEditor; +import org.eclipse.ui.forms.editor.FormPage; +import org.eclipse.ui.forms.widgets.FormToolkit; +import org.eclipse.ui.forms.widgets.ScrolledForm; +import org.eclipse.ui.forms.widgets.Section; +import org.eclipse.ui.forms.widgets.TableWrapData; +import org.eclipse.ui.forms.widgets.TableWrapLayout; + + +/** + * This class represents the Authentication Page of the Server Configuration Editor. + * + * @author Apache Directory Project + * @version $Rev$, $Date$ + */ +public class AuthenticationPage extends FormPage implements SaveableFormPage +{ + /** The Page ID */ + public static final String ID = ServerConfigurationEditor.ID + ".V153.AuthenticationPage"; + + /** The Page Title */ + private static final String TITLE = "Authentication"; + + private List saslRealms; + + // UI Fields + private CheckboxTableViewer supportedMechanismsTableViewer; + private Button selectAllSupportedMechanismsButton; + private Button deselectAllSupportedMechanismsButton; + private Button editSupportedMechanismButton; + private Text saslHostText; + private Text saslPrincipalText; + private Text searchBaseDnText; + private CheckboxTableViewer saslQualityOfProtectionTableViewer; + private Button selectAllQualityOfProtectionButton; + private Button deselectAllQualityOfProtectionButton; + private CheckboxTableViewer saslRealmsTableViewer; + private Button addSaslRealmButton; + private Button editSaslRealmsButton; + private Button deleteSaslRealmButton; + + + /** + * Creates a new instance of AuthenticationPage. + * + * @param editor + * the associated editor + */ + public AuthenticationPage( FormEditor editor ) + { + super( editor, ID, TITLE ); + saslRealms = new ArrayList(); + } + + + /* (non-Javadoc) + * @see org.eclipse.ui.forms.editor.FormPage#createFormContent(org.eclipse.ui.forms.IManagedForm) + */ + protected void createFormContent( IManagedForm managedForm ) + { + ScrolledForm form = managedForm.getForm(); + form.setText( "Authentication" ); + + Composite parent = form.getBody(); + parent.setLayout( new TableWrapLayout() ); + FormToolkit toolkit = managedForm.getToolkit(); + + Composite composite = toolkit.createComposite( parent ); + composite.setLayout( new GridLayout() ); + TableWrapData compositeTableWrapData = new TableWrapData( TableWrapData.FILL, TableWrapData.TOP ); + compositeTableWrapData.grabHorizontal = true; + composite.setLayoutData( compositeTableWrapData ); + + createSupportedAuthenticationMechanismsSection( composite, toolkit ); + createSaslSettingsSection( composite, toolkit ); + createSaslQualityOfProtectionSection( composite, toolkit ); + createSaslRealmsSection( composite, toolkit ); + + initFromInput(); + addListeners(); + } + + + /** + * Creates the Supported Authentication Mechanisms Section + * + * @param parent + * the parent composite + * @param toolkit + * the toolkit to use + */ + private void createSupportedAuthenticationMechanismsSection( Composite parent, FormToolkit toolkit ) + { + // Creation of the section + Section section = toolkit.createSection( parent, Section.TITLE_BAR ); + section.setText( "Supported Authentication Mechanisms" ); + section.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) ); + Composite client = toolkit.createComposite( section ); + toolkit.paintBordersFor( client ); + GridLayout glayout = new GridLayout( 2, false ); + client.setLayout( glayout ); + section.setClient( client ); + + // Supported Authentication Mechanisms Table + Table supportedMechanismsTable = toolkit.createTable( client, SWT.CHECK ); + GridData gd = new GridData( SWT.FILL, SWT.NONE, true, false, 1, 3 ); + gd.heightHint = 110; + supportedMechanismsTable.setLayoutData( gd ); + supportedMechanismsTableViewer = new CheckboxTableViewer( supportedMechanismsTable ); + supportedMechanismsTableViewer.setContentProvider( new ArrayContentProvider() ); + supportedMechanismsTableViewer.setInput( new SupportedMechanismEnum[] + { SupportedMechanismEnum.SIMPLE, SupportedMechanismEnum.CRAM_MD5, SupportedMechanismEnum.DIGEST_MD5, + SupportedMechanismEnum.GSSAPI, SupportedMechanismEnum.NTLM, SupportedMechanismEnum.GSS_SPNEGO } ); + + // Edit Button + editSupportedMechanismButton = toolkit.createButton( client, "Edit...", SWT.PUSH ); + editSupportedMechanismButton.setLayoutData( new GridData( SWT.FILL, SWT.BEGINNING, false, false ) ); + editSupportedMechanismButton.setEnabled( false ); + + // Select All Button + selectAllSupportedMechanismsButton = toolkit.createButton( client, "Select All", SWT.PUSH ); + selectAllSupportedMechanismsButton.setLayoutData( new GridData( SWT.FILL, SWT.BEGINNING, false, false ) ); + + // Deselect All Button + deselectAllSupportedMechanismsButton = toolkit.createButton( client, "Deselect All", SWT.PUSH ); + deselectAllSupportedMechanismsButton.setLayoutData( new GridData( SWT.FILL, SWT.BEGINNING, false, false ) ); + } + + + /** + * Creates the SASL Settings Section + * + * @param parent + * the parent composite + * @param toolkit + * the toolkit to use + */ + private void createSaslSettingsSection( Composite parent, FormToolkit toolkit ) + { + // Creation of the section + Section section = toolkit.createSection( parent, Section.TITLE_BAR ); + section.setText( "SASL Settings" ); + section.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) ); + Composite client = toolkit.createComposite( section ); + toolkit.paintBordersFor( client ); + GridLayout glayout = new GridLayout( 2, false ); + client.setLayout( glayout ); + section.setClient( client ); + + // SASL Host + toolkit.createLabel( client, "SASL Host:" ); + saslHostText = toolkit.createText( client, "" ); + saslHostText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) ); + + // SASL Principal + toolkit.createLabel( client, "SASL Principal:" ); + saslPrincipalText = toolkit.createText( client, "" ); + saslPrincipalText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) ); + + // Search Base DN + toolkit.createLabel( client, "Search Base DN:" ); + searchBaseDnText = toolkit.createText( client, "" ); + searchBaseDnText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) ); + } + + + /** + * Creates the SASL Quality Of Protection Section + * + * @param parent + * the parent composite + * @param toolkit + * the toolkit to use + */ + private void createSaslQualityOfProtectionSection( Composite parent, FormToolkit toolkit ) + { + // Creation of the section + Section section = toolkit.createSection( parent, Section.TITLE_BAR ); + section.setText( "SASL Quality Of Protection" ); + section.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) ); + Composite client = toolkit.createComposite( section ); + toolkit.paintBordersFor( client ); + GridLayout glayout = new GridLayout( 2, false ); + client.setLayout( glayout ); + section.setClient( client ); + + // SASL Quality Of Protection Table + Table saslQualityOfProtectionTable = toolkit.createTable( client, SWT.CHECK ); + GridData gd = new GridData( SWT.FILL, SWT.NONE, true, false, 1, 3 ); + gd.heightHint = 57; + saslQualityOfProtectionTable.setLayoutData( gd ); + saslQualityOfProtectionTableViewer = new CheckboxTableViewer( saslQualityOfProtectionTable ); + saslQualityOfProtectionTableViewer.setContentProvider( new ArrayContentProvider() ); + saslQualityOfProtectionTableViewer.setInput( new SaslQualityOfProtectionEnum[] + { SaslQualityOfProtectionEnum.AUTH, SaslQualityOfProtectionEnum.AUTH_INT, + SaslQualityOfProtectionEnum.AUTH_CONF } ); + + // Select All Button + selectAllQualityOfProtectionButton = toolkit.createButton( client, "Select All", SWT.PUSH ); + selectAllQualityOfProtectionButton.setLayoutData( new GridData( SWT.FILL, SWT.BEGINNING, false, false ) ); + + // Deselect All Button + deselectAllQualityOfProtectionButton = toolkit.createButton( client, "Deselect All", SWT.PUSH ); + deselectAllQualityOfProtectionButton.setLayoutData( new GridData( SWT.FILL, SWT.BEGINNING, false, false ) ); + } + + + /** + * Creates the SASL Realms Section + * + * @param parent + * the parent composite + * @param toolkit + * the toolkit to use + */ + private void createSaslRealmsSection( Composite parent, FormToolkit toolkit ) + { + // Creation of the section + Section section = toolkit.createSection( parent, Section.TITLE_BAR ); + section.setText( "SASL Realms" ); + section.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) ); + Composite client = toolkit.createComposite( section ); + toolkit.paintBordersFor( client ); + GridLayout glayout = new GridLayout( 2, false ); + client.setLayout( glayout ); + section.setClient( client ); + + // SASL Realms Table + Table saslRealmsTable = toolkit.createTable( client, SWT.NONE ); + GridData gd = new GridData( SWT.FILL, SWT.NONE, true, false, 1, 3 ); + gd.heightHint = 82; + saslRealmsTable.setLayoutData( gd ); + saslRealmsTableViewer = new CheckboxTableViewer( saslRealmsTable ); + saslRealmsTableViewer.setContentProvider( new ArrayContentProvider() ); + + // Add Button + addSaslRealmButton = toolkit.createButton( client, "Add...", SWT.PUSH ); + addSaslRealmButton.setLayoutData( new GridData( SWT.FILL, SWT.BEGINNING, false, false ) ); + + // Edit Button + editSaslRealmsButton = toolkit.createButton( client, "Edit...", SWT.PUSH ); + editSaslRealmsButton.setLayoutData( new GridData( SWT.FILL, SWT.BEGINNING, false, false ) ); + editSaslRealmsButton.setEnabled( false ); + + // Delete Button + deleteSaslRealmButton = toolkit.createButton( client, "Delete", SWT.PUSH ); + deleteSaslRealmButton.setLayoutData( new GridData( SWT.FILL, SWT.BEGINNING, false, false ) ); + deleteSaslRealmButton.setEnabled( false ); + } + + + /** + * Initializes the page with the Editor input. + */ + private void initFromInput() + { + ServerConfigurationV153 configuration = ( ServerConfigurationV153 ) ( ( ServerConfigurationEditor ) getEditor() ) + .getServerConfiguration(); + + // Supported Authentication Mechanisms + supportedMechanismsTableViewer.setCheckedElements( configuration.getSupportedMechanisms().toArray() ); + + // SASL Host + saslHostText.setText( configuration.getSaslHost() ); + + // SASL Principal + saslPrincipalText.setText( configuration.getSaslPrincipal() ); + + // Search Base DN + searchBaseDnText.setText( configuration.getSearchBaseDn() ); + + // SASL Quality Of Protection + saslQualityOfProtectionTableViewer.setCheckedElements( configuration.getSaslQops().toArray() ); + + // SASL Realms + saslRealms.addAll( configuration.getSaslRealms() ); + saslRealmsTableViewer.setInput( saslRealms ); + } + + + /** + * Add listeners to UI fields. + */ + private void addListeners() + { + // The Modify Listener + ModifyListener modifyListener = new ModifyListener() + { + public void modifyText( ModifyEvent e ) + { + setEditorDirty(); + } + }; + + // Supported Authentication Mechanisms + supportedMechanismsTableViewer.addSelectionChangedListener( new ISelectionChangedListener() + { + public void selectionChanged( SelectionChangedEvent event ) + { + StructuredSelection selection = ( StructuredSelection ) supportedMechanismsTableViewer.getSelection(); + if ( !selection.isEmpty() ) + { + SupportedMechanismEnum selected = ( SupportedMechanismEnum ) selection.getFirstElement(); + editSupportedMechanismButton + .setEnabled( ( SupportedMechanismEnum.NTLM.equals( selected ) || SupportedMechanismEnum.GSS_SPNEGO + .equals( selected ) ) ); + } + else + { + editSupportedMechanismButton.setEnabled( false ); + } + } + } ); + supportedMechanismsTableViewer.addDoubleClickListener( new IDoubleClickListener() + { + public void doubleClick( DoubleClickEvent event ) + { + editSelectedSupportedMechanism(); + } + } ); + editSupportedMechanismButton.addSelectionListener( new SelectionAdapter() + { + public void widgetSelected( SelectionEvent e ) + { + editSelectedSupportedMechanism(); + } + } ); + selectAllSupportedMechanismsButton.addSelectionListener( new SelectionAdapter() + { + public void widgetSelected( SelectionEvent e ) + { + supportedMechanismsTableViewer.setAllChecked( true ); + setEditorDirty(); + } + } ); + deselectAllSupportedMechanismsButton.addSelectionListener( new SelectionAdapter() + { + public void widgetSelected( SelectionEvent e ) + { + supportedMechanismsTableViewer.setAllChecked( false ); + setEditorDirty(); + } + } ); + supportedMechanismsTableViewer.addCheckStateListener( new ICheckStateListener() + { + public void checkStateChanged( CheckStateChangedEvent event ) + { + setEditorDirty(); + } + } ); + + // SASL Host + saslHostText.addModifyListener( modifyListener ); + + // SASL Principal + saslPrincipalText.addModifyListener( modifyListener ); + + // Search Base DN + searchBaseDnText.addModifyListener( modifyListener ); + + // SASL Quality Of Protection + selectAllQualityOfProtectionButton.addSelectionListener( new SelectionAdapter() + { + public void widgetSelected( SelectionEvent e ) + { + saslQualityOfProtectionTableViewer.setAllChecked( true ); + setEditorDirty(); + } + } ); + deselectAllQualityOfProtectionButton.addSelectionListener( new SelectionAdapter() + { + public void widgetSelected( SelectionEvent e ) + { + saslQualityOfProtectionTableViewer.setAllChecked( false ); + setEditorDirty(); + } + } ); + saslQualityOfProtectionTableViewer.addCheckStateListener( new ICheckStateListener() + { + public void checkStateChanged( CheckStateChangedEvent event ) + { + setEditorDirty(); + } + } ); + + // SASL Realms + saslRealmsTableViewer.addSelectionChangedListener( new ISelectionChangedListener() + { + public void selectionChanged( SelectionChangedEvent event ) + { + editSaslRealmsButton.setEnabled( !event.getSelection().isEmpty() ); + deleteSaslRealmButton.setEnabled( !event.getSelection().isEmpty() ); + } + } ); + saslRealmsTableViewer.addDoubleClickListener( new IDoubleClickListener() + { + public void doubleClick( DoubleClickEvent event ) + { + editSelectedSaslRealm(); + } + } ); + addSaslRealmButton.addSelectionListener( new SelectionAdapter() + { + public void widgetSelected( SelectionEvent e ) + { + SaslRealmDialog dialog = new SaslRealmDialog( "" ); + if ( Dialog.OK == dialog.open() && dialog.isDirty() ) + { + String newSaslRealm = dialog.getSaslRealm(); + if ( newSaslRealm != null && !"".equals( newSaslRealm ) && !saslRealms.contains( newSaslRealm ) ) + { + saslRealms.add( newSaslRealm ); + + saslRealmsTableViewer.refresh(); + setEditorDirty(); + } + } + } + } ); + editSaslRealmsButton.addSelectionListener( new SelectionAdapter() + { + public void widgetSelected( SelectionEvent e ) + { + editSelectedSaslRealm(); + } + } ); + + // The SelectionListener for the Binary Attributes Delete Button + deleteSaslRealmButton.addSelectionListener( new SelectionAdapter() + { + public void widgetSelected( SelectionEvent e ) + { + StructuredSelection selection = ( StructuredSelection ) saslRealmsTableViewer.getSelection(); + if ( !selection.isEmpty() ) + { + String saslRealm = ( String ) selection.getFirstElement(); + saslRealms.remove( saslRealm ); + + saslRealmsTableViewer.refresh(); + setEditorDirty(); + } + } + } ); + } + + + /** + * Opens a NTLM Provider with the selected Supported Mechanism the Supported Mechanisms Table. + */ + private void editSelectedSupportedMechanism() + { + StructuredSelection selection = ( StructuredSelection ) supportedMechanismsTableViewer.getSelection(); + if ( !selection.isEmpty() ) + { + SupportedMechanismEnum selected = ( SupportedMechanismEnum ) selection.getFirstElement(); + + if ( SupportedMechanismEnum.NTLM.equals( selected ) || SupportedMechanismEnum.GSS_SPNEGO.equals( selected ) ) + { + String oldNtlmProvider = selected.getNtlmProviderFqcn(); + + NtlmProviderDialog dialog = new NtlmProviderDialog( oldNtlmProvider ); + if ( Dialog.OK == dialog.open() && dialog.isDirty() ) + { + selected.setNtlmProviderFqcn( dialog.getNtlmProvider() ); + supportedMechanismsTableViewer.refresh(); + setEditorDirty(); + } + } + } + } + + + /** + * Opens a SASL Realm Dialog with the selected SASL Realm in the SASL + * Realms Table Viewer. + */ + private void editSelectedSaslRealm() + { + StructuredSelection selection = ( StructuredSelection ) saslRealmsTableViewer.getSelection(); + if ( !selection.isEmpty() ) + { + String oldSaslRealm = ( String ) selection.getFirstElement(); + + SaslRealmDialog dialog = new SaslRealmDialog( oldSaslRealm ); + if ( Dialog.OK == dialog.open() && dialog.isDirty() ) + { + saslRealms.remove( oldSaslRealm ); + + String newSaslRealm = dialog.getSaslRealm(); + if ( newSaslRealm != null && !"".equals( newSaslRealm ) && !saslRealms.contains( newSaslRealm ) ) + { + saslRealms.add( newSaslRealm ); + } + + saslRealmsTableViewer.refresh(); + setEditorDirty(); + } + } + } + + + /** + * Sets the Editor as dirty. + */ + private void setEditorDirty() + { + ( ( ServerConfigurationEditor ) getEditor() ).setDirty( true ); + } + + + /* (non-Javadoc) + * @see org.apache.directory.studio.apacheds.configuration.editor.SavableWizardPage#save() + */ + public void save() + { + ServerConfigurationV153 configuration = ( ServerConfigurationV153 ) ( ( ServerConfigurationEditor ) getEditor() ) + .getServerConfiguration(); + + // Supported Authentication Mechanisms + if ( ( supportedMechanismsTableViewer != null ) && ( supportedMechanismsTableViewer.getTable() != null ) + && ( !supportedMechanismsTableViewer.getTable().isDisposed() ) ) + { + List supportedMechanismsList = new ArrayList(); + for ( Object supportedMechanism : supportedMechanismsTableViewer.getCheckedElements() ) + { + supportedMechanismsList.add( ( SupportedMechanismEnum ) supportedMechanism ); + } + configuration.setSupportedMechanisms( supportedMechanismsList ); + } + + // SASL Host + if ( ( saslHostText != null ) && ( !saslHostText.isDisposed() ) ) + { + configuration.setSaslHost( saslHostText.getText() ); + } + + // SASL Principal + if ( ( saslPrincipalText != null ) && ( !saslPrincipalText.isDisposed() ) ) + { + configuration.setSaslPrincipal( saslPrincipalText.getText() ); + } + + // Search Base DN + if ( ( searchBaseDnText != null ) && ( !searchBaseDnText.isDisposed() ) ) + { + configuration.setSearchBaseDn( searchBaseDnText.getText() ); + } + + // SASL Quality Of Protection + if ( ( saslQualityOfProtectionTableViewer != null ) && ( saslQualityOfProtectionTableViewer.getTable() != null ) + && ( !saslQualityOfProtectionTableViewer.getTable().isDisposed() ) ) + { + List saslQoPList = new ArrayList(); + for ( Object qop : saslQualityOfProtectionTableViewer.getCheckedElements() ) + { + saslQoPList.add( ( SaslQualityOfProtectionEnum ) qop ); + } + configuration.setSaslQops( saslQoPList ); + } + + // SASL Realms + configuration.setSaslRealms( saslRealms ); + } +} Added: directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v153/ExtendedOperationDetailsPage.java URL: http://svn.apache.org/viewvc/directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v153/ExtendedOperationDetailsPage.java?rev=675657&view=auto ============================================================================== --- directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v153/ExtendedOperationDetailsPage.java (added) +++ directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v153/ExtendedOperationDetailsPage.java Thu Jul 10 10:36:30 2008 @@ -0,0 +1,210 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ +package org.apache.directory.studio.apacheds.configuration.editor.v153; + + +import org.apache.directory.studio.apacheds.configuration.model.v153.ExtendedOperationEnum; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Text; +import org.eclipse.ui.forms.IDetailsPage; +import org.eclipse.ui.forms.IFormPart; +import org.eclipse.ui.forms.IManagedForm; +import org.eclipse.ui.forms.widgets.FormToolkit; +import org.eclipse.ui.forms.widgets.Section; +import org.eclipse.ui.forms.widgets.TableWrapData; +import org.eclipse.ui.forms.widgets.TableWrapLayout; + + +/** + * This class represents the Details Page of the Server Configuration Editor for the Extended Operation type + * + * @author Apache Directory Project + * @version $Rev$, $Date$ + */ +public class ExtendedOperationDetailsPage implements IDetailsPage +{ + /** The Managed Form */ + private IManagedForm mform; + + /** The input Interceptor */ + private ExtendedOperationEnum input; + + /** The dirty flag */ + private boolean dirty = false; + + // UI fields + private Text nameText; + private Text descriptionText; + + + /* (non-Javadoc) + * @see org.eclipse.ui.forms.IDetailsPage#createContents(org.eclipse.swt.widgets.Composite) + */ + public void createContents( Composite parent ) + { + FormToolkit toolkit = mform.getToolkit(); + TableWrapLayout layout = new TableWrapLayout(); + layout.topMargin = 5; + layout.leftMargin = 5; + layout.rightMargin = 2; + layout.bottomMargin = 2; + parent.setLayout( layout ); + + createDetailsSection( parent, toolkit ); + } + + + /** + * Creates the Details Section + * + * @param parent + * the parent composite + * @param toolkit + * the toolkit to use + */ + private void createDetailsSection( Composite parent, FormToolkit toolkit ) + { + Section section = toolkit.createSection( parent, Section.TITLE_BAR ); + section.marginWidth = 10; + section.setText( "Extended Operation Details" ); //$NON-NLS-1$ + TableWrapData td = new TableWrapData( TableWrapData.FILL, TableWrapData.TOP ); + td.grabHorizontal = true; + section.setLayoutData( td ); + Composite client = toolkit.createComposite( section ); + toolkit.paintBordersFor( client ); + GridLayout glayout = new GridLayout( 2, false ); + client.setLayout( glayout ); + section.setClient( client ); + + // Name + toolkit.createLabel( client, "Name:" ); + nameText = toolkit.createText( client, "" ); + nameText.setEditable( false ); + nameText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) ); + + // Description + toolkit.createLabel( client, "Description:" ); + descriptionText = toolkit.createText( client, "", SWT.MULTI | SWT.WRAP | SWT.V_SCROLL ); + descriptionText.setEditable( false ); + GridData gridData = new GridData( SWT.FILL, SWT.NONE, true, false ); + gridData.widthHint = 100; + gridData.heightHint = 75; + descriptionText.setLayoutData( gridData ); + } + + + /* (non-Javadoc) + * @see org.eclipse.ui.forms.IPartSelectionListener#selectionChanged(org.eclipse.ui.forms.IFormPart, org.eclipse.jface.viewers.ISelection) + */ + public void selectionChanged( IFormPart part, ISelection selection ) + { + IStructuredSelection ssel = ( IStructuredSelection ) selection; + if ( ssel.size() == 1 ) + { + input = ( ExtendedOperationEnum ) ssel.getFirstElement(); + } + else + { + input = null; + } + refresh(); + } + + + /* (non-Javadoc) + * @see org.eclipse.ui.forms.IFormPart#commit(boolean) + */ + public void commit( boolean onSave ) + { + } + + + /* (non-Javadoc) + * @see org.eclipse.ui.forms.IFormPart#dispose() + */ + public void dispose() + { + } + + + /* (non-Javadoc) + * @see org.eclipse.ui.forms.IFormPart#initialize(org.eclipse.ui.forms.IManagedForm) + */ + public void initialize( IManagedForm form ) + { + this.mform = form; + } + + + /* (non-Javadoc) + * @see org.eclipse.ui.forms.IFormPart#isDirty() + */ + public boolean isDirty() + { + return dirty; + } + + + /* (non-Javadoc) + * @see org.eclipse.ui.forms.IFormPart#isStale() + */ + public boolean isStale() + { + return false; + } + + + /* (non-Javadoc) + * @see org.eclipse.ui.forms.IFormPart#refresh() + */ + public void refresh() + { + // Name + String name = input.getName(); + nameText.setText( ( name == null ) ? "" : name ); + + // Description + String description = input.getDescription(); + descriptionText.setText( ( description == null ) ? "" : description ); + } + + + /* (non-Javadoc) + * @see org.eclipse.ui.forms.IFormPart#setFocus() + */ + public void setFocus() + { + nameText.setFocus(); + } + + + /* (non-Javadoc) + * @see org.eclipse.ui.forms.IFormPart#setFormInput(java.lang.Object) + */ + public boolean setFormInput( Object input ) + { + return false; + } +} Added: directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v153/ExtendedOperationsMasterDetailsBlock.java URL: http://svn.apache.org/viewvc/directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v153/ExtendedOperationsMasterDetailsBlock.java?rev=675657&view=auto ============================================================================== --- directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v153/ExtendedOperationsMasterDetailsBlock.java (added) +++ directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v153/ExtendedOperationsMasterDetailsBlock.java Thu Jul 10 10:36:30 2008 @@ -0,0 +1,294 @@ +/* + * 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.v153; + + +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.v153.dialogs.ExtendedOperationDialog; +import org.apache.directory.studio.apacheds.configuration.model.v153.ExtendedOperationEnum; +import org.apache.directory.studio.apacheds.configuration.model.v153.ServerConfigurationV153; +import org.eclipse.jface.action.Action; +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.viewers.ArrayContentProvider; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Table; +import org.eclipse.ui.forms.DetailsPart; +import org.eclipse.ui.forms.IManagedForm; +import org.eclipse.ui.forms.MasterDetailsBlock; +import org.eclipse.ui.forms.SectionPart; +import org.eclipse.ui.forms.editor.FormPage; +import org.eclipse.ui.forms.widgets.FormToolkit; +import org.eclipse.ui.forms.widgets.ScrolledForm; +import org.eclipse.ui.forms.widgets.Section; + + +/** + * This class represents the Extended Operations Master/Details Block used in the Extended Operations Page. + * + * @author Apache Directory Project + * @version $Rev$, $Date$ + */ +public class ExtendedOperationsMasterDetailsBlock extends MasterDetailsBlock +{ + /** The associated page */ + private FormPage page; + + /** The input Server Configuration */ + private ServerConfigurationV153 serverConfiguration; + + /** The Extended Operations List */ + private List extendedOperations; + + /** The Details Page */ + private ExtendedOperationDetailsPage detailsPage; + + // UI Fields + private TableViewer viewer; + private Button addButton; + private Button deleteButton; + + + /** + * Creates a new instance of ExtendedOperationsMasterDetailsBlock. + * + * @param page + */ + public ExtendedOperationsMasterDetailsBlock( FormPage page ) + { + this.page = page; + serverConfiguration = ( ServerConfigurationV153 ) ( ( ServerConfigurationEditor ) page.getEditor() ) + .getServerConfiguration(); + extendedOperations = serverConfiguration.getExtendedOperations(); + } + + + /* (non-Javadoc) + * @see org.eclipse.ui.forms.MasterDetailsBlock#createMasterPart(org.eclipse.ui.forms.IManagedForm, org.eclipse.swt.widgets.Composite) + */ + protected void createMasterPart( final IManagedForm managedForm, Composite parent ) + { + FormToolkit toolkit = managedForm.getToolkit(); + + // Creating the Section + Section section = toolkit.createSection( parent, Section.TITLE_BAR ); + section.setText( "All Extended Operations" ); + section.marginWidth = 10; + section.marginHeight = 5; + Composite client = toolkit.createComposite( section, SWT.WRAP ); + GridLayout layout = new GridLayout(); + layout.numColumns = 2; + layout.makeColumnsEqualWidth = false; + layout.marginWidth = 2; + layout.marginHeight = 2; + client.setLayout( layout ); + toolkit.paintBordersFor( client ); + section.setClient( client ); + + // Creating the Table and Table Viewer + Table table = toolkit.createTable( client, SWT.NULL ); + GridData gd = new GridData( SWT.FILL, SWT.FILL, true, true, 1, 2 ); + gd.heightHint = 20; + gd.widthHint = 100; + table.setLayoutData( gd ); + final SectionPart spart = new SectionPart( section ); + managedForm.addPart( spart ); + viewer = new TableViewer( table ); + viewer.addSelectionChangedListener( new ISelectionChangedListener() + { + public void selectionChanged( SelectionChangedEvent event ) + { + managedForm.fireSelectionChanged( spart, event.getSelection() ); + } + } ); + viewer.setContentProvider( new ArrayContentProvider() ); + viewer.setLabelProvider( new LabelProvider() + { + public Image getImage( Object element ) + { + return ApacheDSConfigurationPlugin.getDefault().getImage( + ApacheDSConfigurationPluginConstants.IMG_EXTENDED_OPERATION ); + } + + + public String getText( Object element ) + { + if ( element instanceof ExtendedOperationEnum ) + { + return ( ( ExtendedOperationEnum ) element ).getName(); + + } + + return super.getText( element ); + } + } ); + + // Creating the button(s) + addButton = toolkit.createButton( client, "Add...", SWT.PUSH ); //$NON-NLS-1$ + addButton.setLayoutData( new GridData( SWT.FILL, SWT.BEGINNING, false, false ) ); + + deleteButton = toolkit.createButton( client, "Delete", SWT.PUSH ); + deleteButton.setEnabled( false ); + deleteButton.setLayoutData( new GridData( SWT.FILL, SWT.BEGINNING, false, false ) ); + + initFromInput(); + addListeners(); + } + + + /** + * Initializes the page with the Editor input. + */ + private void initFromInput() + { + viewer.setInput( extendedOperations ); + } + + + /** + * Add listeners to UI fields. + */ + private void addListeners() + { + viewer.addSelectionChangedListener( new ISelectionChangedListener() + { + public void selectionChanged( SelectionChangedEvent event ) + { + viewer.refresh(); + + deleteButton.setEnabled( !event.getSelection().isEmpty() ); + } + } ); + + addButton.addSelectionListener( new SelectionAdapter() + { + public void widgetSelected( SelectionEvent e ) + { + ExtendedOperationDialog dialog = new ExtendedOperationDialog( extendedOperations ); + if ( Dialog.OK == dialog.open() ) + { + ExtendedOperationEnum newExtendedOperation = dialog.getExtendedOperation(); + extendedOperations.add( newExtendedOperation ); + viewer.refresh(); + viewer.setSelection( new StructuredSelection( newExtendedOperation ) ); + setEditorDirty(); + } + } + } ); + + deleteButton.addSelectionListener( new SelectionAdapter() + { + public void widgetSelected( SelectionEvent e ) + { + StructuredSelection selection = ( StructuredSelection ) viewer.getSelection(); + if ( !selection.isEmpty() ) + { + ExtendedOperationEnum extendedOperation = ( ExtendedOperationEnum ) selection.getFirstElement(); + + extendedOperations.remove( extendedOperation ); + viewer.refresh(); + setEditorDirty(); + } + } + } ); + } + + + /* (non-Javadoc) + * @see org.eclipse.ui.forms.MasterDetailsBlock#createToolBarActions(org.eclipse.ui.forms.IManagedForm) + */ + protected void createToolBarActions( IManagedForm managedForm ) + { + final ScrolledForm form = managedForm.getForm(); + + // Horizontal layout Action + Action horizontalAction = new Action( "Horizontal layout", Action.AS_RADIO_BUTTON ) { //$NON-NLS-1$ + public void run() + { + sashForm.setOrientation( SWT.HORIZONTAL ); + form.reflow( true ); + } + }; + horizontalAction.setChecked( true ); + horizontalAction.setToolTipText( "Horizontal Orientation" ); //$NON-NLS-1$ + horizontalAction.setImageDescriptor( ApacheDSConfigurationPlugin.getDefault().getImageDescriptor( + ApacheDSConfigurationPluginConstants.IMG_HORIZONTAL_ORIENTATION ) ); + + // Vertical layout Action + Action verticalAction = new Action( "Vertical Orientation", Action.AS_RADIO_BUTTON ) { //$NON-NLS-1$ + public void run() + { + sashForm.setOrientation( SWT.VERTICAL ); + form.reflow( true ); + } + }; + verticalAction.setChecked( false ); + verticalAction.setToolTipText( "Vertical Orientation" ); //$NON-NLS-1$ + verticalAction.setImageDescriptor( ApacheDSConfigurationPlugin.getDefault().getImageDescriptor( + ApacheDSConfigurationPluginConstants.IMG_VERTICAL_ORIENTATION ) ); + + form.getToolBarManager().add( horizontalAction ); + form.getToolBarManager().add( verticalAction ); + } + + + /* (non-Javadoc) + * @see org.eclipse.ui.forms.MasterDetailsBlock#registerPages(org.eclipse.ui.forms.DetailsPart) + */ + protected void registerPages( DetailsPart detailsPart ) + { + detailsPage = new ExtendedOperationDetailsPage(); + detailsPart.registerPage( ExtendedOperationEnum.class, detailsPage ); + } + + + /** + * Sets the Editor as dirty. + */ + public void setEditorDirty() + { + ( ( ServerConfigurationEditor ) page.getEditor() ).setDirty( true ); + } + + + /** + * Saves the necessary elements to the input model. + */ + public void save() + { + detailsPage.commit( true ); + viewer.setInput( extendedOperations ); + } +} Added: directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v153/ExtendedOperationsPage.java URL: http://svn.apache.org/viewvc/directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v153/ExtendedOperationsPage.java?rev=675657&view=auto ============================================================================== --- directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v153/ExtendedOperationsPage.java (added) +++ directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v153/ExtendedOperationsPage.java Thu Jul 10 10:36:30 2008 @@ -0,0 +1,83 @@ +/* + * 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.v153; + + +import org.apache.directory.studio.apacheds.configuration.editor.SaveableFormPage; +import org.apache.directory.studio.apacheds.configuration.editor.ServerConfigurationEditor; +import org.eclipse.ui.forms.IManagedForm; +import org.eclipse.ui.forms.editor.FormEditor; +import org.eclipse.ui.forms.editor.FormPage; +import org.eclipse.ui.forms.widgets.ScrolledForm; + + +/** + * This class represents the Extended Operations Page of the Server Configuration Editor. + * + * @author Apache Directory Project + * @version $Rev$, $Date$ + */ +public class ExtendedOperationsPage extends FormPage implements SaveableFormPage +{ + /** The Page ID*/ + public static final String ID = ServerConfigurationEditor.ID + ".V153.ExtendedOperationsPage"; + + /** The Page Title */ + private static final String TITLE = "Extended Operations"; + + /** The Master/Details Block */ + private ExtendedOperationsMasterDetailsBlock masterDetailsBlock; + + + /** + * Creates a new instance of ExtendedOperationsPage. + * + * @param editor + * the associated editor + */ + public ExtendedOperationsPage( FormEditor editor ) + { + super( editor, ID, TITLE ); + } + + + /* (non-Javadoc) + * @see org.eclipse.ui.forms.editor.FormPage#createFormContent(org.eclipse.ui.forms.IManagedForm) + */ + protected void createFormContent( IManagedForm managedForm ) + { + final ScrolledForm form = managedForm.getForm(); + form.setText( "Extended Operations" ); + masterDetailsBlock = new ExtendedOperationsMasterDetailsBlock( this ); + masterDetailsBlock.createContent( managedForm ); + } + + + /* (non-Javadoc) + * @see org.apache.directory.studio.apacheds.configuration.editor.SavableWizardPage#save() + */ + public void save() + { + if ( masterDetailsBlock != null ) + { + masterDetailsBlock.save(); + } + } +} Added: directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v153/GeneralPage.java URL: http://svn.apache.org/viewvc/directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v153/GeneralPage.java?rev=675657&view=auto ============================================================================== --- directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v153/GeneralPage.java (added) +++ directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v153/GeneralPage.java Thu Jul 10 10:36:30 2008 @@ -0,0 +1,567 @@ +/* + * 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.v153; + + +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.v153.ServerConfigurationV153; +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.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 Apache Directory Project + * @version $Rev$, $Date$ + */ +public class GeneralPage extends FormPage implements SaveableFormPage +{ + /** The Page ID*/ + public static final String ID = ServerConfigurationEditor.ID + ".V153.GeneralPage"; + + /** The Page Title */ + private static final String TITLE = "General"; + + // 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 ) + { + ScrolledForm form = managedForm.getForm(); + form.setText( "General" ); + + 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( "Protocols" ); + 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, "Enable LDAP", SWT.CHECK ); + enableLdapCheckbox.setLayoutData( new GridData( SWT.NONE, SWT.NONE, true, false, 3, 1 ) ); + toolkit.createLabel( ldapProtocolComposite, " " ); + toolkit.createLabel( ldapProtocolComposite, "Port:" ); + ldapPortText = createPortText( toolkit, ldapProtocolComposite ); + + // LDAPS + Composite ldapsProtocolComposite = createProtocolComposite( toolkit, client ); + enableLdapsCheckbox = toolkit.createButton( ldapsProtocolComposite, "Enable LDAPS", SWT.CHECK ); + enableLdapsCheckbox.setLayoutData( new GridData( SWT.NONE, SWT.NONE, true, false, 3, 1 ) ); + toolkit.createLabel( ldapsProtocolComposite, " " ); + toolkit.createLabel( ldapsProtocolComposite, "Port:" ); + ldapsPortText = createPortText( toolkit, ldapsProtocolComposite ); + + // Kerberos + Composite kerberosProtocolComposite = createProtocolComposite( toolkit, client ); + enableKerberosCheckbox = toolkit.createButton( kerberosProtocolComposite, "Enable Kerberos", SWT.CHECK ); + enableKerberosCheckbox.setLayoutData( new GridData( SWT.NONE, SWT.NONE, true, false, 3, 1 ) ); + toolkit.createLabel( kerberosProtocolComposite, " " ); + toolkit.createLabel( kerberosProtocolComposite, "Port:" ); + kerberosPortText = createPortText( toolkit, kerberosProtocolComposite ); + + // NTP + Composite ntpProtocolComposite = createProtocolComposite( toolkit, client ); + enableNtpCheckbox = toolkit.createButton( ntpProtocolComposite, "Enable NTP", SWT.CHECK ); + enableNtpCheckbox.setLayoutData( new GridData( SWT.NONE, SWT.NONE, true, false, 3, 1 ) ); + toolkit.createLabel( ntpProtocolComposite, " " ); + toolkit.createLabel( ntpProtocolComposite, "Port:" ); + ntpPortText = createPortText( toolkit, ntpProtocolComposite ); + + // DNS + Composite dnsProtocolComposite = createProtocolComposite( toolkit, client ); + enableDnsCheckbox = toolkit.createButton( dnsProtocolComposite, "Enable DNS", SWT.CHECK ); + enableDnsCheckbox.setLayoutData( new GridData( SWT.NONE, SWT.NONE, true, false, 3, 1 ) ); + toolkit.createLabel( dnsProtocolComposite, " " ); + toolkit.createLabel( dnsProtocolComposite, "Port:" ); + dnsPortText = createPortText( toolkit, dnsProtocolComposite ); + + // Change Password + Composite changePasswordProtocolComposite = createProtocolComposite( toolkit, client ); + enableChangePasswordCheckbox = toolkit.createButton( changePasswordProtocolComposite, "Enable Change Password", + SWT.CHECK ); + enableChangePasswordCheckbox.setLayoutData( new GridData( SWT.NONE, SWT.NONE, true, false, 3, 1 ) ); + toolkit.createLabel( changePasswordProtocolComposite, " " ); + toolkit.createLabel( changePasswordProtocolComposite, "Port:" ); + 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, "" ); + 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( "Limits" ); + 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, "Max. Time Limit:" ); + maxTimeLimitText = toolkit.createText( client, "" ); + 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, "Max. Size Limit:" ); + maxSizeLimitText = toolkit.createText( client, "" ); + 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, "Synchronization Period:" ); + synchPeriodText = toolkit.createText( client, "" ); + 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, "Max. Threads:" ); + maxThreadsText = toolkit.createText( client, "" ); + 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( "Options" ); + 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, "Allow Anonymous Access", SWT.CHECK ); + allowAnonymousAccessCheckbox.setLayoutData( new GridData( SWT.NONE, SWT.NONE, true, false ) ); + + // Enable Access Control + enableAccesControlCheckbox = toolkit.createButton( client, "Enable Access Control", SWT.CHECK ); + enableAccesControlCheckbox.setLayoutData( new GridData( SWT.NONE, SWT.NONE, true, false ) ); + + // Denormalize Operational Attributes + denormalizeOpAttrCheckbox = toolkit.createButton( client, "Denormalize Operational Attributes", SWT.CHECK ); + denormalizeOpAttrCheckbox.setLayoutData( new GridData( SWT.NONE, SWT.NONE, true, false ) ); + } + + + /** + * Initializes the page with the Editor input. + */ + private void initFromInput() + { + ServerConfigurationV153 configuration = ( ServerConfigurationV153 ) ( ( ServerConfigurationEditor ) getEditor() ) + .getServerConfiguration(); + + // LDAP Protocol + enableLdapCheckbox.setSelection( configuration.isEnableLdap() ); + ldapPortText.setEnabled( enableLdapCheckbox.getSelection() ); + ldapPortText.setText( "" + configuration.getLdapPort() ); + + // LDAPS Protocol + enableLdapsCheckbox.setSelection( configuration.isEnableLdaps() ); + ldapsPortText.setEnabled( enableLdapsCheckbox.getSelection() ); + ldapsPortText.setText( "" + configuration.getLdapsPort() ); + + // Kerberos Protocol + enableKerberosCheckbox.setSelection( configuration.isEnableKerberos() ); + kerberosPortText.setEnabled( enableKerberosCheckbox.getSelection() ); + kerberosPortText.setText( "" + configuration.getKerberosPort() ); + + // NTP Protocol + enableNtpCheckbox.setSelection( configuration.isEnableNtp() ); + ntpPortText.setEnabled( enableNtpCheckbox.getSelection() ); + ntpPortText.setText( "" + configuration.getNtpPort() ); + + // DNS Protocol + enableDnsCheckbox.setSelection( configuration.isEnableDns() ); + dnsPortText.setEnabled( enableDnsCheckbox.getSelection() ); + dnsPortText.setText( "" + configuration.getDnsPort() ); + + // Change Password Protocol + enableChangePasswordCheckbox.setSelection( configuration.isEnableChangePassword() ); + changePasswordPortText.setEnabled( enableChangePasswordCheckbox.getSelection() ); + changePasswordPortText.setText( "" + configuration.getChangePasswordPort() ); + + // Max Time Limit + maxTimeLimitText.setText( "" + configuration.getMaxTimeLimit() ); + + // Max Size Limit + maxSizeLimitText.setText( "" + configuration.getMaxSizeLimit() ); + + // Synchronization Period + synchPeriodText.setText( "" + configuration.getSynchronizationPeriod() ); + + // Max Threads + maxThreadsText.setText( "" + configuration.getMaxThreads() ); + + // 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() + { + ServerConfigurationV153 configuration = ( ServerConfigurationV153 ) ( ( 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() ); + } +}