From commits-return-14430-apmail-directory-commits-archive=directory.apache.org@directory.apache.org Tue Jul 03 08:51:09 2007 Return-Path: Delivered-To: apmail-directory-commits-archive@www.apache.org Received: (qmail 90985 invoked from network); 3 Jul 2007 08:51:07 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 3 Jul 2007 08:51:07 -0000 Received: (qmail 3838 invoked by uid 500); 3 Jul 2007 08:51:10 -0000 Delivered-To: apmail-directory-commits-archive@directory.apache.org Received: (qmail 3801 invoked by uid 500); 3 Jul 2007 08:51:10 -0000 Mailing-List: contact commits-help@directory.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@directory.apache.org Delivered-To: mailing list commits@directory.apache.org Received: (qmail 3790 invoked by uid 99); 3 Jul 2007 08:51:10 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 03 Jul 2007 01:51:10 -0700 X-ASF-Spam-Status: No, hits=-99.5 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 03 Jul 2007 01:51:05 -0700 Received: by eris.apache.org (Postfix, from userid 65534) id BFFF01A981A; Tue, 3 Jul 2007 01:50:44 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r552744 - in /directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view: dialogs/ wizards/ Date: Tue, 03 Jul 2007 08:50:43 -0000 To: commits@directory.apache.org From: pamarcelot@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20070703085044.BFFF01A981A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: pamarcelot Date: Tue Jul 3 01:50:42 2007 New Revision: 552744 URL: http://svn.apache.org/viewvc?view=rev&rev=552744 Log: Added the ObjectClassSelectionDialog. Modified the NewObjectClassWizard with correct behavior. Added: directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/dialogs/ObjectClassSelectionDialog.java directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/dialogs/ObjectClassSelectionDialogContentProvider.java Modified: directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wizards/NewObjectClassContentWizardPage.java directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wizards/NewObjectClassGeneralPageWizardPage.java directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wizards/NewObjectClassMandatoryAttributesPage.java directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wizards/NewObjectClassOptionalAttributesPage.java directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wizards/NewObjectClassWizard.java Added: directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/dialogs/ObjectClassSelectionDialog.java URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/dialogs/ObjectClassSelectionDialog.java?view=auto&rev=552744 ============================================================================== --- directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/dialogs/ObjectClassSelectionDialog.java (added) +++ directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/dialogs/ObjectClassSelectionDialog.java Tue Jul 3 01:50:42 2007 @@ -0,0 +1,232 @@ +/* + * 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.schemaeditor.view.dialogs; + + +import java.util.ArrayList; +import java.util.List; + +import org.apache.directory.studio.apacheds.schemaeditor.model.ObjectClassImpl; +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.dialogs.IDialogConstants; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.KeyAdapter; +import org.eclipse.swt.events.KeyEvent; +import org.eclipse.swt.events.ModifyEvent; +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.events.MouseAdapter; +import org.eclipse.swt.events.MouseEvent; +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.Table; +import org.eclipse.swt.widgets.Text; +import org.eclipse.ui.PlatformUI; + + +/** + * This class is the Object Class Selection Dialog, that allows user to select an object class. + * + * @author Apache Directory Project + * @version $Rev$, $Date$ + */ +public class ObjectClassSelectionDialog extends Dialog +{ + /** The selected object class */ + private ObjectClassImpl selectedObjectClass; + + /** The hidden Object Classes */ + private List hiddenObjectClasses; + + // UI Fields + private Text searchText; + private Table objectClassesTable; + private TableViewer tableViewer; + + + /** + * Creates a new instance of ObjectClassSelectionDialog. + */ + public ObjectClassSelectionDialog() + { + super( PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell() ); + hiddenObjectClasses = new ArrayList(); + } + + + /* (non-Javadoc) + * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell) + */ + protected void configureShell( Shell newShell ) + { + super.configureShell( newShell ); + newShell.setText( "Object Class Selection" ); //$NON-NLS-1$ + } + + + /* (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( 1, false ); + composite.setLayout( layout ); + + Label chooseLabel = new Label( composite, SWT.NONE ); + chooseLabel.setText( "Choose an object class" ); + chooseLabel.setLayoutData( new GridData( GridData.FILL, SWT.NONE, true, false ) ); + + searchText = new Text( composite, SWT.BORDER ); + searchText.setLayoutData( new GridData( GridData.FILL, SWT.NONE, true, false ) ); + searchText.addModifyListener( new ModifyListener() + { + public void modifyText( ModifyEvent e ) + { + tableViewer.setInput( searchText.getText() ); + objectClassesTable.select( 0 ); + } + } ); + searchText.addKeyListener( new KeyAdapter() + { + public void keyPressed( KeyEvent e ) + { + if ( e.keyCode == SWT.ARROW_DOWN ) + { + objectClassesTable.setFocus(); + } + } + } ); + + Label matchingLabel = new Label( composite, SWT.NONE ); + matchingLabel.setText( "Matching object class(es)" ); + matchingLabel.setLayoutData( new GridData( GridData.FILL, SWT.None, true, false ) ); + + objectClassesTable = new Table( composite, SWT.SINGLE | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL + | SWT.FULL_SELECTION | SWT.HIDE_SELECTION ); + GridData gridData = new GridData( GridData.FILL, GridData.FILL, true, true ); + gridData.heightHint = 148; + gridData.minimumHeight = 148; + gridData.widthHint = 350; + gridData.minimumWidth = 350; + objectClassesTable.setLayoutData( gridData ); + objectClassesTable.addMouseListener( new MouseAdapter() + { + public void mouseDoubleClick( MouseEvent e ) + { + if ( objectClassesTable.getSelectionIndex() != -1 ) + { + okPressed(); + } + } + } ); + + tableViewer = new TableViewer( objectClassesTable ); + tableViewer.setUseHashlookup( true ); + + tableViewer.setContentProvider( new ObjectClassSelectionDialogContentProvider( hiddenObjectClasses ) ); + tableViewer.setLabelProvider( new LabelProvider() ); + + // We need to force the input to load the complete list of attribute types + tableViewer.setInput( "" ); //$NON-NLS-1$ + // We also need to force the selection of the first row + objectClassesTable.select( 0 ); + + return composite; + } + + + /* (non-Javadoc) + * @see org.eclipse.jface.dialogs.Dialog#createButtonsForButtonBar(org.eclipse.swt.widgets.Composite) + */ + protected void createButtonsForButtonBar( Composite parent ) + { + createButton( parent, IDialogConstants.OK_ID, "Add", true ); + createButton( parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false ); + } + + + /* (non-Javadoc) + * @see org.eclipse.jface.dialogs.Dialog#okPressed() + */ + protected void okPressed() + { + StructuredSelection selection = ( StructuredSelection ) tableViewer.getSelection(); + + if ( selection.isEmpty() ) + { + MessageDialog.openError( getShell(), "Invalid Selection", "You have to choose an object class" ); + return; + } + else + { + selectedObjectClass = ( ObjectClassImpl ) selection.getFirstElement(); + } + + super.okPressed(); + } + + + /** + * Returns the selected Object Class. + * + * @return + * the selected Object Class + */ + public ObjectClassImpl getSelectedObjectClass() + { + return selectedObjectClass; + } + + + /** + * Set the hidden Object Classes. + * + * @param list + * a list of Object Classes to hide + */ + public void setHiddenObjectClasses( List list ) + { + hiddenObjectClasses = list; + } + + + /** + * Sets the hidden Object Classes. + * + * @param objectClasses + * an array of Object Classes to hide + */ + public void setHiddenObjectClasses( ObjectClassImpl[] objectClasses ) + { + for ( ObjectClassImpl objectClass : objectClasses ) + { + hiddenObjectClasses.add( objectClass ); + } + } +} Added: directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/dialogs/ObjectClassSelectionDialogContentProvider.java URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/dialogs/ObjectClassSelectionDialogContentProvider.java?view=auto&rev=552744 ============================================================================== --- directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/dialogs/ObjectClassSelectionDialogContentProvider.java (added) +++ directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/dialogs/ObjectClassSelectionDialogContentProvider.java Tue Jul 3 01:50:42 2007 @@ -0,0 +1,168 @@ +/* + * 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.schemaeditor.view.dialogs; + + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.apache.directory.studio.apacheds.schemaeditor.Activator; +import org.apache.directory.studio.apacheds.schemaeditor.controller.SchemaHandler; +import org.apache.directory.studio.apacheds.schemaeditor.model.ObjectClassImpl; +import org.eclipse.jface.viewers.IStructuredContentProvider; +import org.eclipse.jface.viewers.Viewer; + + +/** + * This class is the Content Provider for the Object Class Selection Dialog. + * + * @author Apache Directory Project + * @version $Rev$, $Date$ + */ +public class ObjectClassSelectionDialogContentProvider implements IStructuredContentProvider +{ + /** The schema handler */ + private SchemaHandler schemaHandler; + + /** The hidden object classes */ + private List hiddenObjectClasses; + + + /** + * Creates a new instance of ObjectClassSelectionDialogContentProvider. + */ + public ObjectClassSelectionDialogContentProvider( List hiddenObjectClasses ) + { + schemaHandler = Activator.getDefault().getSchemaHandler(); + this.hiddenObjectClasses = hiddenObjectClasses; + } + + + /* (non-Javadoc) + * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object) + */ + public Object[] getElements( Object inputElement ) + { + if ( inputElement instanceof String ) + { + ArrayList results = new ArrayList(); + + String searchText = ( String ) inputElement; + + String searchRegexp; + if ( searchText.length() == 0 ) + { + searchRegexp = ".*"; //$NON-NLS-1$ + } + else + { + searchRegexp = searchText + ".*"; //$NON-NLS-1$ + } + Pattern pattern = Pattern.compile( searchRegexp, Pattern.CASE_INSENSITIVE ); + + List ocList = schemaHandler.getObjectClasses(); + + // Sorting the list + Collections.sort( ocList, new Comparator() + { + public int compare( ObjectClassImpl oc1, ObjectClassImpl oc2 ) + { + if ( ( oc1.getNames() == null || oc1.getNames().length == 0 ) + && ( oc2.getNames() == null || oc2.getNames().length == 0 ) ) + { + return 0; + } + else if ( ( oc1.getNames() == null || oc1.getNames().length == 0 ) + && ( oc2.getNames() != null && oc2.getNames().length > 0 ) ) + { + return "".compareToIgnoreCase( oc2.getNames()[0] ); //$NON-NLS-1$ + } + else if ( ( oc1.getNames() != null && oc1.getNames().length > 0 ) + && ( oc2.getNames() == null || oc2.getNames().length == 0 ) ) + { + return oc1.getNames()[0].compareToIgnoreCase( "" ); //$NON-NLS-1$ + } + else + { + return oc1.getNames()[0].compareToIgnoreCase( oc2.getNames()[0] ); + } + } + } ); + + // Searching for all matching elements + for ( ObjectClassImpl oc : ocList ) + { + for ( String name : oc.getNames() ) + { + Matcher m = pattern.matcher( name ); + if ( m.matches() ) + { + if ( !hiddenObjectClasses.contains( oc ) ) + { + if ( !results.contains( oc ) ) + { + results.add( oc ); + } + } + break; + } + } + Matcher m = pattern.matcher( oc.getOid() ); + if ( m.matches() ) + { + if ( !hiddenObjectClasses.contains( oc ) ) + { + if ( !results.contains( oc ) ) + { + results.add( oc ); + } + } + } + } + + // Returns the results + return results.toArray(); + } + + // Default + return new Object[0]; + } + + + /* (non-Javadoc) + * @see org.eclipse.jface.viewers.IContentProvider#dispose() + */ + public void dispose() + { + } + + + /* (non-Javadoc) + * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object) + */ + public void inputChanged( Viewer viewer, Object oldInput, Object newInput ) + { + } +} Modified: directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wizards/NewObjectClassContentWizardPage.java URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wizards/NewObjectClassContentWizardPage.java?view=diff&rev=552744&r1=552743&r2=552744 ============================================================================== --- directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wizards/NewObjectClassContentWizardPage.java (original) +++ directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wizards/NewObjectClassContentWizardPage.java Tue Jul 3 01:50:42 2007 @@ -20,13 +20,25 @@ package org.apache.directory.studio.apacheds.schemaeditor.view.wizards; +import java.util.ArrayList; +import java.util.List; + +import org.apache.directory.shared.ldap.schema.ObjectClassTypeEnum; import org.apache.directory.studio.apacheds.schemaeditor.Activator; import org.apache.directory.studio.apacheds.schemaeditor.PluginConstants; +import org.apache.directory.studio.apacheds.schemaeditor.model.ObjectClassImpl; +import org.apache.directory.studio.apacheds.schemaeditor.view.dialogs.ObjectClassSelectionDialog; +import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.viewers.ArrayContentProvider; +import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; @@ -48,6 +60,22 @@ */ public class NewObjectClassContentWizardPage extends WizardPage { + /** The superiors object classes */ + private List superiorsList; + + /** The type of the object class */ + private ObjectClassTypeEnum type = ObjectClassTypeEnum.STRUCTURAL; + + // UI Fields + private TableViewer superiorsTableViewer; + private Button superiorsAddButton; + private Button superiorsRemoveButton; + private Button structuralRadio; + private Button abstractRadio; + private Button auxiliaryRadio; + private Button obsoleteCheckbox; + + /** * Creates a new instance of NewAttributeTypeContentWizardPage. */ @@ -58,6 +86,7 @@ setDescription( "Please enter the superiors, class type and properties for the object class." ); setImageDescriptor( AbstractUIPlugin.imageDescriptorFromPlugin( Activator.PLUGIN_ID, PluginConstants.IMG_OBJECT_CLASS_NEW_WIZARD ) ); + superiorsList = new ArrayList(); } @@ -81,15 +110,38 @@ GridData superiorsTableGridData = new GridData( SWT.FILL, SWT.FILL, true, true, 1, 2 ); superiorsTableGridData.heightHint = 100; superiorsTable.setLayoutData( superiorsTableGridData ); - TableViewer superiorsTableViewer = new TableViewer( superiorsTable ); + superiorsTableViewer = new TableViewer( superiorsTable ); superiorsTableViewer.setLabelProvider( new LabelProvider() ); superiorsTableViewer.setContentProvider( new ArrayContentProvider() ); - Button superiorsAddButton = new Button( superiorsGroup, SWT.PUSH ); + superiorsTableViewer.setInput( superiorsList ); + superiorsTableViewer.addSelectionChangedListener( new ISelectionChangedListener() + { + public void selectionChanged( SelectionChangedEvent event ) + { + superiorsRemoveButton.setEnabled( !event.getSelection().isEmpty() ); + } + } ); + superiorsAddButton = new Button( superiorsGroup, SWT.PUSH ); superiorsAddButton.setText( "Add..." ); superiorsAddButton.setLayoutData( new GridData( SWT.FILL, SWT.NONE, false, false ) ); - Button superiorsRemoveButton = new Button( superiorsGroup, SWT.PUSH ); + superiorsAddButton.addSelectionListener( new SelectionAdapter() + { + public void widgetSelected( SelectionEvent arg0 ) + { + addSuperiorObjectClass(); + } + } ); + superiorsRemoveButton = new Button( superiorsGroup, SWT.PUSH ); superiorsRemoveButton.setText( "Remove" ); superiorsRemoveButton.setLayoutData( new GridData( SWT.FILL, SWT.NONE, false, false ) ); + superiorsRemoveButton.setEnabled( false ); + superiorsRemoveButton.addSelectionListener( new SelectionAdapter() + { + public void widgetSelected( SelectionEvent arg0 ) + { + removeSuperiorObjectClass(); + } + } ); // Class Type Group Group classTypeGroup = new Group( composite, SWT.NONE ); @@ -101,21 +153,43 @@ Label classTypeLable = new Label( classTypeGroup, SWT.NONE ); classTypeLable.setText( "Class Type:" ); new Label( classTypeGroup, SWT.NONE ).setText( " " ); - Button structuralRadio = new Button( classTypeGroup, SWT.RADIO ); + structuralRadio = new Button( classTypeGroup, SWT.RADIO ); structuralRadio.setText( "Structural" ); GridData structuralRadioGridData = new GridData( SWT.LEFT, SWT.NONE, false, false ); structuralRadioGridData.widthHint = 115; structuralRadio.setLayoutData( structuralRadioGridData ); - Button abstractRadio = new Button( classTypeGroup, SWT.RADIO ); + structuralRadio.addSelectionListener( new SelectionAdapter() + { + public void widgetSelected( SelectionEvent arg0 ) + { + type = ObjectClassTypeEnum.STRUCTURAL; + } + } ); + structuralRadio.setSelection( true ); + abstractRadio = new Button( classTypeGroup, SWT.RADIO ); abstractRadio.setText( "Abstract" ); GridData abstractRadioGridData = new GridData( SWT.LEFT, SWT.NONE, false, false ); abstractRadioGridData.widthHint = 115; abstractRadio.setLayoutData( structuralRadioGridData ); - Button auxiliaryRadio = new Button( classTypeGroup, SWT.RADIO ); + abstractRadio.addSelectionListener( new SelectionAdapter() + { + public void widgetSelected( SelectionEvent arg0 ) + { + type = ObjectClassTypeEnum.ABSTRACT; + } + } ); + auxiliaryRadio = new Button( classTypeGroup, SWT.RADIO ); auxiliaryRadio.setText( "Auxiliary" ); GridData auxiliaryRadioGridData = new GridData( SWT.LEFT, SWT.NONE, false, false ); auxiliaryRadioGridData.widthHint = 115; auxiliaryRadio.setLayoutData( structuralRadioGridData ); + auxiliaryRadio.addSelectionListener( new SelectionAdapter() + { + public void widgetSelected( SelectionEvent arg0 ) + { + type = ObjectClassTypeEnum.AUXILIARY; + } + } ); // Properties Group Group propertiesGroup = new Group( composite, SWT.NONE ); @@ -124,10 +198,91 @@ propertiesGroup.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) ); // Obsolete - new Label( composite, SWT.NONE ); - Button obsoleteCheckbox = new Button( propertiesGroup, SWT.CHECK ); + obsoleteCheckbox = new Button( propertiesGroup, SWT.CHECK ); obsoleteCheckbox.setText( "Obsolete" ); setControl( composite ); + } + + + /** + * This method is called when the "Add" button of the superiors + * table is selected. + */ + private void addSuperiorObjectClass() + { + ObjectClassSelectionDialog dialog = new ObjectClassSelectionDialog(); + dialog.setHiddenObjectClasses( superiorsList ); + if ( dialog.open() == Dialog.OK ) + { + superiorsList.add( dialog.getSelectedObjectClass() ); + updateSuperiorsTable(); + } + } + + + /** + * This method is called when the "Remove" button of the superiors + * table is selected. + */ + private void removeSuperiorObjectClass() + { + StructuredSelection selection = ( StructuredSelection ) superiorsTableViewer.getSelection(); + if ( !selection.isEmpty() ) + { + superiorsList.remove( selection.getFirstElement() ); + updateSuperiorsTable(); + } + } + + + /** + * Updates the superiors table + */ + private void updateSuperiorsTable() + { + superiorsTableViewer.refresh(); + } + + + /** + * Gets the value of the superiors. + * + * @return + * the value of the superiors + */ + public String[] getSuperiorsNameValue() + { + List names = new ArrayList(); + for ( ObjectClassImpl oc : superiorsList ) + { + names.add( oc.getName() ); + } + + return names.toArray( new String[0] ); + } + + + /** + * Gets the class type value. + * + * @return + * the class type value + */ + public ObjectClassTypeEnum getClassTypeValue() + { + return type; + } + + + /** + * Gets the 'Obsolete' value. + * + * @return + * the 'Obsolete' value + */ + public boolean getObsoleteValue() + { + return obsoleteCheckbox.getSelection(); } } Modified: directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wizards/NewObjectClassGeneralPageWizardPage.java URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wizards/NewObjectClassGeneralPageWizardPage.java?view=diff&rev=552744&r1=552743&r2=552744 ============================================================================== --- directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wizards/NewObjectClassGeneralPageWizardPage.java (original) +++ directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wizards/NewObjectClassGeneralPageWizardPage.java Tue Jul 3 01:50:42 2007 @@ -20,13 +20,26 @@ package org.apache.directory.studio.apacheds.schemaeditor.view.wizards; +import org.apache.directory.shared.asn1.primitives.OID; import org.apache.directory.studio.apacheds.schemaeditor.Activator; import org.apache.directory.studio.apacheds.schemaeditor.PluginConstants; +import org.apache.directory.studio.apacheds.schemaeditor.controller.SchemaHandler; +import org.apache.directory.studio.apacheds.schemaeditor.model.Schema; +import org.apache.directory.studio.apacheds.schemaeditor.view.dialogs.EditAliasesDialog; +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.dialogs.DialogPage; import org.eclipse.jface.viewers.ArrayContentProvider; import org.eclipse.jface.viewers.ComboViewer; +import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; +import org.eclipse.swt.events.ModifyEvent; +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; @@ -49,6 +62,20 @@ */ public class NewObjectClassGeneralPageWizardPage extends WizardPage { + /** The SchemaHandler */ + private SchemaHandler schemaHandler; + + /** The aliases */ + private String[] aliases; + + // UI fields + private ComboViewer schemaComboViewer; + private Text oidText; + private Text aliasesText; + private Button aliasesButton; + private Text descriptionText; + + /** * Creates a new instance of NewObjectClassGeneralPageWizardPage. */ @@ -59,6 +86,9 @@ setDescription( "Create a new object class." ); setImageDescriptor( AbstractUIPlugin.imageDescriptorFromPlugin( Activator.PLUGIN_ID, PluginConstants.IMG_OBJECT_CLASS_NEW_WIZARD ) ); + + schemaHandler = Activator.getDefault().getSchemaHandler(); + aliases = new String[0]; } @@ -82,9 +112,34 @@ schemaLabel.setText( "Schema:" ); Combo schemaCombo = new Combo( schemaGroup, SWT.READ_ONLY ); schemaCombo.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) ); - ComboViewer schemaComboViewer = new ComboViewer( schemaCombo ); - schemaComboViewer.setLabelProvider( new LabelProvider() ); + schemaComboViewer = new ComboViewer( schemaCombo ); schemaComboViewer.setContentProvider( new ArrayContentProvider() ); + schemaComboViewer.setLabelProvider( new LabelProvider() + { + /* (non-Javadoc) + * @see org.eclipse.jface.viewers.LabelProvider#getText(java.lang.Object) + */ + public String getText( Object element ) + { + if ( element instanceof Schema ) + { + return ( ( Schema ) element ).getName(); + } + + // Default + return super.getText( element ); + } + } ); + schemaComboViewer.addSelectionChangedListener( new ISelectionChangedListener() + { + /* (non-Javadoc) + * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent) + */ + public void selectionChanged( SelectionChangedEvent event ) + { + dialogChanged(); + } + } ); // Naming and Description Group Group namingDescriptionGroup = new Group( composite, SWT.NONE ); @@ -95,26 +150,214 @@ // OID Label oidLabel = new Label( namingDescriptionGroup, SWT.NONE ); oidLabel.setText( "OID:" ); - Text oidText = new Text( namingDescriptionGroup, SWT.BORDER ); + oidText = new Text( namingDescriptionGroup, SWT.BORDER ); oidText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false, 2, 1 ) ); + oidText.addModifyListener( new ModifyListener() + { + /* (non-Javadoc) + * @see org.eclipse.swt.events.ModifyListener#modifyText(org.eclipse.swt.events.ModifyEvent) + */ + public void modifyText( ModifyEvent arg0 ) + { + dialogChanged(); + } + } ); // Aliases Label aliasesLabel = new Label( namingDescriptionGroup, SWT.NONE ); aliasesLabel.setText( "Aliases:" ); - Text aliasesText = new Text( namingDescriptionGroup, SWT.BORDER ); + aliasesText = new Text( namingDescriptionGroup, SWT.BORDER ); aliasesText.setEnabled( false ); aliasesText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) ); - Button aliasesButton = new Button( namingDescriptionGroup, SWT.PUSH ); - aliasesButton.setText( "Edit" ); + aliasesButton = new Button( namingDescriptionGroup, SWT.PUSH ); + aliasesButton.setText( "Edit..." ); + aliasesButton.addSelectionListener( new SelectionAdapter() + { + /* (non-Javadoc) + * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent) + */ + public void widgetSelected( SelectionEvent arg0 ) + { + EditAliasesDialog dialog = new EditAliasesDialog( aliases ); + + if ( ( dialog.open() == Dialog.OK ) && ( dialog.isDirty() ) ) + { + aliases = dialog.getAliases(); + fillInAliasesLabel(); + dialogChanged(); + } + } + } ); // Description Label descriptionLabel = new Label( namingDescriptionGroup, SWT.NONE ); descriptionLabel.setText( "Description:" ); - Text descriptionText = new Text( namingDescriptionGroup, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL ); + descriptionText = new Text( namingDescriptionGroup, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL ); GridData descriptionGridData = new GridData( SWT.FILL, SWT.NONE, true, false, 2, 1 ); descriptionGridData.heightHint = 67; descriptionText.setLayoutData( descriptionGridData ); + descriptionText.addModifyListener( new ModifyListener() + { + /* (non-Javadoc) + * @see org.eclipse.swt.events.ModifyListener#modifyText(org.eclipse.swt.events.ModifyEvent) + */ + public void modifyText( ModifyEvent arg0 ) + { + dialogChanged(); + } + } ); + + initFields(); setControl( composite ); + + displayErrorMessage( null ); + setPageComplete( false ); + } + + + /** + * Initializes the UI fields. + */ + private void initFields() + { + schemaComboViewer.setInput( schemaHandler.getSchemas() ); + } + + + /** + * This method is called when the user modifies something in the UI. + */ + private void dialogChanged() + { + if ( schemaComboViewer.getSelection().isEmpty() ) + { + displayErrorMessage( "A Schema must be specified." ); + return; + } + else if ( oidText.getText().equals( "" ) ) + { + displayErrorMessage( "An OID must be specified." ); + return; + } + else if ( ( !oidText.getText().equals( "" ) ) && ( !OID.isOID( oidText.getText() ) ) ) + { + displayErrorMessage( "Incorrect OID." ); + return; + } + else if ( aliases.length == 0 ) + { + displayWarningMessage( "The attribute type does not have any name. It is recommanded to add at least one name." ); + return; + } + + displayErrorMessage( null ); + } + + + /** + * Displays an error message and set the page status as incomplete + * if the message is not null. + * + * @param message + * the message to display + */ + private void displayErrorMessage( String message ) + { + setMessage( null, DialogPage.WARNING ); + setErrorMessage( message ); + setPageComplete( message == null ); + } + + + /** + * Displays a warning message and set the page status as complete. + * + * @param message + * the message to display + */ + private void displayWarningMessage( String message ) + { + setErrorMessage( null ); + setMessage( message, DialogPage.WARNING ); + setPageComplete( true ); + } + + + /** + * Fills in the Aliases Label. + */ + private void fillInAliasesLabel() + { + StringBuffer sb = new StringBuffer(); + if ( aliases.length != 0 ) + { + for ( String name : aliases ) + { + sb.append( name ); + sb.append( ", " ); + } + sb.deleteCharAt( sb.length() - 1 ); + sb.deleteCharAt( sb.length() - 1 ); + } + aliasesText.setText( sb.toString() ); + } + + + /** + * Get the name of the schema. + * + * @return + * the name of the schema + */ + public String getSchemaValue() + { + StructuredSelection selection = ( StructuredSelection ) schemaComboViewer.getSelection(); + if ( !selection.isEmpty() ) + { + Schema schema = ( Schema ) selection.getFirstElement(); + + return schema.getName(); + } + else + { + return null; + } + } + + + /** + * Gets the value of the OID. + * + * @return + * the value of the OID + */ + public String getOidValue() + { + return oidText.getText(); + } + + + /** + * Gets the value of the aliases. + * + * @return + * the value of the aliases + */ + public String[] getAliasesValue() + { + return aliases; + } + + + /** + * Gets the value of the description. + * + * @return + * the value of the description + */ + public String getDescriptionValue() + { + return descriptionText.getText(); } } Modified: directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wizards/NewObjectClassMandatoryAttributesPage.java URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wizards/NewObjectClassMandatoryAttributesPage.java?view=diff&rev=552744&r1=552743&r2=552744 ============================================================================== --- directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wizards/NewObjectClassMandatoryAttributesPage.java (original) +++ directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wizards/NewObjectClassMandatoryAttributesPage.java Tue Jul 3 01:50:42 2007 @@ -20,13 +20,24 @@ package org.apache.directory.studio.apacheds.schemaeditor.view.wizards; +import java.util.ArrayList; +import java.util.List; + import org.apache.directory.studio.apacheds.schemaeditor.Activator; import org.apache.directory.studio.apacheds.schemaeditor.PluginConstants; +import org.apache.directory.studio.apacheds.schemaeditor.model.AttributeTypeImpl; +import org.apache.directory.studio.apacheds.schemaeditor.view.dialogs.AttributeTypeSelectionDialog; +import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.viewers.ArrayContentProvider; +import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; @@ -46,6 +57,15 @@ */ public class NewObjectClassMandatoryAttributesPage extends WizardPage { + /** The mandatory attribute types list */ + private List mandatoryAttributeTypesList; + + // UI Fields + private TableViewer mandatoryAttributeTypesTableViewer; + private Button mandatoryAttributeTypesAddButton; + private Button mandatoryAttributeTypesRemoveButton; + + /** * Creates a new instance of NewObjectClassMandatoryAttributesPage. */ @@ -56,6 +76,7 @@ setDescription( "Please specify the mandatory attribute types for the object class." ); setImageDescriptor( AbstractUIPlugin.imageDescriptorFromPlugin( Activator.PLUGIN_ID, PluginConstants.IMG_OBJECT_CLASS_NEW_WIZARD ) ); + mandatoryAttributeTypesList = new ArrayList(); } @@ -79,16 +100,113 @@ GridData mandatoryAttributeTypesTableGridData = new GridData( SWT.FILL, SWT.FILL, true, true, 1, 2 ); mandatoryAttributeTypesTableGridData.heightHint = 100; mandatoryAttributeTypesTable.setLayoutData( mandatoryAttributeTypesTableGridData ); - TableViewer mandatoryAttributeTypesTableViewer = new TableViewer( mandatoryAttributeTypesTable ); - mandatoryAttributeTypesTableViewer.setLabelProvider( new LabelProvider() ); + mandatoryAttributeTypesTableViewer = new TableViewer( mandatoryAttributeTypesTable ); mandatoryAttributeTypesTableViewer.setContentProvider( new ArrayContentProvider() ); - Button mandatoryAttributeTypesAddButton = new Button( mandatoryAttributeTypesGroup, SWT.PUSH ); + mandatoryAttributeTypesTableViewer.setLabelProvider( new LabelProvider() ); + mandatoryAttributeTypesTableViewer.setInput( mandatoryAttributeTypesList ); + mandatoryAttributeTypesTableViewer.addSelectionChangedListener( new ISelectionChangedListener() + { + public void selectionChanged( SelectionChangedEvent event ) + { + mandatoryAttributeTypesRemoveButton.setEnabled( !event.getSelection().isEmpty() ); + } + } ); + mandatoryAttributeTypesAddButton = new Button( mandatoryAttributeTypesGroup, SWT.PUSH ); mandatoryAttributeTypesAddButton.setText( "Add..." ); mandatoryAttributeTypesAddButton.setLayoutData( new GridData( SWT.FILL, SWT.NONE, false, false ) ); - Button mandatoryAttributeTypesRemoveButton = new Button( mandatoryAttributeTypesGroup, SWT.PUSH ); + mandatoryAttributeTypesAddButton.addSelectionListener( new SelectionAdapter() + { + public void widgetSelected( SelectionEvent arg0 ) + { + addMandatoryAttributeType(); + } + } ); + mandatoryAttributeTypesRemoveButton = new Button( mandatoryAttributeTypesGroup, SWT.PUSH ); mandatoryAttributeTypesRemoveButton.setText( "Remove" ); mandatoryAttributeTypesRemoveButton.setLayoutData( new GridData( SWT.FILL, SWT.NONE, false, false ) ); + mandatoryAttributeTypesRemoveButton.addSelectionListener( new SelectionAdapter() + { + public void widgetSelected( SelectionEvent arg0 ) + { + removeMandatoryAttributeType(); + } + } ); + mandatoryAttributeTypesRemoveButton.setEnabled( false ); setControl( composite ); + } + + + /** + * This method is called when the "Add" button of the mandatory + * attribute types table is selected. + */ + private void addMandatoryAttributeType() + { + AttributeTypeSelectionDialog dialog = new AttributeTypeSelectionDialog(); + List hiddenAttributes = new ArrayList(); + List optionalAttributes = ( ( NewObjectClassWizard ) getWizard() ) + .getOptionalAttributesPage().getOptionalAttributeTypes(); + hiddenAttributes.addAll( optionalAttributes ); + hiddenAttributes.addAll( mandatoryAttributeTypesList ); + dialog.setHiddenAttributeTypes( hiddenAttributes ); + if ( dialog.open() == Dialog.OK ) + { + mandatoryAttributeTypesList.add( dialog.getSelectedAttributeType() ); + updateMandatoryAttributeTypesTableTable(); + } + } + + + /** + * This method is called when the "Remove" button of the mandatory + * attribute types table is selected. + */ + private void removeMandatoryAttributeType() + { + StructuredSelection selection = ( StructuredSelection ) mandatoryAttributeTypesTableViewer.getSelection(); + if ( !selection.isEmpty() ) + { + mandatoryAttributeTypesList.remove( selection.getFirstElement() ); + updateMandatoryAttributeTypesTableTable(); + } + } + + + /** + * Updates the mandatory attribute types table. + */ + private void updateMandatoryAttributeTypesTableTable() + { + mandatoryAttributeTypesTableViewer.refresh(); + } + + + /** + * Gets the mandatory attribute types. + * + * @return + * the mandatory attributes types + */ + public List getMandatoryAttributeTypes() + { + return mandatoryAttributeTypesList; + } + + + /** + * Gets the names of the mandatory attribute types. + * + * @return + * the names of the mandatory attributes types + */ + public String[] getMandatoryAttributeTypesNames() + { + List names = new ArrayList(); + for ( AttributeTypeImpl at : mandatoryAttributeTypesList ) + { + names.add( at.getName() ); + } + return names.toArray( new String[0] ); } } Modified: directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wizards/NewObjectClassOptionalAttributesPage.java URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wizards/NewObjectClassOptionalAttributesPage.java?view=diff&rev=552744&r1=552743&r2=552744 ============================================================================== --- directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wizards/NewObjectClassOptionalAttributesPage.java (original) +++ directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wizards/NewObjectClassOptionalAttributesPage.java Tue Jul 3 01:50:42 2007 @@ -20,13 +20,24 @@ package org.apache.directory.studio.apacheds.schemaeditor.view.wizards; +import java.util.ArrayList; +import java.util.List; + import org.apache.directory.studio.apacheds.schemaeditor.Activator; import org.apache.directory.studio.apacheds.schemaeditor.PluginConstants; +import org.apache.directory.studio.apacheds.schemaeditor.model.AttributeTypeImpl; +import org.apache.directory.studio.apacheds.schemaeditor.view.dialogs.AttributeTypeSelectionDialog; +import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.viewers.ArrayContentProvider; +import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; @@ -46,6 +57,15 @@ */ public class NewObjectClassOptionalAttributesPage extends WizardPage { + /** The optional attribute types list */ + private List optionalAttributeTypesList; + + // UI Fields + private TableViewer optionalAttributeTypesTableViewer; + private Button optionalAttributeTypesAddButton; + private Button optionalAttributeTypesRemoveButton; + + /** * Creates a new instance of NewObjectClassOptionalAttributesPage. */ @@ -56,6 +76,7 @@ setDescription( "Please specify the optional attribute types for the object class." ); setImageDescriptor( AbstractUIPlugin.imageDescriptorFromPlugin( Activator.PLUGIN_ID, PluginConstants.IMG_OBJECT_CLASS_NEW_WIZARD ) ); + optionalAttributeTypesList = new ArrayList(); } @@ -79,16 +100,113 @@ GridData optionalAttributeTypesTableGridData = new GridData( SWT.FILL, SWT.FILL, true, true, 1, 2 ); optionalAttributeTypesTableGridData.heightHint = 100; optionalAttributeTypesTable.setLayoutData( optionalAttributeTypesTableGridData ); - TableViewer optionalAttributeTypesTableViewer = new TableViewer( optionalAttributeTypesTable ); - optionalAttributeTypesTableViewer.setLabelProvider( new LabelProvider() ); + optionalAttributeTypesTableViewer = new TableViewer( optionalAttributeTypesTable ); optionalAttributeTypesTableViewer.setContentProvider( new ArrayContentProvider() ); - Button optionalAttributeTypesAddButton = new Button( optionalAttributeTypesGroup, SWT.PUSH ); + optionalAttributeTypesTableViewer.setLabelProvider( new LabelProvider() ); + optionalAttributeTypesTableViewer.setInput( optionalAttributeTypesList ); + optionalAttributeTypesTableViewer.addSelectionChangedListener( new ISelectionChangedListener() + { + public void selectionChanged( SelectionChangedEvent event ) + { + optionalAttributeTypesRemoveButton.setEnabled( !event.getSelection().isEmpty() ); + } + } ); + optionalAttributeTypesAddButton = new Button( optionalAttributeTypesGroup, SWT.PUSH ); optionalAttributeTypesAddButton.setText( "Add..." ); optionalAttributeTypesAddButton.setLayoutData( new GridData( SWT.FILL, SWT.NONE, false, false ) ); - Button optionalAttributeTypesRemoveButton = new Button( optionalAttributeTypesGroup, SWT.PUSH ); + optionalAttributeTypesAddButton.addSelectionListener( new SelectionAdapter() + { + public void widgetSelected( SelectionEvent arg0 ) + { + addOptionalAttributeType(); + } + } ); + optionalAttributeTypesRemoveButton = new Button( optionalAttributeTypesGroup, SWT.PUSH ); optionalAttributeTypesRemoveButton.setText( "Remove" ); optionalAttributeTypesRemoveButton.setLayoutData( new GridData( SWT.FILL, SWT.NONE, false, false ) ); + optionalAttributeTypesRemoveButton.addSelectionListener( new SelectionAdapter() + { + public void widgetSelected( SelectionEvent arg0 ) + { + removeOptionalAttributeType(); + } + } ); + optionalAttributeTypesRemoveButton.setEnabled( false ); setControl( composite ); + } + + + /** + * This method is called when the "Add" button of the optional + * attribute types table is selected. + */ + private void addOptionalAttributeType() + { + AttributeTypeSelectionDialog dialog = new AttributeTypeSelectionDialog(); + List hiddenAttributes = new ArrayList(); + List mdndatoryAttributes = ( ( NewObjectClassWizard ) getWizard() ) + .getMandatoryAttributesPage().getMandatoryAttributeTypes(); + hiddenAttributes.addAll( mdndatoryAttributes ); + hiddenAttributes.addAll( optionalAttributeTypesList ); + dialog.setHiddenAttributeTypes( hiddenAttributes ); + if ( dialog.open() == Dialog.OK ) + { + optionalAttributeTypesList.add( dialog.getSelectedAttributeType() ); + updateOptionalAttributeTypesTableTable(); + } + } + + + /** + * This method is called when the "Remove" button of the optional + * attribute types table is selected. + */ + private void removeOptionalAttributeType() + { + StructuredSelection selection = ( StructuredSelection ) optionalAttributeTypesTableViewer.getSelection(); + if ( !selection.isEmpty() ) + { + optionalAttributeTypesList.remove( selection.getFirstElement() ); + updateOptionalAttributeTypesTableTable(); + } + } + + + /** + * Updates the optional attribute types table. + */ + private void updateOptionalAttributeTypesTableTable() + { + optionalAttributeTypesTableViewer.refresh(); + } + + + /** + * Gets the optional attribute types. + * + * @return + * the optional attributes types + */ + public List getOptionalAttributeTypes() + { + return optionalAttributeTypesList; + } + + + /** + * Gets the names of the optional attribute types. + * + * @return + * the names of the optional attributes types + */ + public String[] getOptionalAttributeTypesNames() + { + List names = new ArrayList(); + for ( AttributeTypeImpl at : optionalAttributeTypesList ) + { + names.add( at.getName() ); + } + return names.toArray( new String[0] ); } } Modified: directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wizards/NewObjectClassWizard.java URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wizards/NewObjectClassWizard.java?view=diff&rev=552744&r1=552743&r2=552744 ============================================================================== --- directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wizards/NewObjectClassWizard.java (original) +++ directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wizards/NewObjectClassWizard.java Tue Jul 3 01:50:42 2007 @@ -20,9 +20,10 @@ package org.apache.directory.studio.apacheds.schemaeditor.view.wizards; +import org.apache.directory.studio.apacheds.schemaeditor.Activator; +import org.apache.directory.studio.apacheds.schemaeditor.model.ObjectClassImpl; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.wizard.Wizard; -import org.eclipse.jface.wizard.WizardPage; import org.eclipse.ui.INewWizard; import org.eclipse.ui.IWorkbench; @@ -36,10 +37,10 @@ public class NewObjectClassWizard extends Wizard implements INewWizard { // The pages of the wizards - private WizardPage generalPage; - private WizardPage contentPage; - private WizardPage mandatoryAttributesPage; - private WizardPage optionalAttributesPage; + private NewObjectClassGeneralPageWizardPage generalPage; + private NewObjectClassContentWizardPage contentPage; + private NewObjectClassMandatoryAttributesPage mandatoryAttributesPage; + private NewObjectClassOptionalAttributesPage optionalAttributesPage; /* (non-Javadoc) @@ -66,7 +67,18 @@ */ public boolean performFinish() { - // TODO Auto-generated method stub + ObjectClassImpl newOC = new ObjectClassImpl( generalPage.getOidValue() ); + newOC.setSchema( generalPage.getSchemaValue() ); + newOC.setNames( generalPage.getAliasesValue() ); + newOC.setDescription( generalPage.getDescriptionValue() ); + newOC.setSuperClassesNames( contentPage.getSuperiorsNameValue() ); + newOC.setType( contentPage.getClassTypeValue() ); + newOC.setObsolete( contentPage.getObsoleteValue() ); + newOC.setMustNamesList( mandatoryAttributesPage.getMandatoryAttributeTypesNames() ); + newOC.setMustNamesList( optionalAttributesPage.getOptionalAttributeTypesNames() ); + + Activator.getDefault().getSchemaHandler().addObjectClass( newOC ); + return true; } @@ -77,5 +89,29 @@ public void init( IWorkbench workbench, IStructuredSelection selection ) { // Nothing to do. + } + + + /** + * Gets the mandatory attributes page. + * + * @return + * the mandatory attributes page + */ + public NewObjectClassMandatoryAttributesPage getMandatoryAttributesPage() + { + return mandatoryAttributesPage; + } + + + /** + * Gets the optional attributes page. + * + * @return + * the optional attributes page + */ + public NewObjectClassOptionalAttributesPage getOptionalAttributesPage() + { + return optionalAttributesPage; } }