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 2008/05/21 15:15:10 UTC

svn commit: r658674 - in /directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v152: AuthenticationPage.java dialogs/BinaryAttributeDialog.java dialogs/SaslRealmDialog.java

Author: pamarcelot
Date: Wed May 21 06:15:09 2008
New Revision: 658674

URL: http://svn.apache.org/viewvc?rev=658674&view=rev
Log:
o Removed unused BinaryAttributeDialog class.
o Added a new dialog for editing SASL Realms: SaslRealmDialog
o Added listeners to the Authentication Page.
o Modified the Authentication Page to save the values to the configuration

Added:
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v152/dialogs/SaslRealmDialog.java
Removed:
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v152/dialogs/BinaryAttributeDialog.java
Modified:
    directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v152/AuthenticationPage.java

Modified: directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v152/AuthenticationPage.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v152/AuthenticationPage.java?rev=658674&r1=658673&r2=658674&view=diff
==============================================================================
--- directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v152/AuthenticationPage.java (original)
+++ directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v152/AuthenticationPage.java Wed May 21 06:15:09 2008
@@ -25,18 +25,25 @@
 
 import org.apache.directory.studio.apacheds.configuration.editor.SaveableFormPage;
 import org.apache.directory.studio.apacheds.configuration.editor.ServerConfigurationEditor;
+import org.apache.directory.studio.apacheds.configuration.editor.v152.dialogs.SaslRealmDialog;
 import org.apache.directory.studio.apacheds.configuration.model.v152.SaslQualityOfProtectionEnum;
 import org.apache.directory.studio.apacheds.configuration.model.v152.ServerConfigurationV152;
 import org.apache.directory.studio.apacheds.configuration.model.v152.SupportedMechanismEnum;
+import org.eclipse.jface.dialogs.Dialog;
 import org.eclipse.jface.viewers.ArrayContentProvider;
 import org.eclipse.jface.viewers.CheckStateChangedEvent;
 import org.eclipse.jface.viewers.CheckboxTableViewer;
+import org.eclipse.jface.viewers.DoubleClickEvent;
 import org.eclipse.jface.viewers.ICheckStateListener;
-import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Button;
@@ -67,12 +74,22 @@
     /** The Page Title */
     private static final String TITLE = "Authentication";
 
+    private List<String> saslRealms;
+
     // UI Fields
     private CheckboxTableViewer supportedMechanismsTableViewer;
     private Button selectAllSupportedMechanismsButton;
     private Button deselectAllSupportedMechanismsButton;
-
+    private Text saslHostText;
+    private Text saslPrincipalText;
+    private Text searchBaseDnText;
     private CheckboxTableViewer saslQualityOfProtectionTableViewer;
+    private Button selectAllQualityOfProtectionButton;
+    private Button deselectAllQualityOfProtectionButton;
+    private CheckboxTableViewer saslRealmsTableViewer;
+    private Button addSaslRealmButton;
+    private Button editSaslRealmsButton;
+    private Button deleteSaslRealmButton;
 
 
     /**
@@ -84,6 +101,7 @@
     public AuthenticationPage( FormEditor editor )
     {
         super( editor, ID, TITLE );
+        saslRealms = new ArrayList<String>();
     }
 
 
@@ -157,48 +175,6 @@
 
 
     /**
-     * Creates the SASL Realms Section
-     *
-     * @param parent
-     *      the parent composite
-     * @param toolkit
-     *      the toolkit to use
-     */
-    private void createSaslRealmsSection( Composite parent, FormToolkit toolkit )
-    {
-        // Creation of the section
-        Section section = toolkit.createSection( parent, Section.TITLE_BAR );
-        section.setText( "SASL Realms" );
-        section.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
-        Composite client = toolkit.createComposite( section );
-        toolkit.paintBordersFor( client );
-        GridLayout glayout = new GridLayout( 2, false );
-        client.setLayout( glayout );
-        section.setClient( client );
-
-        // SASL Realms Table
-        Table saslRealmsTable = toolkit.createTable( client, SWT.NONE );
-        GridData gd = new GridData( SWT.FILL, SWT.NONE, true, false, 1, 3 );
-        gd.heightHint = 82;
-        saslRealmsTable.setLayoutData( gd );
-        TableViewer saslRealmsTableViewer = new CheckboxTableViewer( saslRealmsTable );
-        saslRealmsTableViewer.setContentProvider( new ArrayContentProvider() );
-
-        // Add Button
-        Button addSaslRealmButton = toolkit.createButton( client, "Add...", SWT.PUSH );
-        addSaslRealmButton.setLayoutData( new GridData( SWT.FILL, SWT.BEGINNING, false, false ) );
-
-        // Edit Button
-        Button editSaslRealmsButton = toolkit.createButton( client, "Edit...", SWT.PUSH );
-        editSaslRealmsButton.setLayoutData( new GridData( SWT.FILL, SWT.BEGINNING, false, false ) );
-
-        // Delete Button
-        Button deleteSaslRealmButton = toolkit.createButton( client, "Delete", SWT.PUSH );
-        deleteSaslRealmButton.setLayoutData( new GridData( SWT.FILL, SWT.BEGINNING, false, false ) );
-    }
-
-
-    /**
      * Creates the SASL Settings Section
      *
      * @param parent
@@ -220,17 +196,17 @@
 
         // SASL Host
         toolkit.createLabel( client, "SASL Host:" );
-        Text saslHostText = toolkit.createText( client, "" );
+        saslHostText = toolkit.createText( client, "" );
         saslHostText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
 
         // SASL Principal
         toolkit.createLabel( client, "SASL Principal:" );
-        Text saslPrincipalText = toolkit.createText( client, "" );
+        saslPrincipalText = toolkit.createText( client, "" );
         saslPrincipalText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
 
         // Search Base DN
         toolkit.createLabel( client, "Search Base DN:" );
-        Text searchBaseDnText = toolkit.createText( client, "" );
+        searchBaseDnText = toolkit.createText( client, "" );
         searchBaseDnText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
     }
 
@@ -267,16 +243,60 @@
                 SaslQualityOfProtectionEnum.AUTH_CONF } );
 
         // Select All Button
-        Button selectAllQualityOfProtectionButton = toolkit.createButton( client, "Select All", SWT.PUSH );
+        selectAllQualityOfProtectionButton = toolkit.createButton( client, "Select All", SWT.PUSH );
         selectAllQualityOfProtectionButton.setLayoutData( new GridData( SWT.FILL, SWT.BEGINNING, false, false ) );
 
         // Deselect All Button
-        Button deselectAllQualityOfProtectionButton = toolkit.createButton( client, "Deselect All", SWT.PUSH );
+        deselectAllQualityOfProtectionButton = toolkit.createButton( client, "Deselect All", SWT.PUSH );
         deselectAllQualityOfProtectionButton.setLayoutData( new GridData( SWT.FILL, SWT.BEGINNING, false, false ) );
     }
 
 
     /**
+     * Creates the SASL Realms Section
+     *
+     * @param parent
+     *      the parent composite
+     * @param toolkit
+     *      the toolkit to use
+     */
+    private void createSaslRealmsSection( Composite parent, FormToolkit toolkit )
+    {
+        // Creation of the section
+        Section section = toolkit.createSection( parent, Section.TITLE_BAR );
+        section.setText( "SASL Realms" );
+        section.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+        Composite client = toolkit.createComposite( section );
+        toolkit.paintBordersFor( client );
+        GridLayout glayout = new GridLayout( 2, false );
+        client.setLayout( glayout );
+        section.setClient( client );
+
+        // SASL Realms Table
+        Table saslRealmsTable = toolkit.createTable( client, SWT.NONE );
+        GridData gd = new GridData( SWT.FILL, SWT.NONE, true, false, 1, 3 );
+        gd.heightHint = 82;
+        saslRealmsTable.setLayoutData( gd );
+        saslRealmsTableViewer = new CheckboxTableViewer( saslRealmsTable );
+        saslRealmsTableViewer.setContentProvider( new ArrayContentProvider() );
+
+        // Add Button
+        addSaslRealmButton = toolkit.createButton( client, "Add...", SWT.PUSH );
+        addSaslRealmButton.setLayoutData( new GridData( SWT.FILL, SWT.BEGINNING, false, false ) );
+
+        // Edit Button
+        editSaslRealmsButton = toolkit.createButton( client, "Edit...", SWT.PUSH );
+        editSaslRealmsButton.setLayoutData( new GridData( SWT.FILL, SWT.BEGINNING, false, false ) );
+        editSaslRealmsButton.setEnabled( false );
+
+        // Delete Button
+        deleteSaslRealmButton = toolkit.createButton( client, "Delete", SWT.PUSH );
+        deleteSaslRealmButton.setLayoutData( new GridData( SWT.FILL, SWT.BEGINNING, false, false ) );
+        deleteSaslRealmButton.setEnabled( false );
+    }
+
+
+    /**
      * Initializes the page with the Editor input.
      */
     private void initFromInput()
@@ -287,9 +307,21 @@
         // Supported Authentication Mechanisms
         supportedMechanismsTableViewer.setCheckedElements( configuration.getSupportedMechanisms().toArray() );
 
+        // SASL Host
+        saslHostText.setText( configuration.getSaslHost() );
+
+        // SASL Principal
+        saslPrincipalText.setText( configuration.getSaslPrincipal() );
+
+        // Search Base DN
+        searchBaseDnText.setText( configuration.getSearchBaseDn() );
+
         // SASL Quality Of Protection
         saslQualityOfProtectionTableViewer.setCheckedElements( configuration.getSaslQops().toArray() );
 
+        // SASL Realms
+        saslRealms.addAll( configuration.getSaslRealms() );
+        saslRealmsTableViewer.setInput( saslRealms );
     }
 
 
@@ -298,31 +330,32 @@
      */
     private void addListeners()
     {
-        //  The Selection Listener
-        SelectionListener selectionListener = new SelectionAdapter()
+        //  The Modify Listener
+        ModifyListener modifyListener = new ModifyListener()
         {
-            public void widgetSelected( SelectionEvent e )
+            public void modifyText( ModifyEvent e )
             {
                 setEditorDirty();
             }
         };
 
+        // Supported Authentication Mechanisms
         selectAllSupportedMechanismsButton.addSelectionListener( new SelectionAdapter()
         {
             public void widgetSelected( SelectionEvent e )
             {
                 supportedMechanismsTableViewer.setAllChecked( true );
+                setEditorDirty();
             }
         } );
-
         deselectAllSupportedMechanismsButton.addSelectionListener( new SelectionAdapter()
         {
             public void widgetSelected( SelectionEvent e )
             {
                 supportedMechanismsTableViewer.setAllChecked( false );
+                setEditorDirty();
             }
         } );
-
         supportedMechanismsTableViewer.addCheckStateListener( new ICheckStateListener()
         {
             public void checkStateChanged( CheckStateChangedEvent event )
@@ -331,8 +364,127 @@
             }
         } );
 
-        selectAllSupportedMechanismsButton.addSelectionListener( selectionListener );
-        deselectAllSupportedMechanismsButton.addSelectionListener( selectionListener );
+        // SASL Host
+        saslHostText.addModifyListener( modifyListener );
+
+        // SASL Principal
+        saslPrincipalText.addModifyListener( modifyListener );
+
+        // Search Base DN
+        searchBaseDnText.addModifyListener( modifyListener );
+
+        // SASL Quality Of Protection
+        selectAllQualityOfProtectionButton.addSelectionListener( new SelectionAdapter()
+        {
+            public void widgetSelected( SelectionEvent e )
+            {
+                saslQualityOfProtectionTableViewer.setAllChecked( true );
+                setEditorDirty();
+            }
+        } );
+        deselectAllQualityOfProtectionButton.addSelectionListener( new SelectionAdapter()
+        {
+            public void widgetSelected( SelectionEvent e )
+            {
+                saslQualityOfProtectionTableViewer.setAllChecked( false );
+                setEditorDirty();
+            }
+        } );
+        saslQualityOfProtectionTableViewer.addCheckStateListener( new ICheckStateListener()
+        {
+            public void checkStateChanged( CheckStateChangedEvent event )
+            {
+                setEditorDirty();
+            }
+        } );
+
+        // SASL Realms
+        saslRealmsTableViewer.addSelectionChangedListener( new ISelectionChangedListener()
+        {
+            public void selectionChanged( SelectionChangedEvent event )
+            {
+                editSaslRealmsButton.setEnabled( !event.getSelection().isEmpty() );
+                deleteSaslRealmButton.setEnabled( !event.getSelection().isEmpty() );
+            }
+        } );
+        saslRealmsTableViewer.addDoubleClickListener( new IDoubleClickListener()
+        {
+            public void doubleClick( DoubleClickEvent event )
+            {
+                editSelectedSaslRealm();
+            }
+        } );
+        addSaslRealmButton.addSelectionListener( new SelectionAdapter()
+        {
+            public void widgetSelected( SelectionEvent e )
+            {
+                SaslRealmDialog dialog = new SaslRealmDialog( "" );
+                if ( Dialog.OK == dialog.open() && dialog.isDirty() )
+                {
+                    String newSaslRealm = dialog.getSaslRealm();
+                    if ( newSaslRealm != null && !"".equals( newSaslRealm ) && !saslRealms.contains( newSaslRealm ) )
+                    {
+                        saslRealms.add( newSaslRealm );
+
+                        saslRealmsTableViewer.refresh();
+                        setEditorDirty();
+                    }
+                }
+            }
+        } );
+        editSaslRealmsButton.addSelectionListener( new SelectionAdapter()
+        {
+            public void widgetSelected( SelectionEvent e )
+            {
+                editSelectedSaslRealm();
+            }
+        } );
+
+        // The SelectionListener for the Binary Attributes Delete Button
+        deleteSaslRealmButton.addSelectionListener( new SelectionAdapter()
+        {
+            public void widgetSelected( SelectionEvent e )
+            {
+                StructuredSelection selection = ( StructuredSelection ) saslRealmsTableViewer.getSelection();
+                if ( !selection.isEmpty() )
+                {
+                    String saslRealm = ( String ) selection.getFirstElement();
+                    saslRealms.remove( saslRealm );
+
+                    saslRealmsTableViewer.refresh();
+                    setEditorDirty();
+                }
+            }
+        } );
+    }
+
+
+    /**
+     * Opens a SASL Realm Dialog with the selected SASL Realm in the SASL 
+     * Realms Table Viewer.
+     */
+    private void editSelectedSaslRealm()
+    {
+        StructuredSelection selection = ( StructuredSelection ) saslRealmsTableViewer.getSelection();
+        if ( !selection.isEmpty() )
+        {
+            String oldSaslRealm = ( String ) selection.getFirstElement();
+
+            SaslRealmDialog dialog = new SaslRealmDialog( oldSaslRealm );
+            if ( Dialog.OK == dialog.open() && dialog.isDirty() )
+            {
+                saslRealms.remove( oldSaslRealm );
+
+                String newSaslRealm = dialog.getSaslRealm();
+                if ( newSaslRealm != null && !"".equals( newSaslRealm ) && !saslRealms.contains( newSaslRealm ) )
+                {
+                    saslRealms.add( newSaslRealm );
+                }
+
+                saslRealmsTableViewer.refresh();
+                setEditorDirty();
+            }
+        }
     }
 
 
@@ -353,11 +505,32 @@
         ServerConfigurationV152 configuration = ( ServerConfigurationV152 ) ( ( ServerConfigurationEditor ) getEditor() )
             .getServerConfiguration();
 
+        // Supported Authentication Mechanisms
         List<SupportedMechanismEnum> supportedMechanismsList = new ArrayList<SupportedMechanismEnum>();
         for ( Object supportedMechanism : supportedMechanismsTableViewer.getCheckedElements() )
         {
             supportedMechanismsList.add( ( SupportedMechanismEnum ) supportedMechanism );
         }
         configuration.setSupportedMechanisms( supportedMechanismsList );
+
+        // SASL Host
+        configuration.setSaslHost( saslHostText.getText() );
+
+        // SASL Principal
+        configuration.setSaslPrincipal( saslPrincipalText.getText() );
+
+        // Search Base DN
+        configuration.setSearchBaseDn( searchBaseDnText.getText() );
+
+        // SASL Quality Of Protection
+        List<SaslQualityOfProtectionEnum> saslQoPList = new ArrayList<SaslQualityOfProtectionEnum>();
+        for ( Object qop : supportedMechanismsTableViewer.getCheckedElements() )
+        {
+            saslQoPList.add( ( SaslQualityOfProtectionEnum ) qop );
+        }
+        configuration.setSaslQops( saslQoPList );
+
+        // SASL Realms
+        configuration.setSaslRealms( saslRealms );
     }
 }

Added: directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v152/dialogs/SaslRealmDialog.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v152/dialogs/SaslRealmDialog.java?rev=658674&view=auto
==============================================================================
--- directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v152/dialogs/SaslRealmDialog.java (added)
+++ directory/studio/trunk/apacheds-configuration/src/main/java/org/apache/directory/studio/apacheds/configuration/editor/v152/dialogs/SaslRealmDialog.java Wed May 21 06:15:09 2008
@@ -0,0 +1,158 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *  
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *  
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License. 
+ *  
+ */
+package org.apache.directory.studio.apacheds.configuration.editor.v152.dialogs;
+
+
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.PlatformUI;
+
+
+/**
+ * This class implements the Dialog for SASL Realm.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class SaslRealmDialog extends Dialog
+{
+    /** The initial value */
+    private String initialValue;
+
+    /** The return value */
+    private String returnValue;
+
+    /** The dirty flag */
+    private boolean dirty = false;
+
+    // UI Fields
+    private Text saslRealmText;
+
+
+    /**
+     * Creates a new instance of SaslRealmDialog.
+     */
+    public SaslRealmDialog( String initialValue )
+    {
+        super( PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell() );
+        this.initialValue = initialValue;
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)
+     */
+    protected void configureShell( Shell newShell )
+    {
+        super.configureShell( newShell );
+        newShell.setText( "SASL Realm Dialog" );
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
+     */
+    protected Control createDialogArea( Composite parent )
+    {
+        Composite composite = new Composite( parent, SWT.NONE );
+        GridLayout layout = new GridLayout( 2, false );
+        composite.setLayout( layout );
+        composite.setLayoutData( new GridData( GridData.FILL, GridData.FILL, true, true ) );
+
+        Label saslRealmLabel = new Label( composite, SWT.NONE );
+        saslRealmLabel.setText( "SASL Realm:" );
+
+        saslRealmText = new Text( composite, SWT.BORDER );
+        saslRealmText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+
+        initFromInput();
+        addListeners();
+
+        return composite;
+    }
+
+
+    /**
+     * Initializes the UI from the input.
+     */
+    private void initFromInput()
+    {
+        saslRealmText.setText( ( initialValue == null ) ? "" : initialValue );
+    }
+
+
+    /**
+     * Adds listeners to the UI Fields.
+     */
+    private void addListeners()
+    {
+        saslRealmText.addModifyListener( new ModifyListener()
+        {
+            public void modifyText( ModifyEvent e )
+            {
+                dirty = true;
+            }
+        } );
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.eclipse.jface.dialogs.Dialog#okPressed()
+     */
+    protected void okPressed()
+    {
+        returnValue = saslRealmText.getText();
+
+        super.okPressed();
+    }
+
+
+    /**
+     * Gets the SASL Realm.
+     *
+     * @return
+     *      the SASL Realm
+     */
+    public String getSaslRealm()
+    {
+        return returnValue;
+    }
+
+
+    /**
+     * Returns the dirty flag of the dialog.
+     *
+     * @return
+     *      the dirty flag of the dialog
+     */
+    public boolean isDirty()
+    {
+        return dirty;
+    }
+}