You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2015/03/25 14:26:31 UTC

svn commit: r1669123 [3/6] - in /directory/studio/trunk/plugins: ./ openldap.config.editor/ openldap.config.editor/resources/ openldap.config.editor/resources/icons/ openldap.config.editor/src/ openldap.config.editor/src/main/ openldap.config.editor/sr...

Added: directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/databases/HdbDatabaseSpecificDetailsBlock.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/databases/HdbDatabaseSpecificDetailsBlock.java?rev=1669123&view=auto
==============================================================================
--- directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/databases/HdbDatabaseSpecificDetailsBlock.java (added)
+++ directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/databases/HdbDatabaseSpecificDetailsBlock.java Wed Mar 25 13:26:29 2015
@@ -0,0 +1,333 @@
+package org.apache.directory.studio.openldap.config.editor.databases;
+
+
+import java.util.List;
+
+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.swt.widgets.Text;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.Section;
+
+import org.apache.directory.studio.openldap.config.model.OlcBdbConfig;
+
+
+/**
+ * This class implements a block for HDB Database Specific Details.
+ */
+public class HdbDatabaseSpecificDetailsBlock implements DatabaseSpecificDetailsBlock
+{
+    /** The database */
+    private OlcBdbConfig database;
+
+    // UI Widgets
+    private Text directoryText;
+    private Text modeText;
+    private Text configurationText;
+    private Text cryptFileText;
+    private Text cryptKeyText;
+    private Text sharedMemoryKeyText;
+    private Text indexesText;
+    private Button linearIndexesCheckbox;
+    private Text cacheSizeText;
+    private Text cacheFreeText;
+    private Text dnCacheSizeText;
+    private Text IdlCacheSizeText;
+    private Text searchStackDepthText;
+    private Text pageSizeText;
+    private Text checkpointIntervalText;
+    private Button disableSynchronousDatabaseWritesCheckbox;
+    private Button allowReadsOfUncommitedDataCheckbox;
+    private Text deadlockDetectionAlgorithmText;
+
+
+    /**
+     * Creates a new instance of BdbDatabaseSpecificDetailsBlock.
+     *
+     * @param database the database
+     */
+    public HdbDatabaseSpecificDetailsBlock( OlcBdbConfig database )
+    {
+        this.database = database;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void createFormContent( Composite parent, FormToolkit toolkit )
+    {
+        createDatabaseConfigurationSection( parent, toolkit );
+        createDatabaseIndexesSection( parent, toolkit );
+        createDatabaseCacheSection( parent, toolkit );
+        createDatabaseLimitsSection( parent, toolkit );
+        createDatabaseOptionsSection( parent, toolkit );
+
+    }
+
+
+    private void createDatabaseConfigurationSection( Composite parent, FormToolkit toolkit )
+    {
+        // Database Configuration Section
+        Section databaseConfigurationSection = toolkit.createSection( parent, Section.TWISTIE );
+        databaseConfigurationSection.setText( "Database Configuration" );
+        databaseConfigurationSection.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false, 2, 1 ) );
+        Composite databaseConfigurationComposite = toolkit.createComposite( databaseConfigurationSection );
+        toolkit.paintBordersFor( databaseConfigurationComposite );
+        databaseConfigurationComposite.setLayout( new GridLayout( 2, false ) );
+        databaseConfigurationSection.setClient( databaseConfigurationComposite );
+
+        // Directory Text
+        toolkit.createLabel( databaseConfigurationComposite, "Directory:" );
+        directoryText = toolkit.createText( databaseConfigurationComposite, "" );
+        directoryText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+
+        // Mode Text
+        toolkit.createLabel( databaseConfigurationComposite, "Mode:" );
+        modeText = toolkit.createText( databaseConfigurationComposite, "" );
+        modeText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+
+        // Configuration Text
+        toolkit.createLabel( databaseConfigurationComposite, "Configuration:" );
+        configurationText = toolkit.createText( databaseConfigurationComposite, "" );
+        configurationText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+
+        // Crypt File Text
+        toolkit.createLabel( databaseConfigurationComposite, "Crypt File:" );
+        cryptFileText = toolkit.createText( databaseConfigurationComposite, "" );
+        cryptFileText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+
+        // Crypt Key Text
+        toolkit.createLabel( databaseConfigurationComposite, "Crypt Key:" );
+        cryptKeyText = toolkit.createText( databaseConfigurationComposite, "" );
+        cryptKeyText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+
+        // Shared Memory Key Text
+        toolkit.createLabel( databaseConfigurationComposite, "Shared Memory Key:" );
+        sharedMemoryKeyText = toolkit.createText( databaseConfigurationComposite, "" );
+        sharedMemoryKeyText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+    }
+
+
+    private void createDatabaseIndexesSection( Composite parent, FormToolkit toolkit )
+    {
+        // Database Indexes Section
+        Section databaseIndexesSection = toolkit.createSection( parent, Section.TWISTIE );
+        databaseIndexesSection.setText( "Database Indexes" );
+        databaseIndexesSection.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false, 2, 1 ) );
+        Composite databaseIndexesComposite = toolkit.createComposite( databaseIndexesSection );
+        toolkit.paintBordersFor( databaseIndexesComposite );
+        databaseIndexesComposite.setLayout( new GridLayout( 2, false ) );
+        databaseIndexesSection.setClient( databaseIndexesComposite );
+
+        // Indexes Text
+        toolkit.createLabel( databaseIndexesComposite, "Indexes:" );
+        indexesText = toolkit.createText( databaseIndexesComposite, "" );
+        indexesText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+
+        // Linear Indexes Button
+        linearIndexesCheckbox = toolkit.createButton( databaseIndexesComposite, "Linear Indexes", SWT.CHECK );
+        linearIndexesCheckbox.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false, 2, 1 ) );
+    }
+
+
+    private void createDatabaseCacheSection( Composite parent, FormToolkit toolkit )
+    {
+        // Database Cache Section
+        Section databaseCacheSection = toolkit.createSection( parent, Section.TWISTIE );
+        databaseCacheSection.setText( "Database Cache" );
+        databaseCacheSection.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false, 2, 1 ) );
+        Composite databaseCacheComposite = toolkit.createComposite( databaseCacheSection );
+        toolkit.paintBordersFor( databaseCacheComposite );
+        databaseCacheComposite.setLayout( new GridLayout( 2, false ) );
+        databaseCacheSection.setClient( databaseCacheComposite );
+
+        // Cache Size Text
+        toolkit.createLabel( databaseCacheComposite, "Cache Size:" );
+        cacheSizeText = toolkit.createText( databaseCacheComposite, "" );
+        cacheSizeText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+
+        // Cache Free Text
+        toolkit.createLabel( databaseCacheComposite, "Cache Free:" );
+        cacheFreeText = toolkit.createText( databaseCacheComposite, "" );
+        cacheFreeText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+
+        // DN Cache Size Text
+        toolkit.createLabel( databaseCacheComposite, "DN Cache Size:" );
+        dnCacheSizeText = toolkit.createText( databaseCacheComposite, "" );
+        dnCacheSizeText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+
+        // IDL Cache Size Text
+        toolkit.createLabel( databaseCacheComposite, "IDL Cache Size:" );
+        IdlCacheSizeText = toolkit.createText( databaseCacheComposite, "" );
+        IdlCacheSizeText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+    }
+
+
+    private void createDatabaseLimitsSection( Composite parent, FormToolkit toolkit )
+    {
+        // Database Limits Section
+        Section databaseLimitsSection = toolkit.createSection( parent, Section.TWISTIE );
+        databaseLimitsSection.setText( "Database Limits" );
+        databaseLimitsSection.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false, 2, 1 ) );
+        Composite databaseLimitsComposite = toolkit.createComposite( databaseLimitsSection );
+        toolkit.paintBordersFor( databaseLimitsComposite );
+        databaseLimitsComposite.setLayout( new GridLayout( 2, false ) );
+        databaseLimitsSection.setClient( databaseLimitsComposite );
+
+        // Search Stack Depth Text
+        toolkit.createLabel( databaseLimitsComposite, "Search Stack Depth:" );
+        searchStackDepthText = toolkit.createText( databaseLimitsComposite, "" );
+        searchStackDepthText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+
+        // Page Size Text
+        toolkit.createLabel( databaseLimitsComposite, "Page Size:" );
+        pageSizeText = toolkit.createText( databaseLimitsComposite, "" );
+        pageSizeText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+
+        // Checkpoint Interval Text
+        toolkit.createLabel( databaseLimitsComposite, "Checkpoint Interval:" );
+        checkpointIntervalText = toolkit.createText( databaseLimitsComposite, "" );
+        checkpointIntervalText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+    }
+
+
+    private void createDatabaseOptionsSection( Composite parent, FormToolkit toolkit )
+    {
+        // Database Options Section
+        Section databaseOptionsSection = toolkit.createSection( parent, Section.TWISTIE );
+        databaseOptionsSection.setText( "Database Options" );
+        databaseOptionsSection.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false, 2, 1 ) );
+        Composite databaseOptionsComposite = toolkit.createComposite( databaseOptionsSection );
+        toolkit.paintBordersFor( databaseOptionsComposite );
+        databaseOptionsComposite.setLayout( new GridLayout( 2, false ) );
+        databaseOptionsSection.setClient( databaseOptionsComposite );
+
+        // Disable Synchronous Database Writes Button
+        disableSynchronousDatabaseWritesCheckbox = toolkit.createButton( databaseOptionsComposite,
+            "Disable Synchronous Database Writes", SWT.CHECK );
+        disableSynchronousDatabaseWritesCheckbox.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false, 2, 1 ) );
+
+        // Allow Reads Of Uncommited Data Button
+        allowReadsOfUncommitedDataCheckbox = toolkit.createButton( databaseOptionsComposite,
+            "Allow Reads Of Uncommited Data",
+            SWT.CHECK );
+        allowReadsOfUncommitedDataCheckbox.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false, 2, 1 ) );
+
+        // Deadlock Detection Algorithm Text
+        toolkit.createLabel( databaseOptionsComposite, "Deadlock Detection Algorithm:" );
+        deadlockDetectionAlgorithmText = toolkit.createText( databaseOptionsComposite, "" );
+        deadlockDetectionAlgorithmText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void refresh()
+    {
+        if ( database == null )
+        {
+            // Blank out all fields
+            // TODO
+        }
+        else
+        {
+            // Directory Text
+            String directory = database.getOlcDbDirectory();
+            directoryText.setText( ( directory == null ) ? "" : directory ); //$NON-NLS-1$
+
+            // Mode Text
+            String mode = database.getOlcDbMode();
+            modeText.setText( ( mode == null ) ? "" : mode ); //$NON-NLS-1$
+
+            // Configuration Text
+            List<String> configuration = database.getOlcDbConfig();
+            configurationText.setText( ( configuration == null ) ? "" : concatenate( configuration ) ); //$NON-NLS-1$
+
+            // Crypt File Text
+            String cryptFile = database.getOlcDbCryptFile();
+            cryptFileText.setText( ( cryptFile == null ) ? "" : cryptFile ); //$NON-NLS-1$
+
+            // Crypt Key Text
+            byte[] cryptKey = database.getOlcDbCryptKey();
+            modeText.setText( ( cryptKey == null ) ? "" : new String( cryptKey ) ); //$NON-NLS-1$ TODO
+
+            // Shared Memory Key Text
+            int sharedMemoryKey = database.getOlcDbShmKey();
+            sharedMemoryKeyText.setText( "" + sharedMemoryKey ); //$NON-NLS-1$ TODO
+
+            // Indexes Text
+            List<String> indexes = database.getOlcDbIndex();
+            indexesText.setText( ( indexes == null ) ? "" : concatenate( indexes ) ); //$NON-NLS-1$
+
+            // Linear Indexes Button
+            boolean linearIndexes = database.getOlcDbLinearIndex();
+            linearIndexesCheckbox.setSelection( linearIndexes );
+
+            // Cache Size Text
+            int cacheSize = database.getOlcDbCacheSize();
+            cacheSizeText.setText( "" + cacheSize ); //$NON-NLS-1$ TODO
+
+            // Cache Free Text
+            int cacheFree = database.getOlcDbCacheFree();
+            cacheFreeText.setText( "" + cacheFree ); //$NON-NLS-1$ TODO
+
+            // DN Cache Size Text
+            int dnCacheSize = database.getOlcDbDNcacheSize();
+            dnCacheSizeText.setText( "" + dnCacheSize ); //$NON-NLS-1$ TODO
+
+            // IDL Cache Size Text
+            int idlCacheSize = database.getOlcDbIDLcacheSize();
+            IdlCacheSizeText.setText( "" + idlCacheSize ); //$NON-NLS-1$ TODO
+
+            // Search Stack Depth Text
+            int searchStackDepth = database.getOlcDbSearchStack();
+            searchStackDepthText.setText( "" + searchStackDepth ); //$NON-NLS-1$ TODO
+
+            // Page Size Text
+            List<String> pageSize = database.getOlcDbPageSize();
+            pageSizeText.setText( ( pageSize == null ) ? "" : concatenate( pageSize ) ); //$NON-NLS-1$
+
+            // Checkpoint Interval Text
+            String checkpointInterval = database.getOlcDbCheckpoint();
+            checkpointIntervalText.setText( ( checkpointInterval == null ) ? "" : checkpointInterval ); //$NON-NLS-1$
+
+            // Disable Synchronous Database Writes Button
+            boolean disableSynchronousDatabaseWrites = database.getOlcDbNoSync();
+            disableSynchronousDatabaseWritesCheckbox.setSelection( disableSynchronousDatabaseWrites );
+
+            // Allow Reads Of Uncommited Data Button
+            boolean allowReadsOfUncommitedData = database.getOlcDbDirtyRead();
+            allowReadsOfUncommitedDataCheckbox.setSelection( allowReadsOfUncommitedData );
+
+            // Deadlock Detection Algorithm Text
+            String deadlockDetectionAlgorithm = database.getOlcDbLockDetect();
+            deadlockDetectionAlgorithmText
+                .setText( ( deadlockDetectionAlgorithm == null ) ? "" : deadlockDetectionAlgorithm ); //$NON-NLS-1$
+        }
+    }
+
+
+    private String concatenate( List<String> list )
+    {
+        StringBuilder sb = new StringBuilder();
+
+        for ( String string : list )
+        {
+            sb.append( string );
+            sb.append( ", " );
+        }
+
+        if ( sb.length() > 1 )
+        {
+            sb.deleteCharAt( sb.length() - 1 );
+            sb.deleteCharAt( sb.length() - 1 );
+        }
+
+        return sb.toString();
+    }
+}

Added: directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/databases/LdifDatabaseSpecificDetailsBlock.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/databases/LdifDatabaseSpecificDetailsBlock.java?rev=1669123&view=auto
==============================================================================
--- directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/databases/LdifDatabaseSpecificDetailsBlock.java (added)
+++ directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/databases/LdifDatabaseSpecificDetailsBlock.java Wed Mar 25 13:26:29 2015
@@ -0,0 +1,66 @@
+package org.apache.directory.studio.openldap.config.editor.databases;
+
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+
+import org.apache.directory.studio.openldap.config.model.OlcLdifConfig;
+
+
+/**
+ * This interface represents a block for None Specific Details.
+ */
+public class LdifDatabaseSpecificDetailsBlock implements DatabaseSpecificDetailsBlock
+{
+    /** The database */
+    private OlcLdifConfig database;
+
+    // UI Widgets
+    private Text directoryText;
+
+
+    /**
+     * Creates a new instance of LdifDatabaseSpecificDetailsBlock.
+     * 
+     * @param database the database
+     */
+    public LdifDatabaseSpecificDetailsBlock( OlcLdifConfig database )
+    {
+        this.database = database;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void createFormContent( Composite parent, FormToolkit toolkit )
+    {
+        // Directory Text
+        toolkit.createLabel( parent, "Directory:" );
+        directoryText = toolkit.createText( parent, "" );
+        directoryText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void refresh()
+    {
+
+        if ( database == null )
+        {
+            // Blank out all fields
+            // TODO
+        }
+        else
+        {
+            // Directory Text
+            String directory = database.getOlcDbDirectory();
+            directoryText.setText( ( directory == null ) ? "" : directory ); //$NON-NLS-1$
+        }
+    }
+}

Added: directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/databases/NoneDatabaseSpecificDetailsBlock.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/databases/NoneDatabaseSpecificDetailsBlock.java?rev=1669123&view=auto
==============================================================================
--- directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/databases/NoneDatabaseSpecificDetailsBlock.java (added)
+++ directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/databases/NoneDatabaseSpecificDetailsBlock.java Wed Mar 25 13:26:29 2015
@@ -0,0 +1,35 @@
+package org.apache.directory.studio.openldap.config.editor.databases;
+
+
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+
+
+/**
+ * This interface represents a block for None Specific Details.
+ */
+public class NoneDatabaseSpecificDetailsBlock implements DatabaseSpecificDetailsBlock
+{
+    /**
+     * Creates a new instance of NoneDatabaseSpecificDetailsBlock.
+     */
+    public NoneDatabaseSpecificDetailsBlock()
+    {
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void createFormContent( Composite parent, FormToolkit toolkit )
+    {
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void refresh()
+    {
+    }
+}

Added: directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/AccessLogOverlayDetailsPage.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/AccessLogOverlayDetailsPage.java?rev=1669123&view=auto
==============================================================================
--- directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/AccessLogOverlayDetailsPage.java (added)
+++ directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/AccessLogOverlayDetailsPage.java Wed Mar 25 13:26:29 2015
@@ -0,0 +1,383 @@
+package org.apache.directory.studio.openldap.config.editor.overlays;
+
+
+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.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Spinner;
+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;
+
+import org.apache.directory.studio.openldap.config.model.OlcAccessLogConfig;
+
+
+/**
+ * This class represents the Details Page of the Server Configuration Editor for the Access Log Overlay type
+ */
+public class AccessLogOverlayDetailsPage implements IDetailsPage
+{
+    /** The associated Master Details Block */
+    private OverlaysMasterDetailsBlock masterDetailsBlock;
+
+    /** The Managed Form */
+    private IManagedForm mform;
+
+    /** The dirty flag */
+    private boolean dirty = false;
+
+    /** The overlay */
+    private OlcAccessLogConfig overlay;
+
+    // UI fields
+    private Text databaseDnText;
+    private Text filterText;
+    private Text attributesText;
+    private Button onlyLogSuccessOperationsCheckbox;
+    private Button logAllOperationsRadioButton;
+    private Button logSpecificOperationsRadioButton;
+    private Button logWriteOperationsCheckbox;
+    private Button logReadOperationsCheckbox;
+    private Button logSessionOperationsCheckbox;
+    private Button logAddOperationCheckbox;
+    private Button logDeleteOperationCheckbox;
+    private Button logModifyOperationCheckbox;
+    private Button logModifyRdnOperationCheckbox;
+    private Button logCompareOperationCheckbox;
+    private Button logSearchOperationCheckbox;
+    private Button logAbandonOperationCheckbox;
+    private Button logBindOperationCheckbox;
+    private Button logUnbindOperationCheckbox;
+    private Spinner purgeAgeDaysSpinner;
+    private Spinner purgeAgeHoursSpinner;
+    private Spinner purgeAgeMinutesSpinner;
+    private Spinner purgeAgeSecondsSpinner;
+    private Spinner purgeIntervalDaysSpinner;
+    private Spinner purgeIntervalHoursSpinner;
+    private Spinner purgeIntervalMinutesSpinner;
+    private Spinner purgeIntervalSecondsSpinner;
+
+
+    /**
+     * Creates a new instance of PartitionDetailsPage.
+     *
+     * @param master
+     *      the associated Master Details Block
+     */
+    public AccessLogOverlayDetailsPage( OverlaysMasterDetailsBlock master )
+    {
+        masterDetailsBlock = master;
+    }
+
+
+    /* (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 );
+
+        createGeneralSettingsSection( parent, toolkit );
+        createLogOperationsSettingsSection( parent, toolkit );
+        createPurgeSettingsSection( parent, toolkit );
+    }
+
+
+    /**
+     * Creates the General Settings Section
+     *
+     * @param parent
+     *      the parent composite
+     * @param toolkit
+     *      the toolkit to use
+     */
+    private void createGeneralSettingsSection( Composite parent, FormToolkit toolkit )
+    {
+        Section section = toolkit.createSection( parent, Section.TITLE_BAR );
+        section.marginWidth = 10;
+        section.setText( "Audit Log General Settings" );
+        TableWrapData td = new TableWrapData( TableWrapData.FILL, TableWrapData.TOP );
+        td.grabHorizontal = true;
+        section.setLayoutData( td );
+        Composite composite = toolkit.createComposite( section );
+        toolkit.paintBordersFor( composite );
+        GridLayout glayout = new GridLayout( 2, false );
+        composite.setLayout( glayout );
+        section.setClient( composite );
+
+        // Database DN Text
+        toolkit.createLabel( composite, "Database DN:" );
+        databaseDnText = toolkit.createText( composite, "" );
+        databaseDnText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+
+        // Database DN Text
+        toolkit.createLabel( composite, "Filter:" );
+        filterText = toolkit.createText( composite, "" );
+        filterText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+
+        // Database DN Text
+        toolkit.createLabel( composite, "Attributes:" );
+        attributesText = toolkit.createText( composite, "" );
+        attributesText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+
+        // Only Log Success Operations
+        onlyLogSuccessOperationsCheckbox = toolkit.createButton( composite, "Only log success operations", SWT.CHECK );
+        onlyLogSuccessOperationsCheckbox.setLayoutData( new GridData( SWT.NONE, SWT.NONE, false, false, 2, 1 ) );
+    }
+
+
+    /**
+     * Creates the Log Operations Settings Section
+     *
+     * @param parent
+     *      the parent composite
+     * @param toolkit
+     *      the toolkit to use
+     */
+    private void createLogOperationsSettingsSection( Composite parent, FormToolkit toolkit )
+    {
+        Section section = toolkit.createSection( parent, Section.TITLE_BAR );
+        section.marginWidth = 10;
+        section.setText( "Log Operations Settings" );
+        TableWrapData td = new TableWrapData( TableWrapData.FILL, TableWrapData.TOP );
+        td.grabHorizontal = true;
+        section.setLayoutData( td );
+        Composite composite = toolkit.createComposite( section );
+        toolkit.paintBordersFor( composite );
+        GridLayout glayout = new GridLayout();
+        composite.setLayout( glayout );
+        section.setClient( composite );
+
+        // Log All Operations Radio Button
+        logAllOperationsRadioButton = toolkit.createButton( composite, "All Operations", SWT.RADIO );
+
+        // Log Specific Operations Radio Button
+        logSpecificOperationsRadioButton = toolkit.createButton( composite, "The following operations:", SWT.RADIO );
+
+        // Specific Operations Composite
+        Composite specificOperationsComposite = toolkit.createComposite( composite );
+        GridLayout gl = new GridLayout( 3, true );
+        gl.marginHeight = gl.marginWidth = 0;
+        gl.marginLeft = 20;
+        specificOperationsComposite.setLayout( gl );
+        specificOperationsComposite.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+
+        // Log Write Operations Checkbox
+        logWriteOperationsCheckbox = toolkit.createButton( specificOperationsComposite, "Write Operations", SWT.CHECK );
+
+        // Log Reads Operations Checkbox
+        logReadOperationsCheckbox = toolkit.createButton( specificOperationsComposite, "Read Operations", SWT.CHECK );
+
+        // Log Session Operations Checkbox
+        logSessionOperationsCheckbox = toolkit.createButton( specificOperationsComposite, "Session Operations",
+            SWT.CHECK );
+
+        // Write Operations Composite
+        Composite writeOperationsComposite = toolkit.createComposite( specificOperationsComposite );
+        gl = new GridLayout();
+        gl.marginHeight = gl.marginWidth = 0;
+        gl.marginLeft = 20;
+        writeOperationsComposite.setLayout( gl );
+        writeOperationsComposite.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+
+        // Log Add Operation Checkbox
+        logAddOperationCheckbox = toolkit.createButton( writeOperationsComposite, "Add Operation", SWT.CHECK );
+
+        // Log Delete Operation Checkbox
+        logDeleteOperationCheckbox = toolkit.createButton( writeOperationsComposite, "Delete Operation", SWT.CHECK );
+
+        // Log Modify Operation Checkbox
+        logModifyOperationCheckbox = toolkit.createButton( writeOperationsComposite, "Modify Operation", SWT.CHECK );
+
+        // Log Modify RDN Operation Checkbox
+        logModifyRdnOperationCheckbox = toolkit.createButton( writeOperationsComposite, "Modify RDN Operation",
+            SWT.CHECK );
+
+        // Read Operations Composite
+        Composite readOperationsComposite = toolkit.createComposite( specificOperationsComposite );
+        gl = new GridLayout();
+        gl.marginHeight = gl.marginWidth = 0;
+        gl.marginLeft = 20;
+        readOperationsComposite.setLayout( gl );
+        readOperationsComposite.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+
+        // Log Compare Operation Checkbox
+        logCompareOperationCheckbox = toolkit.createButton( readOperationsComposite, "Compare Operation", SWT.CHECK );
+
+        // Log Search Operation Checkbox
+        logSearchOperationCheckbox = toolkit.createButton( readOperationsComposite, "Search Operation", SWT.CHECK );
+
+        // Session Operations Composite
+        Composite sessionOperationsComposite = toolkit.createComposite( specificOperationsComposite );
+        gl = new GridLayout();
+        gl.marginHeight = gl.marginWidth = 0;
+        gl.marginLeft = 20;
+        sessionOperationsComposite.setLayout( gl );
+        sessionOperationsComposite.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+
+        // Log Abandon Operation Checkbox
+        logAbandonOperationCheckbox = toolkit.createButton( sessionOperationsComposite, "Abandon Operation", SWT.CHECK );
+
+        // Log Bind Operation Checkbox
+        logBindOperationCheckbox = toolkit.createButton( sessionOperationsComposite, "Bind Operation", SWT.CHECK );
+
+        // Log Unbind Operation Checkbox
+        logUnbindOperationCheckbox = toolkit.createButton( sessionOperationsComposite, "Unbind Operation", SWT.CHECK );
+    }
+
+
+    /**
+     * Creates the Purge Settings Section
+     *
+     * @param parent
+     *      the parent composite
+     * @param toolkit
+     *      the toolkit to use
+     */
+    private void createPurgeSettingsSection( Composite parent, FormToolkit toolkit )
+    {
+        Section section = toolkit.createSection( parent, Section.TITLE_BAR );
+        section.marginWidth = 10;
+        section.setText( "Purge Settings" );
+        TableWrapData td = new TableWrapData( TableWrapData.FILL, TableWrapData.TOP );
+        td.grabHorizontal = true;
+        section.setLayoutData( td );
+        Composite composite = toolkit.createComposite( section );
+        toolkit.paintBordersFor( composite );
+        GridLayout glayout = new GridLayout( 9, false );
+        composite.setLayout( glayout );
+        section.setClient( composite );
+
+        // Purge Age
+        toolkit.createLabel( composite, "Purge Age:" );
+        purgeAgeDaysSpinner = new Spinner( composite, SWT.BORDER );
+        toolkit.createLabel( composite, "Days" );
+        purgeAgeHoursSpinner = new Spinner( composite, SWT.BORDER );
+        toolkit.createLabel( composite, "Hours" );
+        purgeAgeMinutesSpinner = new Spinner( composite, SWT.BORDER );
+        toolkit.createLabel( composite, "Minutes" );
+        purgeAgeSecondsSpinner = new Spinner( composite, SWT.BORDER );
+        toolkit.createLabel( composite, "Seconds" );
+
+        // Purge Interval
+        toolkit.createLabel( composite, "Purge Interval:" );
+        purgeIntervalDaysSpinner = new Spinner( composite, SWT.BORDER );
+        toolkit.createLabel( composite, "Days" );
+        purgeIntervalHoursSpinner = new Spinner( composite, SWT.BORDER );
+        toolkit.createLabel( composite, "Hours" );
+        purgeIntervalMinutesSpinner = new Spinner( composite, SWT.BORDER );
+        toolkit.createLabel( composite, "Minutes" );
+        purgeIntervalSecondsSpinner = new Spinner( composite, SWT.BORDER );
+        toolkit.createLabel( composite, "Seconds" );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void selectionChanged( IFormPart part, ISelection selection )
+    {
+        IStructuredSelection ssel = ( IStructuredSelection ) selection;
+        if ( ssel.size() == 1 )
+        {
+            overlay = ( OlcAccessLogConfig ) ssel.getFirstElement();
+        }
+        else
+        {
+            overlay = null;
+        }
+        refresh();
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void commit( boolean onSave )
+    {
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void dispose()
+    {
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void initialize( IManagedForm form )
+    {
+        this.mform = form;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean isDirty()
+    {
+        return dirty;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean isStale()
+    {
+        return false;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void setFocus()
+    {
+        //        idText.setFocus(); // TODO
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean setFormInput( Object input )
+    {
+        return false;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void refresh()
+    {
+        if ( overlay == null )
+        {
+            // Blank out all fields
+            // TODO
+        }
+        else
+        {
+        }
+    }
+}

Added: directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/AuditLogOverlayDetailsPage.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/AuditLogOverlayDetailsPage.java?rev=1669123&view=auto
==============================================================================
--- directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/AuditLogOverlayDetailsPage.java (added)
+++ directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/AuditLogOverlayDetailsPage.java Wed Mar 25 13:26:29 2015
@@ -0,0 +1,195 @@
+package org.apache.directory.studio.openldap.config.editor.overlays;
+
+
+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;
+
+import org.apache.directory.studio.openldap.config.model.OlcAccessLogConfig;
+
+
+/**
+ * This class represents the Details Page of the Server Configuration Editor for the Audit Log Overlay type
+ */
+public class AuditLogOverlayDetailsPage implements IDetailsPage
+{
+    /** The associated Master Details Block */
+    private OverlaysMasterDetailsBlock masterDetailsBlock;
+
+    /** The Managed Form */
+    private IManagedForm mform;
+
+    /** The dirty flag */
+    private boolean dirty = false;
+
+    /** The overlay */
+    private OlcAccessLogConfig overlay;
+
+    // UI fields
+    private FormToolkit toolkit;
+    private Text fileText;
+
+
+    /**
+     * Creates a new instance of PartitionDetailsPage.
+     *
+     * @param master
+     *      the associated Master Details Block
+     */
+    public AuditLogOverlayDetailsPage( OverlaysMasterDetailsBlock master )
+    {
+        masterDetailsBlock = master;
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.forms.IDetailsPage#createContents(org.eclipse.swt.widgets.Composite)
+     */
+    public void createContents( Composite parent )
+    {
+        toolkit = mform.getToolkit();
+        TableWrapLayout layout = new TableWrapLayout();
+        layout.topMargin = 5;
+        layout.leftMargin = 5;
+        layout.rightMargin = 2;
+        layout.bottomMargin = 2;
+        parent.setLayout( layout );
+
+        createGeneralSettingsSection( parent, toolkit );
+    }
+
+
+    /**
+     * Creates the General Settings Section
+     *
+     * @param parent
+     *      the parent composite
+     * @param toolkit
+     *      the toolkit to use
+     */
+    private void createGeneralSettingsSection( Composite parent, FormToolkit toolkit )
+    {
+        Section section = toolkit.createSection( parent, Section.TITLE_BAR );
+        section.marginWidth = 10;
+        section.setText( "Audit Log General Settings" );
+        TableWrapData td = new TableWrapData( TableWrapData.FILL, TableWrapData.TOP );
+        td.grabHorizontal = true;
+        section.setLayoutData( td );
+        Composite composite = toolkit.createComposite( section );
+        toolkit.paintBordersFor( composite );
+        GridLayout glayout = new GridLayout( 2, false );
+        composite.setLayout( glayout );
+        section.setClient( composite );
+
+        // ID
+        toolkit.createLabel( composite, "File:" );
+        fileText = toolkit.createText( composite, "" );
+        fileText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void selectionChanged( IFormPart part, ISelection selection )
+    {
+        IStructuredSelection ssel = ( IStructuredSelection ) selection;
+        if ( ssel.size() == 1 )
+        {
+            overlay = ( OlcAccessLogConfig ) ssel.getFirstElement();
+        }
+        else
+        {
+            overlay = null;
+        }
+        refresh();
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void commit( boolean onSave )
+    {
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void dispose()
+    {
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void initialize( IManagedForm form )
+    {
+        this.mform = form;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean isDirty()
+    {
+        return dirty;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean isStale()
+    {
+        return false;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void setFocus()
+    {
+        //        idText.setFocus(); // TODO
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean setFormInput( Object input )
+    {
+        return false;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void refresh()
+    {
+        if ( overlay == null )
+        {
+            // Blank out all fields
+            // TODO
+        }
+        else
+        {
+        }
+    }
+}

Added: directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/ChainOverlayDetailsPage.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/ChainOverlayDetailsPage.java?rev=1669123&view=auto
==============================================================================
--- directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/ChainOverlayDetailsPage.java (added)
+++ directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/ChainOverlayDetailsPage.java Wed Mar 25 13:26:29 2015
@@ -0,0 +1,189 @@
+package org.apache.directory.studio.openldap.config.editor.overlays;
+
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+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;
+
+import org.apache.directory.studio.openldap.config.model.OlcAccessLogConfig;
+
+
+/**
+ * This class represents the Details Page of the Server Configuration Editor for the Chain Overlay type
+ */
+public class ChainOverlayDetailsPage implements IDetailsPage
+{
+    /** The associated Master Details Block */
+    private OverlaysMasterDetailsBlock masterDetailsBlock;
+
+    /** The Managed Form */
+    private IManagedForm mform;
+
+    /** The dirty flag */
+    private boolean dirty = false;
+
+    /** The overlay */
+    private OlcAccessLogConfig overlay;
+
+    // UI fields
+    private FormToolkit toolkit;
+
+
+    /**
+     * Creates a new instance of PartitionDetailsPage.
+     *
+     * @param master
+     *      the associated Master Details Block
+     */
+    public ChainOverlayDetailsPage( OverlaysMasterDetailsBlock master )
+    {
+        masterDetailsBlock = master;
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.forms.IDetailsPage#createContents(org.eclipse.swt.widgets.Composite)
+     */
+    public void createContents( Composite parent )
+    {
+        toolkit = mform.getToolkit();
+        TableWrapLayout layout = new TableWrapLayout();
+        layout.topMargin = 5;
+        layout.leftMargin = 5;
+        layout.rightMargin = 2;
+        layout.bottomMargin = 2;
+        parent.setLayout( layout );
+
+        createGeneralSettingsSection( parent, toolkit );
+    }
+
+
+    /**
+     * Creates the General Settings Section
+     *
+     * @param parent
+     *      the parent composite
+     * @param toolkit
+     *      the toolkit to use
+     */
+    private void createGeneralSettingsSection( Composite parent, FormToolkit toolkit )
+    {
+        Section section = toolkit.createSection( parent, Section.TITLE_BAR );
+        section.marginWidth = 10;
+        section.setText( "Database General Settings" );
+        TableWrapData td = new TableWrapData( TableWrapData.FILL, TableWrapData.TOP );
+        td.grabHorizontal = true;
+        section.setLayoutData( td );
+        Composite composite = toolkit.createComposite( section );
+        toolkit.paintBordersFor( composite );
+        GridLayout glayout = new GridLayout( 2, false );
+        composite.setLayout( glayout );
+        section.setClient( composite );
+
+        // ID
+        toolkit.createLabel( composite, "ID:" );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void selectionChanged( IFormPart part, ISelection selection )
+    {
+        IStructuredSelection ssel = ( IStructuredSelection ) selection;
+        if ( ssel.size() == 1 )
+        {
+            overlay = ( OlcAccessLogConfig ) ssel.getFirstElement();
+        }
+        else
+        {
+            overlay = null;
+        }
+        refresh();
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void commit( boolean onSave )
+    {
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void dispose()
+    {
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void initialize( IManagedForm form )
+    {
+        this.mform = form;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean isDirty()
+    {
+        return dirty;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean isStale()
+    {
+        return false;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void setFocus()
+    {
+        //        idText.setFocus(); // TODO
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean setFormInput( Object input )
+    {
+        return false;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void refresh()
+    {
+        if ( overlay == null )
+        {
+            // Blank out all fields
+            // TODO
+        }
+        else
+        {
+        }
+    }
+}

Added: directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/DistProcOverlayDetailsPage.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/DistProcOverlayDetailsPage.java?rev=1669123&view=auto
==============================================================================
--- directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/DistProcOverlayDetailsPage.java (added)
+++ directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/DistProcOverlayDetailsPage.java Wed Mar 25 13:26:29 2015
@@ -0,0 +1,189 @@
+package org.apache.directory.studio.openldap.config.editor.overlays;
+
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+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;
+
+import org.apache.directory.studio.openldap.config.model.OlcAccessLogConfig;
+
+
+/**
+ * This class represents the Details Page of the Server Configuration Editor for the Dist Proc Overlay type
+ */
+public class DistProcOverlayDetailsPage implements IDetailsPage
+{
+    /** The associated Master Details Block */
+    private OverlaysMasterDetailsBlock masterDetailsBlock;
+
+    /** The Managed Form */
+    private IManagedForm mform;
+
+    /** The dirty flag */
+    private boolean dirty = false;
+
+    /** The overlay */
+    private OlcAccessLogConfig overlay;
+
+    // UI fields
+    private FormToolkit toolkit;
+
+
+    /**
+     * Creates a new instance of PartitionDetailsPage.
+     *
+     * @param master
+     *      the associated Master Details Block
+     */
+    public DistProcOverlayDetailsPage( OverlaysMasterDetailsBlock master )
+    {
+        masterDetailsBlock = master;
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.forms.IDetailsPage#createContents(org.eclipse.swt.widgets.Composite)
+     */
+    public void createContents( Composite parent )
+    {
+        toolkit = mform.getToolkit();
+        TableWrapLayout layout = new TableWrapLayout();
+        layout.topMargin = 5;
+        layout.leftMargin = 5;
+        layout.rightMargin = 2;
+        layout.bottomMargin = 2;
+        parent.setLayout( layout );
+
+        createGeneralSettingsSection( parent, toolkit );
+    }
+
+
+    /**
+     * Creates the General Settings Section
+     *
+     * @param parent
+     *      the parent composite
+     * @param toolkit
+     *      the toolkit to use
+     */
+    private void createGeneralSettingsSection( Composite parent, FormToolkit toolkit )
+    {
+        Section section = toolkit.createSection( parent, Section.TITLE_BAR );
+        section.marginWidth = 10;
+        section.setText( "Database General Settings" );
+        TableWrapData td = new TableWrapData( TableWrapData.FILL, TableWrapData.TOP );
+        td.grabHorizontal = true;
+        section.setLayoutData( td );
+        Composite composite = toolkit.createComposite( section );
+        toolkit.paintBordersFor( composite );
+        GridLayout glayout = new GridLayout( 2, false );
+        composite.setLayout( glayout );
+        section.setClient( composite );
+
+        // ID
+        toolkit.createLabel( composite, "ID:" );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void selectionChanged( IFormPart part, ISelection selection )
+    {
+        IStructuredSelection ssel = ( IStructuredSelection ) selection;
+        if ( ssel.size() == 1 )
+        {
+            overlay = ( OlcAccessLogConfig ) ssel.getFirstElement();
+        }
+        else
+        {
+            overlay = null;
+        }
+        refresh();
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void commit( boolean onSave )
+    {
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void dispose()
+    {
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void initialize( IManagedForm form )
+    {
+        this.mform = form;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean isDirty()
+    {
+        return dirty;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean isStale()
+    {
+        return false;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void setFocus()
+    {
+        //        idText.setFocus(); // TODO
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean setFormInput( Object input )
+    {
+        return false;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void refresh()
+    {
+        if ( overlay == null )
+        {
+            // Blank out all fields
+            // TODO
+        }
+        else
+        {
+        }
+    }
+}

Added: directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/OverlayType.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/OverlayType.java?rev=1669123&view=auto
==============================================================================
--- directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/OverlayType.java (added)
+++ directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/OverlayType.java Wed Mar 25 13:26:29 2015
@@ -0,0 +1,32 @@
+package org.apache.directory.studio.openldap.config.editor.overlays;
+
+
+/**
+ * This enum describes the various type of overlays.
+ */
+public enum OverlayType
+{
+    /** None */
+    NONE,
+
+    /** Acess Log */
+    ACCESS_LOG,
+
+    /** Audit Log */
+    AUDIT_LOG,
+    
+    /** Chain */
+    CHAIN,
+    
+    /** Dist Proc */
+    DIST_PROC,
+    
+    /** PBind */
+    PBIND,
+    
+    /** Password Policy */
+    PASSWORD_POLICY,
+    
+    /** SyncProv */
+    SYNC_PROV;
+}
\ No newline at end of file

Added: directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/OverlaysMasterDetailsBlock.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/OverlaysMasterDetailsBlock.java?rev=1669123&view=auto
==============================================================================
--- directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/OverlaysMasterDetailsBlock.java (added)
+++ directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/OverlaysMasterDetailsBlock.java Wed Mar 25 13:26:29 2015
@@ -0,0 +1,214 @@
+package org.apache.directory.studio.openldap.config.editor.overlays;
+
+
+import java.util.ArrayList;
+import java.util.List;
+
+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.TableViewer;
+import org.eclipse.swt.SWT;
+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.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.Section;
+
+import org.apache.directory.studio.openldap.config.OpenLdapConfigurationPlugin;
+import org.apache.directory.studio.openldap.config.OpenLdapConfigurationPluginConstants;
+import org.apache.directory.studio.openldap.config.model.OlcAccessLogConfig;
+import org.apache.directory.studio.openldap.config.model.OlcAuditlogConfig;
+import org.apache.directory.studio.openldap.config.model.OlcChainConfig;
+import org.apache.directory.studio.openldap.config.model.OlcConfig;
+import org.apache.directory.studio.openldap.config.model.OlcDistProcConfig;
+import org.apache.directory.studio.openldap.config.model.OlcOverlayConfig;
+import org.apache.directory.studio.openldap.config.model.OlcPBindConfig;
+import org.apache.directory.studio.openldap.config.model.OlcSyncProvConfig;
+import org.apache.directory.studio.openldap.config.model.OpenLdapConfiguration;
+
+
+/**
+ * This class represents the Overlays Master/Details Block used in the Overlays Page.
+ */
+public class OverlaysMasterDetailsBlock extends MasterDetailsBlock
+{
+    /** The associated page */
+    private OverlaysPage page;
+
+    // UI Fields
+    private TableViewer viewer;
+    private Button addButton;
+    private Button deleteButton;
+
+
+    /**
+     * Creates a new instance of OverlaysMasterDetailsBlock.
+     *
+     * @param page
+     *      the associated page
+     */
+    public OverlaysMasterDetailsBlock( OverlaysPage page )
+    {
+        super();
+        this.page = page;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void createContent( IManagedForm managedForm )
+    {
+        super.createContent( managedForm );
+
+        // Giving the weights of both parts of the SashForm.
+        sashForm.setWeights( new int[]
+            { 1, 2 } );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    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 Overlays" );
+        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 String getText( Object element )
+            {
+                if ( element instanceof OlcOverlayConfig )
+                {
+                    OlcOverlayConfig overlay = ( OlcOverlayConfig ) element;
+
+                    return overlay.getOlcOverlay();
+                }
+
+                return super.getText( element );
+            };
+
+
+            public Image getImage( Object element )
+            {
+                if ( element instanceof OlcOverlayConfig )
+                {
+                    return OpenLdapConfigurationPlugin.getDefault().getImage(
+                        OpenLdapConfigurationPluginConstants.IMG_OVERLAY );
+                }
+
+                return super.getImage( element );
+            };
+        } );
+
+        // Creating the button(s)
+        addButton = toolkit.createButton( client, "Add", SWT.PUSH );
+        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();
+    }
+
+
+    /**
+     * Initializes the page with the Editor input.
+     */
+    private void initFromInput()
+    {
+        OpenLdapConfiguration configuration = page.getConfiguration();
+
+        List<OlcConfig> configurationElements = configuration.getConfigurationElements();
+        List<OlcOverlayConfig> overlayConfigurationElements = new ArrayList<OlcOverlayConfig>();
+        for ( OlcConfig configurationElement : configurationElements )
+        {
+            if ( configurationElement instanceof OlcOverlayConfig )
+            {
+                overlayConfigurationElements.add( ( OlcOverlayConfig ) configurationElement );
+            }
+        }
+
+        viewer.setInput( overlayConfigurationElements.toArray( new OlcOverlayConfig[0] ) );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    protected void registerPages( DetailsPart detailsPart )
+    {
+        AccessLogOverlayDetailsPage olcAccessLogOverlayDetailsPage = new AccessLogOverlayDetailsPage( this );
+        detailsPart.registerPage( OlcAccessLogConfig.class, olcAccessLogOverlayDetailsPage );
+
+        AuditLogOverlayDetailsPage olcAuditLogOverlayDetailsPage = new AuditLogOverlayDetailsPage( this );
+        detailsPart.registerPage( OlcAuditlogConfig.class, olcAuditLogOverlayDetailsPage );
+
+        ChainOverlayDetailsPage olcChainOverlayDetailsPage = new ChainOverlayDetailsPage( this );
+        detailsPart.registerPage( OlcChainConfig.class, olcChainOverlayDetailsPage );
+
+        DistProcOverlayDetailsPage oldDistProcOverlayDetailsPage = new DistProcOverlayDetailsPage( this );
+        detailsPart.registerPage( OlcDistProcConfig.class, oldDistProcOverlayDetailsPage );
+
+        PasswordPolicyOverlayDetailsPage olcPasswordPolicyOverlayDetailsPage = new PasswordPolicyOverlayDetailsPage(
+            this );
+        detailsPart.registerPage( OlcDistProcConfig.class, olcPasswordPolicyOverlayDetailsPage );
+
+        PBindAccessOverlayDetailsPage olcPBindAccessOverlayDetailsPage = new PBindAccessOverlayDetailsPage( this );
+        detailsPart.registerPage( OlcPBindConfig.class, olcPBindAccessOverlayDetailsPage );
+
+        SyncProvOverlayDetailsPage olcSyncProvOverlayDetailsPage = new SyncProvOverlayDetailsPage( this );
+        detailsPart.registerPage( OlcSyncProvConfig.class, olcSyncProvOverlayDetailsPage );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    protected void createToolBarActions( IManagedForm managedForm )
+    {
+        // No toolbar actions
+    }
+}

Added: directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/OverlaysPage.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/OverlaysPage.java?rev=1669123&view=auto
==============================================================================
--- directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/OverlaysPage.java (added)
+++ directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/OverlaysPage.java Wed Mar 25 13:26:29 2015
@@ -0,0 +1,53 @@
+package org.apache.directory.studio.openldap.config.editor.overlays;
+
+
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+
+import org.apache.directory.studio.openldap.config.editor.ServerConfigurationEditor;
+import org.apache.directory.studio.openldap.config.editor.ServerConfigurationEditorPage;
+
+
+/**
+ * This class represents the General Page of the Server Configuration Editor.
+ */
+public class OverlaysPage extends ServerConfigurationEditorPage
+{
+    /** The Page ID*/
+    public static final String ID = OverlaysPage.class.getName(); //$NON-NLS-1$
+
+    /** The Page Title */
+    private static final String TITLE = "Overlays";
+
+
+    // UI Controls
+
+    /**
+     * Creates a new instance of GeneralPage.
+     *
+     * @param editor
+     *      the associated editor
+     */
+    public OverlaysPage( ServerConfigurationEditor editor )
+    {
+        super( editor, ID, TITLE );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    protected void createFormContent( Composite parent, FormToolkit toolkit )
+    {
+        OverlaysMasterDetailsBlock masterDetailsBlock = new OverlaysMasterDetailsBlock( this );
+        masterDetailsBlock.createContent( getManagedForm() );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void refreshUI()
+    {
+    }
+}

Added: directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/PBindAccessOverlayDetailsPage.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/PBindAccessOverlayDetailsPage.java?rev=1669123&view=auto
==============================================================================
--- directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/PBindAccessOverlayDetailsPage.java (added)
+++ directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/PBindAccessOverlayDetailsPage.java Wed Mar 25 13:26:29 2015
@@ -0,0 +1,189 @@
+package org.apache.directory.studio.openldap.config.editor.overlays;
+
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+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;
+
+import org.apache.directory.studio.openldap.config.model.OlcAccessLogConfig;
+
+
+/**
+ * This class represents the Details Page of the Server Configuration Editor for the PBind Overlay type
+ */
+public class PBindAccessOverlayDetailsPage implements IDetailsPage
+{
+    /** The associated Master Details Block */
+    private OverlaysMasterDetailsBlock masterDetailsBlock;
+
+    /** The Managed Form */
+    private IManagedForm mform;
+
+    /** The dirty flag */
+    private boolean dirty = false;
+
+    /** The overlay */
+    private OlcAccessLogConfig overlay;
+
+    // UI fields
+    private FormToolkit toolkit;
+
+
+    /**
+     * Creates a new instance of PartitionDetailsPage.
+     *
+     * @param master
+     *      the associated Master Details Block
+     */
+    public PBindAccessOverlayDetailsPage( OverlaysMasterDetailsBlock master )
+    {
+        masterDetailsBlock = master;
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.forms.IDetailsPage#createContents(org.eclipse.swt.widgets.Composite)
+     */
+    public void createContents( Composite parent )
+    {
+        toolkit = mform.getToolkit();
+        TableWrapLayout layout = new TableWrapLayout();
+        layout.topMargin = 5;
+        layout.leftMargin = 5;
+        layout.rightMargin = 2;
+        layout.bottomMargin = 2;
+        parent.setLayout( layout );
+
+        createGeneralSettingsSection( parent, toolkit );
+    }
+
+
+    /**
+     * Creates the General Settings Section
+     *
+     * @param parent
+     *      the parent composite
+     * @param toolkit
+     *      the toolkit to use
+     */
+    private void createGeneralSettingsSection( Composite parent, FormToolkit toolkit )
+    {
+        Section section = toolkit.createSection( parent, Section.TITLE_BAR );
+        section.marginWidth = 10;
+        section.setText( "Database General Settings" );
+        TableWrapData td = new TableWrapData( TableWrapData.FILL, TableWrapData.TOP );
+        td.grabHorizontal = true;
+        section.setLayoutData( td );
+        Composite composite = toolkit.createComposite( section );
+        toolkit.paintBordersFor( composite );
+        GridLayout glayout = new GridLayout( 2, false );
+        composite.setLayout( glayout );
+        section.setClient( composite );
+
+        // ID
+        toolkit.createLabel( composite, "ID:" );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void selectionChanged( IFormPart part, ISelection selection )
+    {
+        IStructuredSelection ssel = ( IStructuredSelection ) selection;
+        if ( ssel.size() == 1 )
+        {
+            overlay = ( OlcAccessLogConfig ) ssel.getFirstElement();
+        }
+        else
+        {
+            overlay = null;
+        }
+        refresh();
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void commit( boolean onSave )
+    {
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void dispose()
+    {
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void initialize( IManagedForm form )
+    {
+        this.mform = form;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean isDirty()
+    {
+        return dirty;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean isStale()
+    {
+        return false;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void setFocus()
+    {
+        //        idText.setFocus(); // TODO
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean setFormInput( Object input )
+    {
+        return false;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void refresh()
+    {
+        if ( overlay == null )
+        {
+            // Blank out all fields
+            // TODO
+        }
+        else
+        {
+        }
+    }
+}

Added: directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/PasswordPolicyOverlayDetailsPage.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/PasswordPolicyOverlayDetailsPage.java?rev=1669123&view=auto
==============================================================================
--- directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/PasswordPolicyOverlayDetailsPage.java (added)
+++ directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/PasswordPolicyOverlayDetailsPage.java Wed Mar 25 13:26:29 2015
@@ -0,0 +1,189 @@
+package org.apache.directory.studio.openldap.config.editor.overlays;
+
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+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;
+
+import org.apache.directory.studio.openldap.config.model.OlcAccessLogConfig;
+
+
+/**
+ * This class represents the Details Page of the Server Configuration Editor for the Password Policy Overlay type
+ */
+public class PasswordPolicyOverlayDetailsPage implements IDetailsPage
+{
+    /** The associated Master Details Block */
+    private OverlaysMasterDetailsBlock masterDetailsBlock;
+
+    /** The Managed Form */
+    private IManagedForm mform;
+
+    /** The dirty flag */
+    private boolean dirty = false;
+
+    /** The overlay */
+    private OlcAccessLogConfig overlay;
+
+    // UI fields
+    private FormToolkit toolkit;
+
+
+    /**
+     * Creates a new instance of PartitionDetailsPage.
+     *
+     * @param master
+     *      the associated Master Details Block
+     */
+    public PasswordPolicyOverlayDetailsPage( OverlaysMasterDetailsBlock master )
+    {
+        masterDetailsBlock = master;
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.forms.IDetailsPage#createContents(org.eclipse.swt.widgets.Composite)
+     */
+    public void createContents( Composite parent )
+    {
+        toolkit = mform.getToolkit();
+        TableWrapLayout layout = new TableWrapLayout();
+        layout.topMargin = 5;
+        layout.leftMargin = 5;
+        layout.rightMargin = 2;
+        layout.bottomMargin = 2;
+        parent.setLayout( layout );
+
+        createGeneralSettingsSection( parent, toolkit );
+    }
+
+
+    /**
+     * Creates the General Settings Section
+     *
+     * @param parent
+     *      the parent composite
+     * @param toolkit
+     *      the toolkit to use
+     */
+    private void createGeneralSettingsSection( Composite parent, FormToolkit toolkit )
+    {
+        Section section = toolkit.createSection( parent, Section.TITLE_BAR );
+        section.marginWidth = 10;
+        section.setText( "Database General Settings" );
+        TableWrapData td = new TableWrapData( TableWrapData.FILL, TableWrapData.TOP );
+        td.grabHorizontal = true;
+        section.setLayoutData( td );
+        Composite composite = toolkit.createComposite( section );
+        toolkit.paintBordersFor( composite );
+        GridLayout glayout = new GridLayout( 2, false );
+        composite.setLayout( glayout );
+        section.setClient( composite );
+
+        // ID
+        toolkit.createLabel( composite, "ID:" );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void selectionChanged( IFormPart part, ISelection selection )
+    {
+        IStructuredSelection ssel = ( IStructuredSelection ) selection;
+        if ( ssel.size() == 1 )
+        {
+            overlay = ( OlcAccessLogConfig ) ssel.getFirstElement();
+        }
+        else
+        {
+            overlay = null;
+        }
+        refresh();
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void commit( boolean onSave )
+    {
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void dispose()
+    {
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void initialize( IManagedForm form )
+    {
+        this.mform = form;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean isDirty()
+    {
+        return dirty;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean isStale()
+    {
+        return false;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void setFocus()
+    {
+        //        idText.setFocus(); // TODO
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean setFormInput( Object input )
+    {
+        return false;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void refresh()
+    {
+        if ( overlay == null )
+        {
+            // Blank out all fields
+            // TODO
+        }
+        else
+        {
+        }
+    }
+}

Added: directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/SyncProvOverlayDetailsPage.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/SyncProvOverlayDetailsPage.java?rev=1669123&view=auto
==============================================================================
--- directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/SyncProvOverlayDetailsPage.java (added)
+++ directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/editor/overlays/SyncProvOverlayDetailsPage.java Wed Mar 25 13:26:29 2015
@@ -0,0 +1,189 @@
+package org.apache.directory.studio.openldap.config.editor.overlays;
+
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+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;
+
+import org.apache.directory.studio.openldap.config.model.OlcAccessLogConfig;
+
+
+/**
+ * This class represents the Details Page of the Server Configuration Editor for the SyncProv Overlay type
+ */
+public class SyncProvOverlayDetailsPage implements IDetailsPage
+{
+    /** The associated Master Details Block */
+    private OverlaysMasterDetailsBlock masterDetailsBlock;
+
+    /** The Managed Form */
+    private IManagedForm mform;
+
+    /** The dirty flag */
+    private boolean dirty = false;
+
+    /** The overlay */
+    private OlcAccessLogConfig overlay;
+
+    // UI fields
+    private FormToolkit toolkit;
+
+
+    /**
+     * Creates a new instance of PartitionDetailsPage.
+     *
+     * @param master
+     *      the associated Master Details Block
+     */
+    public SyncProvOverlayDetailsPage( OverlaysMasterDetailsBlock master )
+    {
+        masterDetailsBlock = master;
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.forms.IDetailsPage#createContents(org.eclipse.swt.widgets.Composite)
+     */
+    public void createContents( Composite parent )
+    {
+        toolkit = mform.getToolkit();
+        TableWrapLayout layout = new TableWrapLayout();
+        layout.topMargin = 5;
+        layout.leftMargin = 5;
+        layout.rightMargin = 2;
+        layout.bottomMargin = 2;
+        parent.setLayout( layout );
+
+        createGeneralSettingsSection( parent, toolkit );
+    }
+
+
+    /**
+     * Creates the General Settings Section
+     *
+     * @param parent
+     *      the parent composite
+     * @param toolkit
+     *      the toolkit to use
+     */
+    private void createGeneralSettingsSection( Composite parent, FormToolkit toolkit )
+    {
+        Section section = toolkit.createSection( parent, Section.TITLE_BAR );
+        section.marginWidth = 10;
+        section.setText( "Database General Settings" );
+        TableWrapData td = new TableWrapData( TableWrapData.FILL, TableWrapData.TOP );
+        td.grabHorizontal = true;
+        section.setLayoutData( td );
+        Composite composite = toolkit.createComposite( section );
+        toolkit.paintBordersFor( composite );
+        GridLayout glayout = new GridLayout( 2, false );
+        composite.setLayout( glayout );
+        section.setClient( composite );
+
+        // ID
+        toolkit.createLabel( composite, "ID:" );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void selectionChanged( IFormPart part, ISelection selection )
+    {
+        IStructuredSelection ssel = ( IStructuredSelection ) selection;
+        if ( ssel.size() == 1 )
+        {
+            overlay = ( OlcAccessLogConfig ) ssel.getFirstElement();
+        }
+        else
+        {
+            overlay = null;
+        }
+        refresh();
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void commit( boolean onSave )
+    {
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void dispose()
+    {
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void initialize( IManagedForm form )
+    {
+        this.mform = form;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean isDirty()
+    {
+        return dirty;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean isStale()
+    {
+        return false;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void setFocus()
+    {
+        //        idText.setFocus(); // TODO
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean setFormInput( Object input )
+    {
+        return false;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void refresh()
+    {
+        if ( overlay == null )
+        {
+            // Blank out all fields
+            // TODO
+        }
+        else
+        {
+        }
+    }
+}

Added: directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/jobs/EntryBasedConfigurationPartition.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/jobs/EntryBasedConfigurationPartition.java?rev=1669123&view=auto
==============================================================================
--- directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/jobs/EntryBasedConfigurationPartition.java (added)
+++ directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/jobs/EntryBasedConfigurationPartition.java Wed Mar 25 13:26:29 2015
@@ -0,0 +1,107 @@
+/*
+ *  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.openldap.config.jobs;
+
+
+import java.util.UUID;
+
+import javax.naming.InvalidNameException;
+
+import org.apache.directory.server.core.api.interceptor.context.AddOperationContext;
+import org.apache.directory.server.core.partition.ldif.AbstractLdifPartition;
+import org.apache.directory.api.ldap.model.constants.SchemaConstants;
+import org.apache.directory.api.ldap.model.entry.Entry;
+import org.apache.directory.api.ldap.model.exception.LdapException;
+import org.apache.directory.api.ldap.model.name.Dn;
+import org.apache.directory.api.ldap.model.schema.SchemaManager;
+
+
+/**
+ * This class implements a read-only configuration partition.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class EntryBasedConfigurationPartition extends AbstractLdifPartition
+{
+    /** The suffix DN */
+    protected Dn suffixDn;
+
+
+    /**
+     * Creates a new instance of EntryBasedConfigurationPartition.
+     *
+     * @param schemaManager the schema manager
+     * @param suffixDn the suffix DN
+     */
+    public EntryBasedConfigurationPartition( SchemaManager schemaManager, Dn suffixDn )
+    {
+        super( schemaManager );
+        this.suffixDn = suffixDn;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    protected void doInit() throws InvalidNameException, Exception
+    {
+        setId( "config" );
+        setSuffixDn( new Dn( "cn=config" ) );
+        
+        super.doInit();
+    }
+
+
+    /**
+     * Adds the given entry.
+     *
+     * @param entry
+     *      the entry
+     * @throws Exception
+     */
+    public void addEntry( Entry entry ) throws Exception
+    {
+        // Adding mandatory operational attributes
+        addMandatoryOpAt( entry );
+
+        // Storing the entry
+        add( new AddOperationContext( null, entry ) );
+    }
+
+
+    /**
+     * Adds the CSN and UUID attributes to the entry if they are not present.
+     */
+    private void addMandatoryOpAt( Entry entry ) throws LdapException
+    {
+        // entryCSN
+        if ( entry.get( SchemaConstants.ENTRY_CSN_AT ) == null )
+        {
+            entry.add( SchemaConstants.ENTRY_CSN_AT, defaultCSNFactory.newInstance().toString() );
+        }
+
+        // entryUUID
+        if ( entry.get( SchemaConstants.ENTRY_UUID_AT ) == null )
+        {
+            String uuid = UUID.randomUUID().toString();
+            entry.add( SchemaConstants.ENTRY_UUID_AT, uuid );
+        }
+    }
+}

Added: directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/jobs/LoadConfigurationRunnable.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/jobs/LoadConfigurationRunnable.java?rev=1669123&view=auto
==============================================================================
--- directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/jobs/LoadConfigurationRunnable.java (added)
+++ directory/studio/trunk/plugins/openldap.config.editor/src/main/java/org/apache/directory/studio/openldap/config/jobs/LoadConfigurationRunnable.java Wed Mar 25 13:26:29 2015
@@ -0,0 +1,176 @@
+/*
+ *  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.openldap.config.jobs;
+
+
+import org.apache.directory.api.ldap.model.schema.SchemaManager;
+import org.apache.directory.api.ldap.model.schema.registries.SchemaLoader;
+import org.apache.directory.api.ldap.schema.manager.impl.DefaultSchemaManager;
+import org.apache.directory.studio.common.core.jobs.StudioProgressMonitor;
+import org.apache.directory.studio.common.core.jobs.StudioRunnableWithProgress;
+import org.apache.directory.studio.ldapbrowser.core.BrowserCorePlugin;
+import org.apache.directory.studio.ldapbrowser.core.model.IBrowserConnection;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IEditorInput;
+
+import org.apache.directory.studio.openldap.config.editor.ConnectionServerConfigurationInput;
+import org.apache.directory.studio.openldap.config.editor.ServerConfigurationEditor;
+import org.apache.directory.studio.openldap.config.model.OpenLdapConfiguration;
+import org.apache.directory.studio.openldap.config.model.io.ConfigurationReader;
+
+
+/**
+ * This class implements a {@link Job} that is used to load a server configuration.
+ * 
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class LoadConfigurationRunnable implements StudioRunnableWithProgress
+{
+    /** The associated editor */
+    private ServerConfigurationEditor editor;
+
+
+    /**
+     * Creates a new instance of LoadConfigurationRunnable.
+     * 
+     * @param editor
+     *            the editor
+     */
+    public LoadConfigurationRunnable( ServerConfigurationEditor editor )
+    {
+        super();
+        this.editor = editor;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public String getErrorMessage()
+    {
+        return "Unable to load the configuration.";
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public Object[] getLockedObjects()
+    {
+        return new Object[0];
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public String getName()
+    {
+        return "Load Configuration";
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void run( StudioProgressMonitor monitor )
+    {
+        IEditorInput input = editor.getEditorInput();
+
+        try
+        {
+            final OpenLdapConfiguration configuration = getConfiguration( input, monitor );
+            if ( configuration != null )
+            {
+                Display.getDefault().asyncExec( new Runnable()
+                {
+                    public void run()
+                    {
+                        editor.configurationLoaded( configuration );
+                    }
+                } );
+            }
+        }
+        catch ( Exception e )
+        {
+            // Reporting the error to the monitor
+            monitor.reportError( e );
+
+            // Reporting the error to the editor
+            final Exception exception = e;
+            Display.getDefault().asyncExec( new Runnable()
+            {
+                public void run()
+                {
+                    editor.configurationLoadFailed( exception );
+                }
+            } );
+        }
+    }
+
+
+    /**
+     * Gets the configuration from the input.
+     * 
+     * @param input
+     *      the editor input
+     * @param monitor
+     *      the studio progress monitor
+     * @return
+     *      the configuration
+     * @throws Exception
+     */
+    public OpenLdapConfiguration getConfiguration( IEditorInput input, StudioProgressMonitor monitor ) throws Exception
+    {
+        // If the input is a ConnectionServerConfigurationInput, then we 
+        // read the server configuration from the selected connection
+        if ( input instanceof ConnectionServerConfigurationInput )
+        {
+            return readConfiguration( ( ConnectionServerConfigurationInput ) input, monitor );
+        }
+
+        return null;
+    }
+
+
+    /**
+     * Reads the configuration from the given connection.
+     *
+     * @param input
+     *      the editor input
+     * @param monitor 
+     *      the studio progress monitor
+     * @return
+     *      the associated configuration bean
+     * @throws Exception
+     */
+    private OpenLdapConfiguration readConfiguration( ConnectionServerConfigurationInput input,
+        StudioProgressMonitor monitor ) throws Exception
+    {
+        if ( input != null )
+        {
+            return ConfigurationReader.readConfiguration( input );
+        }
+
+        return null;
+    }
+}