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 2013/04/18 16:25:36 UTC

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

Author: pamarcelot
Date: Thu Apr 18 14:25:35 2013
New Revision: 1469342

URL: http://svn.apache.org/r1469342
Log:
Initial work on a UI for configuring the password policy configurations.

Modified:
    directory/studio/trunk/plugins/apacheds.configuration.v2/plugin.xml
    directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/PasswordPolicyPage.java
    directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/ServerConfigurationEditor.java

Modified: directory/studio/trunk/plugins/apacheds.configuration.v2/plugin.xml
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/apacheds.configuration.v2/plugin.xml?rev=1469342&r1=1469341&r2=1469342&view=diff
==============================================================================
--- directory/studio/trunk/plugins/apacheds.configuration.v2/plugin.xml (original)
+++ directory/studio/trunk/plugins/apacheds.configuration.v2/plugin.xml Thu Apr 18 14:25:35 2013
@@ -65,11 +65,10 @@
          	        value="2.0.0">
          	     </objectState>
          	     <!-- Special case to handle ApacheDS servers launched via Eclipse -->
-         	     <!-- TODO: Should be removed before a release -->
-                 <!--<objectState
+         	     <objectState
          	        name="vendorVersion"
          	        value="${project.version}">
-         	     </objectState>-->
+         	     </objectState>
          	   </or>
          	</and>
          </visibility>

Modified: directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/PasswordPolicyPage.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/PasswordPolicyPage.java?rev=1469342&r1=1469341&r2=1469342&view=diff
==============================================================================
--- directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/PasswordPolicyPage.java (original)
+++ directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/PasswordPolicyPage.java Thu Apr 18 14:25:35 2013
@@ -20,13 +20,23 @@
 package org.apache.directory.studio.apacheds.configuration.v2.editor;
 
 
+import org.apache.directory.server.config.beans.AuthenticationInterceptorBean;
+import org.apache.directory.server.config.beans.DirectoryServiceBean;
+import org.apache.directory.server.config.beans.InterceptorBean;
+import org.apache.directory.server.config.beans.PasswordPolicyBean;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.ComboViewer;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.swt.SWT;
+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.ui.forms.IManagedForm;
-import org.eclipse.ui.forms.editor.FormEditor;
-import org.eclipse.ui.forms.editor.FormPage;
+import org.eclipse.swt.widgets.Text;
 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;
 
 
 /**
@@ -34,14 +44,42 @@ import org.eclipse.ui.forms.widgets.Scro
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class PasswordPolicyPage extends FormPage
+public class PasswordPolicyPage extends ServerConfigurationEditorPage
 {
+    private static final String AUTHENTICATION_INTERCEPTOR_ID = "authenticationInterceptor";
+
+    private static final String PASSWORD_POLICY_ID_DEFAULT = "default";
+
     /** The Page ID*/
     public static final String ID = PasswordPolicyPage.class.getName(); //$NON-NLS-1$
 
     /** The Page Title */
     private static final String TITLE = Messages.getString( "PasswordPolicyPage.PasswordPolicy" ); //$NON-NLS-1$
 
+    // UI Widgets
+    private ComboViewer checkQualityComboViewer;
+    private Button minimumLengthCheckbox;
+    private Text minimumLengthText;
+    private Button maximumLengthCheckbox;
+    private Text maximumLengthText;
+    private Text minimumAgeText;
+    private Text maximumAgeText;
+    private Button expireWarningCheckbox;
+    private Text expireWarningText;
+    private Button graceAuthenticationLimitCheckbox;
+    private Text graceAuthenticationLimitText;
+    private Button graceExpireCheckbox;
+    private Text graceExpireText;
+    private Button mustChangeCheckbox;
+    private Button allowUserChangeCheckbox;
+    private Button safeModifyCheckbox;
+    private Button lockoutCheckbox;
+    private Text lockoutDurationText;
+    private Text maxFailureText;
+    private Text failureCountIntervalText;
+    private Button inHistoryCheckbox;
+    private Text inHistoryText;
+
 
     /**
      * Creates a new instance of GeneralPage.
@@ -49,7 +87,7 @@ public class PasswordPolicyPage extends 
      * @param editor
      *      the associated editor
      */
-    public PasswordPolicyPage( FormEditor editor )
+    public PasswordPolicyPage( ServerConfigurationEditor editor )
     {
         super( editor, ID, TITLE );
     }
@@ -58,15 +96,464 @@ public class PasswordPolicyPage extends 
     /**
      * {@inheritDoc}
      */
-    protected void createFormContent( IManagedForm managedForm )
+    protected void createFormContent( Composite parent, FormToolkit toolkit )
+    {
+        TableWrapLayout twl = new TableWrapLayout();
+        twl.numColumns = 2;
+        parent.setLayout( twl );
+
+        // Left Composite
+        Composite leftComposite = toolkit.createComposite( parent );
+        leftComposite.setLayout( new GridLayout() );
+        TableWrapData leftCompositeTableWrapData = new TableWrapData( TableWrapData.FILL, TableWrapData.TOP );
+        leftCompositeTableWrapData.grabHorizontal = true;
+        leftComposite.setLayoutData( leftCompositeTableWrapData );
+
+        // Right Composite
+        Composite rightComposite = toolkit.createComposite( parent );
+        rightComposite.setLayout( new GridLayout() );
+        TableWrapData rightCompositeTableWrapData = new TableWrapData( TableWrapData.FILL, TableWrapData.TOP );
+        rightCompositeTableWrapData.grabHorizontal = true;
+        rightComposite.setLayoutData( rightCompositeTableWrapData );
+
+        // Creating the sections
+        createQualitySection( toolkit, leftComposite );
+        createExpirationSection( toolkit, leftComposite );
+        createOptionsSection( toolkit, rightComposite );
+        createLockoutSection( toolkit, rightComposite );
+
+        //        // Attribute (pwdAttribute)
+        //        Text attributeText = toolkit.createText( composite, "" );
+        //        attributeText.setLayoutData( new GridData( SWT.BEGINNING, SWT.CENTER, false, false, 2, 1 ) );
+
+    }
+
+
+    /**
+     * Creates the Quality section.
+     *
+     * @param toolkit the toolkit to use
+     * @param parent the parent composite
+     */
+    private void createQualitySection( FormToolkit toolkit, Composite parent )
+    {
+        // Creation of the section
+        Section section = toolkit.createSection( parent, Section.TITLE_BAR );
+        section.setText( "Quality" );
+        section.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+        Composite composite = toolkit.createComposite( section );
+        toolkit.paintBordersFor( composite );
+        GridLayout gridLayout = new GridLayout( 3, false );
+        gridLayout.marginHeight = gridLayout.marginWidth = 0;
+        composite.setLayout( gridLayout );
+        section.setClient( composite );
+
+        // Check Quality (pwdCheckQuality)
+        toolkit.createLabel( composite, "Check Quality:" );
+        checkQualityComboViewer = new ComboViewer( composite );
+        checkQualityComboViewer.setContentProvider( new ArrayContentProvider() );
+        checkQualityComboViewer.setInput( new CheckQuality[]
+            { CheckQuality.DISABLED, CheckQuality.RELAXED, CheckQuality.STRICT } );
+        checkQualityComboViewer.getControl().setLayoutData(
+            new GridData( SWT.BEGINNING, SWT.CENTER, false, false, 2, 1 ) );
+
+        // Minimum Length (pwdMinLength)
+        minimumLengthCheckbox = toolkit.createButton( composite, "Enable Mimimum Length", SWT.CHECK );
+        minimumLengthCheckbox.setLayoutData( new GridData( SWT.BEGINNING, SWT.CENTER, false, false, 3, 1 ) );
+
+        toolkit.createLabel( composite, "   " );
+        minimumLengthText = toolkit.createText( composite, "" );
+
+        // Maximum Length (pwdMaxLength)
+        maximumLengthCheckbox = toolkit.createButton( composite, "Enable Maximum Length", SWT.CHECK );
+        maximumLengthCheckbox.setLayoutData( new GridData( SWT.BEGINNING, SWT.CENTER, false, false, 3, 1 ) );
+
+        toolkit.createLabel( composite, "   " );
+        maximumLengthText = toolkit.createText( composite, "" );
+    }
+
+
+    /**
+     * Creates the Expiration section.
+     *
+     * @param toolkit the toolkit to use
+     * @param parent the parent composite
+     */
+    private void createExpirationSection( FormToolkit toolkit, Composite parent )
+    {
+        // Creation of the section
+        Section section = toolkit.createSection( parent, Section.TITLE_BAR );
+        section.setText( "Expiration" );
+        section.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+        Composite composite = toolkit.createComposite( section );
+        toolkit.paintBordersFor( composite );
+        GridLayout gridLayout = new GridLayout( 3, false );
+        gridLayout.marginHeight = gridLayout.marginWidth = 0;
+        composite.setLayout( gridLayout );
+        section.setClient( composite );
+
+        // Minimum Age (pwdMinAge)
+        toolkit.createLabel( composite, "Mimimum Age:" );
+        minimumAgeText = toolkit.createText( composite, "" );
+        minimumAgeText.setLayoutData( new GridData( SWT.BEGINNING, SWT.CENTER, false, false, 2, 1 ) );
+
+        // Maximum Age (pwdMaxAge)
+        toolkit.createLabel( composite, "Maximum Age:" );
+        maximumAgeText = toolkit.createText( composite, "" );
+        maximumAgeText.setLayoutData( new GridData( SWT.BEGINNING, SWT.CENTER, false, false, 2, 1 ) );
+
+        // Expire Warning (pwdExpireWarning)
+        expireWarningCheckbox = toolkit.createButton( composite, "Enable Expire Warning", SWT.CHECK );
+        expireWarningCheckbox.setLayoutData( new GridData( SWT.BEGINNING, SWT.CENTER, false, false, 3, 1 ) );
+
+        toolkit.createLabel( composite, "   " );
+        expireWarningText = toolkit.createText( composite, "" );
+
+        // Grace Authentication Limit (pwdGraceAuthNLimit)
+        graceAuthenticationLimitCheckbox = toolkit.createButton( composite, "Enable Grace Authentication Limit",
+            SWT.CHECK );
+        graceAuthenticationLimitCheckbox.setLayoutData( new GridData( SWT.BEGINNING, SWT.CENTER, false, false, 3, 1 ) );
+
+        toolkit.createLabel( composite, "   " );
+        graceAuthenticationLimitText = toolkit.createText( composite, "" );
+
+        // Grace Expire (pwdGraceExpire)
+        graceExpireCheckbox = toolkit.createButton( composite, "Enable Grace Expire", SWT.CHECK );
+        graceExpireCheckbox.setLayoutData( new GridData( SWT.BEGINNING, SWT.CENTER, false, false, 3, 1 ) );
+
+        toolkit.createLabel( composite, "   " );
+        graceExpireText = toolkit.createText( composite, "" );
+    }
+
+
+    /**
+     * Creates the Options section.
+     *
+     * @param toolkit the toolkit to use
+     * @param parent the parent composite
+     */
+    private void createOptionsSection( FormToolkit toolkit, Composite parent )
+    {
+        // 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 composite = toolkit.createComposite( section );
+        toolkit.paintBordersFor( composite );
+        GridLayout gridLayout = new GridLayout( 2, false );
+        gridLayout.marginHeight = gridLayout.marginWidth = 0;
+        composite.setLayout( gridLayout );
+        section.setClient( composite );
+
+        // Must Change (pwdMustChange)
+        mustChangeCheckbox = toolkit.createButton( composite, "Enable Must Change", SWT.CHECK );
+        mustChangeCheckbox.setLayoutData( new GridData( SWT.BEGINNING, SWT.CENTER, false, false, 2, 1 ) );
+
+        // Allow User Change (pwdAllowUserChange)
+        allowUserChangeCheckbox = toolkit.createButton( composite, "Enable Allow User Change", SWT.CHECK );
+        allowUserChangeCheckbox.setLayoutData( new GridData( SWT.BEGINNING, SWT.CENTER, false, false, 2, 1 ) );
+
+        // Safe Modify (pwdSafeModify)
+        safeModifyCheckbox = toolkit.createButton( composite, "Enable Safe Modify", SWT.CHECK );
+        safeModifyCheckbox.setLayoutData( new GridData( SWT.BEGINNING, SWT.CENTER, false, false, 2, 1 ) );
+    }
+
+
+    /**
+     * Creates the Lockout section.
+     *
+     * @param toolkit the toolkit to use
+     * @param parent the parent composite
+     */
+    private void createLockoutSection( FormToolkit toolkit, Composite parent )
+    {
+        // Creation of the section
+        Section section = toolkit.createSection( parent, Section.TITLE_BAR );
+        section.setText( "Lockout" );
+        section.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+        Composite composite = toolkit.createComposite( section );
+        toolkit.paintBordersFor( composite );
+        GridLayout gridLayout = new GridLayout( 3, false );
+        gridLayout.marginHeight = gridLayout.marginWidth = 0;
+        composite.setLayout( gridLayout );
+        section.setClient( composite );
+
+        // Lockout (pwdLockout)
+        lockoutCheckbox = toolkit.createButton( composite, "Enable Lockout", SWT.CHECK );
+        lockoutCheckbox.setLayoutData( new GridData( SWT.BEGINNING, SWT.CENTER, false, false, 3, 1 ) );
+
+        // Lockout Duration (pwdLockoutDuration)
+        toolkit.createLabel( composite, "Lockout Duration:" );
+        lockoutDurationText = toolkit.createText( composite, "" );
+        lockoutDurationText.setLayoutData( new GridData( SWT.BEGINNING, SWT.CENTER, false, false, 2, 1 ) );
+
+        // Max Failure (pwdMaxFailure)
+        toolkit.createLabel( composite, "Max Failure:" );
+        maxFailureText = toolkit.createText( composite, "" );
+        maxFailureText.setLayoutData( new GridData( SWT.BEGINNING, SWT.CENTER, false, false, 2, 1 ) );
+
+        // Failure Count Interval (pwdFailureCountInterval)
+        toolkit.createLabel( composite, "Failure Count Interval:" );
+        failureCountIntervalText = toolkit.createText( composite, "" );
+        failureCountIntervalText.setLayoutData( new GridData( SWT.BEGINNING, SWT.CENTER, false, false, 2, 1 ) );
+
+        // In History (pwdInHistory)
+        inHistoryCheckbox = toolkit.createButton( composite, "Enable In History", SWT.CHECK );
+        inHistoryCheckbox.setLayoutData( new GridData( SWT.BEGINNING, SWT.CENTER, false, false, 3, 1 ) );
+
+        toolkit.createLabel( composite, "   " );
+        inHistoryText = toolkit.createText( composite, "" );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    protected void refreshUI()
+    {
+        PasswordPolicyBean passwordPolicy = getPasswordPolicy();
+
+        // Check Quality
+        checkQualityComboViewer.setSelection( new StructuredSelection( CheckQuality.valueOf( passwordPolicy
+            .getPwdCheckQuality() ) ) );
+
+        // Miminum Length
+        int minimumLength = passwordPolicy.getPwdMinLength();
+        minimumLengthCheckbox.setSelection( minimumLength != 0 );
+        minimumLengthText.setText( "" + minimumLength );
+
+        // Maximum Length
+        int maximumLength = passwordPolicy.getPwdMaxLength();
+        maximumLengthCheckbox.setSelection( maximumLength != 0 );
+        maximumLengthText.setText( "" + maximumLength );
+
+        // Minimum Age
+        minimumAgeText.setText( "" + passwordPolicy.getPwdMinAge() );
+
+        // Maximum Age
+        maximumAgeText.setText( "" + passwordPolicy.getPwdMaxAge() );
+
+        // Expire Warning
+        expireWarningCheckbox.setSelection( passwordPolicy.getPwdExpireWarning() == 0 );
+        expireWarningText.setText( "" + passwordPolicy.getPwdExpireWarning() );
+
+        // Grace Authentication Limit
+        int graceAuthenticationLimit = passwordPolicy.getPwdGraceAuthNLimit();
+        graceAuthenticationLimitCheckbox.setSelection( graceAuthenticationLimit != 0 );
+        graceAuthenticationLimitText.setText( "" + graceAuthenticationLimit );
+
+        // Grace Expire
+        int graceExpire = passwordPolicy.getPwdGraceExpire();
+        graceExpireCheckbox.setSelection( graceExpire != 0 );
+        graceExpireText.setText( "" + graceExpire );
+
+        // Must Change
+        mustChangeCheckbox.setSelection( passwordPolicy.isPwdMustChange() );
+
+        // Allow User Change
+        allowUserChangeCheckbox.setSelection( passwordPolicy.isPwdAllowUserChange() );
+
+        // Safe Modify
+        safeModifyCheckbox.setSelection( passwordPolicy.isPwdSafeModify() );
+
+        // Lockout
+        lockoutCheckbox.setSelection( passwordPolicy.isPwdLockout() );
+
+        // Lockout Duration
+        lockoutDurationText.setText( "" + passwordPolicy.getPwdLockoutDuration() );
+
+        // Max Failure
+        maxFailureText.setText( "" + passwordPolicy.getPwdMaxFailure() );
+
+        // Failure Count Interval
+        failureCountIntervalText.setText( "" + passwordPolicy.getPwdFailureCountInterval() );
+
+        // In History
+        inHistoryCheckbox.setSelection( passwordPolicy.getPwdInHistory() != 0 );
+        inHistoryText.setText( "" + passwordPolicy.getPwdInHistory() );
+    }
+
+
+    /**
+     * Gets the Password Policy bean.
+     *
+     * @return the Password Policy bean
+     */
+    private PasswordPolicyBean getPasswordPolicy()
+    {
+        return getPasswordPolicyBean( getDirectoryServiceBean() );
+    }
+
+
+    /**
+     * Gets the Password Policy bean.
+     *
+     * @param directoryServiceBean the directory service bean
+     * @return the Password Policy bean
+     */
+    public static PasswordPolicyBean getPasswordPolicyBean( DirectoryServiceBean directoryServiceBean )
+    {
+        // Finding the password policy
+        PasswordPolicyBean passwordPolicyBean = findPasswordPolicyBean( directoryServiceBean );
+
+        if ( passwordPolicyBean == null )
+        {
+            addPasswordPolicyBean( directoryServiceBean );
+        }
+
+        return passwordPolicyBean;
+    }
+
+
+    /**
+     * Gets the Password Policy bean.
+     *
+     * @param directoryServiceBean the directory service bean
+     * @return the Password Policy bean
+     */
+    private static PasswordPolicyBean findPasswordPolicyBean( DirectoryServiceBean directoryServiceBean )
     {
-        ScrolledForm form = managedForm.getForm();
-        form.setText( Messages.getString( "PasswordPolicyPage.PasswordPolicy" ) ); //$NON-NLS-1$
+        return getPasswordPolicyBean( getAuthenticationInterceptorBean( directoryServiceBean ) );
+    }
+
 
-        Composite parent = form.getBody();
-        parent.setLayout( new GridLayout() );
+    /**
+     * Gets the authentication interceptor.
+     *
+     * @param directoryServiceBean the directory service bean
+     * @return the authentication interceptor
+     */
+    private static AuthenticationInterceptorBean getAuthenticationInterceptorBean(
+        DirectoryServiceBean directoryServiceBean )
+    {
+        // Looking for the authentication interceptor
+        for ( InterceptorBean interceptor : directoryServiceBean.getInterceptors() )
+        {
+            if ( AUTHENTICATION_INTERCEPTOR_ID.equalsIgnoreCase( interceptor.getInterceptorId() )
+                && ( interceptor instanceof AuthenticationInterceptorBean ) )
+            {
+                return ( AuthenticationInterceptorBean ) interceptor;
+            }
+        }
+
+        return null;
+    }
+
+
+    /**
+     * Gets the Password Policy bean.
+     *
+     * @param authenticationInterceptor the authentication interceptor
+     * @return the Password Policy bean
+     */
+    private static PasswordPolicyBean getPasswordPolicyBean( AuthenticationInterceptorBean authenticationInterceptor )
+    {
+        // Looking for the default password policy
+        if ( authenticationInterceptor != null )
+        {
+            for ( PasswordPolicyBean passwordPolicy : authenticationInterceptor.getPasswordPolicies() )
+            {
+                if ( PASSWORD_POLICY_ID_DEFAULT.equalsIgnoreCase( passwordPolicy.getPwdId() ) )
+                {
+                    return passwordPolicy;
+                }
+            }
+        }
+
+        return null;
+    }
+
+
+    /**
+     * Adds the password policy to the directory service.
+     *
+     * @param directoryServiceBean the directory service bean
+     */
+    private static void addPasswordPolicyBean( DirectoryServiceBean directoryServiceBean )
+    {
+        AuthenticationInterceptorBean authenticationInterceptor = getAuthenticationInterceptorBean( directoryServiceBean );
+
+        if ( authenticationInterceptor != null )
+        {
+            // Creating the password policy
+            PasswordPolicyBean passwordPolicy = new PasswordPolicyBean();
+
+            // Configuring the password policy
+            passwordPolicy.setPwdId( PASSWORD_POLICY_ID_DEFAULT );
+            // TODO add other parameters
+
+            // Adding the password policy to the authentication interceptor
+            authenticationInterceptor.addPasswordPolicies( passwordPolicy );
+        }
+    }
+
+    /**
+     * This enum is used for the check quality value.
+     *
+     * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+     */
+    private enum CheckQuality
+    {
+        DISABLED(0),
+        RELAXED(1),
+        STRICT(2);
+
+        /** The value */
+        private int value;
+
+
+        /**
+         * Creates a new instance of CheckQuality.
+         *
+         * @param value the value
+         */
+        private CheckQuality( int value )
+        {
+            this.value = value;
+        }
+
+
+        /**
+         * Gets the value.
+         *
+         * @return the value
+         */
+        public int getValue()
+        {
+            return value;
+        }
+
+
+        public static CheckQuality valueOf( int value )
+        {
+            for ( CheckQuality checkQuality : CheckQuality.class.getEnumConstants() )
+            {
+                if ( checkQuality.getValue() == value )
+                {
+                    return checkQuality;
+                }
+            }
+
+            throw new IllegalArgumentException( "There is no CheckQuality value for :" + value );
+        }
+
+
+        /**
+         * {@inheritDoc}
+         */
+        public String toString()
+        {
+            switch ( this )
+            {
+                case DISABLED:
+                    return "Disabled";
+                case RELAXED:
+                    return "Relaxed";
+                case STRICT:
+                    return "Strict";
+            }
 
-        FormToolkit toolkit = managedForm.getToolkit();
-        toolkit.decorateFormHeading( form.getForm() );
+            return super.toString();
+        }
     }
-}
+}
\ No newline at end of file

Modified: directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/ServerConfigurationEditor.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/ServerConfigurationEditor.java?rev=1469342&r1=1469341&r2=1469342&view=diff
==============================================================================
--- directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/ServerConfigurationEditor.java (original)
+++ directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/ServerConfigurationEditor.java Thu Apr 18 14:25:35 2013
@@ -65,6 +65,7 @@ public class ServerConfigurationEditor e
     private LdapLdapsServersPage ldapLdapsServersPage;
     private KerberosServerPage kerberosServerPage;
     private PartitionsPage partitionsPage;
+    private PasswordPolicyPage passwordPolicyPage;
     private ReplicationPage replicationPage;
 
 
@@ -316,6 +317,7 @@ public class ServerConfigurationEditor e
         ldapLdapsServersPage.refreshUI();
         kerberosServerPage.refreshUI();
         partitionsPage.refreshUI();
+        passwordPolicyPage.refreshUI();
         replicationPage.refreshUI();
     }
 
@@ -371,6 +373,8 @@ public class ServerConfigurationEditor e
             addPage( kerberosServerPage );
             partitionsPage = new PartitionsPage( this );
             addPage( partitionsPage );
+            passwordPolicyPage = new PasswordPolicyPage( this );
+            addPage( passwordPolicyPage );
             replicationPage = new ReplicationPage( this );
             addPage( replicationPage );
         }