You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by fe...@apache.org on 2007/11/05 18:15:02 UTC
svn commit: r592094 [26/35] - in
/directory/sandbox/felixk/studio-schemaeditor: ./ META-INF/ src/ src/main/
src/main/java/ src/main/java/org/ src/main/java/org/apache/
src/main/java/org/apache/directory/
src/main/java/org/apache/directory/studio/ src/m...
Added: directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/NewAttributeTypeMatchingRulesWizardPage.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/NewAttributeTypeMatchingRulesWizardPage.java?rev=592094&view=auto
==============================================================================
--- directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/NewAttributeTypeMatchingRulesWizardPage.java (added)
+++ directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/NewAttributeTypeMatchingRulesWizardPage.java Mon Nov 5 09:14:24 2007
@@ -0,0 +1,311 @@
+/*
+ * 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.schemaeditor.view.wizards;
+
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
+import org.apache.directory.studio.schemaeditor.Activator;
+import org.apache.directory.studio.schemaeditor.PluginConstants;
+import org.apache.directory.studio.schemaeditor.controller.SchemaHandler;
+import org.apache.directory.studio.schemaeditor.model.MatchingRuleImpl;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.ComboViewer;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+
+/**
+ * This class represents the Matching Rules WizardPage of the NewAttributeTypeWizard.
+ * <p>
+ * It is used to let the user enter matching rules information about the
+ * attribute type he wants to create (equality, ordering, substring).
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class NewAttributeTypeMatchingRulesWizardPage extends WizardPage
+{
+ /** The SchemaHandler */
+ private SchemaHandler schemaHandler;
+
+ /** The LabelProvider */
+ private LabelProvider labelProvider = new LabelProvider()
+ {
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.LabelProvider#getText(java.lang.Object)
+ */
+ public String getText( Object element )
+ {
+ if ( element instanceof MatchingRuleImpl )
+ {
+ MatchingRuleImpl mr = ( MatchingRuleImpl ) element;
+
+ String name = mr.getName();
+ if ( name != null )
+ {
+ return name + " - (" + mr.getOid() + ")";
+ }
+ else
+ {
+ return "(None) - (" + mr.getOid() + ")";
+ }
+ }
+
+ return super.getText( element );
+ }
+ };
+
+ // UI fields
+ private ComboViewer equalityComboViewer;
+ private ComboViewer orderingComboViewer;
+ private ComboViewer substringComboViewer;
+
+
+ /**
+ * Creates a new instance of NewAttributeTypeMatchingRulesWizardPage.
+ */
+ public NewAttributeTypeMatchingRulesWizardPage()
+ {
+ super( "NewAttributeTypeMatchingRulesWizardPage" );
+ setTitle( "Matching Rules" );
+ setDescription( "Please specify the matching rules (equality, ordering and substring) to use for the attribute type." );
+ setImageDescriptor( AbstractUIPlugin.imageDescriptorFromPlugin( Activator.PLUGIN_ID,
+ PluginConstants.IMG_ATTRIBUTE_TYPE_NEW_WIZARD ) );
+
+ schemaHandler = Activator.getDefault().getSchemaHandler();
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
+ */
+ public void createControl( Composite parent )
+ {
+ Composite composite = new Composite( parent, SWT.NULL );
+ GridLayout layout = new GridLayout();
+ composite.setLayout( layout );
+
+ // Matching Rules Group
+ Group matchingRulesGroup = new Group( composite, SWT.NONE );
+ matchingRulesGroup.setText( "Matching Rules" );
+ matchingRulesGroup.setLayout( new GridLayout( 2, false ) );
+ matchingRulesGroup.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false, 3, 1 ) );
+
+ // Equality
+ Label equalityLabel = new Label( matchingRulesGroup, SWT.NONE );
+ equalityLabel.setText( "Equality:" );
+ Combo equalityCombo = new Combo( matchingRulesGroup, SWT.READ_ONLY );
+ equalityCombo.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+ equalityComboViewer = new ComboViewer( equalityCombo );
+ equalityComboViewer.setContentProvider( new ArrayContentProvider() );
+ equalityComboViewer.setLabelProvider( labelProvider );
+
+ // Ordering
+ Label orderingLabel = new Label( matchingRulesGroup, SWT.NONE );
+ orderingLabel.setText( "Ordering:" );
+ Combo orderingCombo = new Combo( matchingRulesGroup, SWT.READ_ONLY );
+ orderingCombo.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+ orderingComboViewer = new ComboViewer( orderingCombo );
+ orderingComboViewer.setContentProvider( new ArrayContentProvider() );
+ orderingComboViewer.setLabelProvider( labelProvider );
+
+ // Substring
+ Label substringLabel = new Label( matchingRulesGroup, SWT.NONE );
+ substringLabel.setText( "Substring:" );
+ Combo substringCombo = new Combo( matchingRulesGroup, SWT.READ_ONLY );
+ substringCombo.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+ substringComboViewer = new ComboViewer( substringCombo );
+ substringComboViewer.setContentProvider( new ArrayContentProvider() );
+ substringComboViewer.setLabelProvider( labelProvider );
+
+ initFields();
+
+ setControl( composite );
+ }
+
+
+ /**
+ * Initializes the UI fields.
+ */
+ @SuppressWarnings("unchecked")
+ private void initFields()
+ {
+ if ( schemaHandler != null )
+ {
+ // Getting the matching rules
+ List<Object> matchingRules = new ArrayList( schemaHandler.getMatchingRules() );
+ // Adding the (None) matching rule
+ String none = "(None)";
+ matchingRules.add( none );
+
+ // Sorting the matching rules
+ Collections.sort( matchingRules, new Comparator<Object>()
+ {
+
+ public int compare( Object o1, Object o2 )
+ {
+ if ( ( o1 instanceof MatchingRuleImpl ) && ( o2 instanceof MatchingRuleImpl ) )
+ {
+ String[] o1Names = ( ( MatchingRuleImpl ) o1 ).getNames();
+ String[] o2Names = ( ( MatchingRuleImpl ) o2 ).getNames();
+
+ // Comparing the First Name
+ if ( ( o1Names != null ) && ( o2Names != null ) )
+ {
+ if ( ( o1Names.length > 0 ) && ( o2Names.length > 0 ) )
+ {
+ return o1Names[0].compareToIgnoreCase( o2Names[0] );
+ }
+ else if ( ( o1Names.length == 0 ) && ( o2Names.length > 0 ) )
+ {
+ return "".compareToIgnoreCase( o2Names[0] );
+ }
+ else if ( ( o1Names.length > 0 ) && ( o2Names.length == 0 ) )
+ {
+ return o1Names[0].compareToIgnoreCase( "" );
+ }
+ }
+ else if ( ( o1 instanceof String ) && ( o2 instanceof MatchingRuleImpl ) )
+ {
+ return Integer.MIN_VALUE;
+ }
+ else if ( ( o1 instanceof MatchingRuleImpl ) && ( o2 instanceof String ) )
+ {
+ return Integer.MAX_VALUE;
+ }
+ }
+
+ // Default
+ return o1.toString().compareToIgnoreCase( o2.toString() );
+ }
+ } );
+
+ // Setting the input
+ equalityComboViewer.setInput( matchingRules );
+ orderingComboViewer.setInput( matchingRules );
+ substringComboViewer.setInput( matchingRules );
+
+ // Selecting the None matching rules
+ equalityComboViewer.setSelection( new StructuredSelection( none ) );
+ orderingComboViewer.setSelection( new StructuredSelection( none ) );
+ substringComboViewer.setSelection( new StructuredSelection( none ) );
+ }
+ }
+
+
+ /**
+ * Gets the value of the equality matching rule.
+ *
+ * @return
+ * the value of the equality matching rule
+ */
+ public String getEqualityMatchingRuleValue()
+ {
+ Object selection = ( ( StructuredSelection ) equalityComboViewer.getSelection() ).getFirstElement();
+
+ if ( selection instanceof MatchingRuleImpl )
+ {
+ MatchingRuleImpl mr = ( ( MatchingRuleImpl ) selection );
+
+ String[] names = mr.getNames();
+ if ( ( names != null ) && ( names.length > 0 ) )
+ {
+ return mr.getName();
+ }
+ else
+ {
+ return mr.getOid();
+ }
+ }
+
+ return null;
+ }
+
+
+ /**
+ * Gets the value of the ordering matching rule.
+ *
+ * @return
+ * the value of the ordering matching rule
+ */
+ public String getOrderingMatchingRuleValue()
+ {
+ Object selection = ( ( StructuredSelection ) orderingComboViewer.getSelection() ).getFirstElement();
+
+ if ( selection instanceof MatchingRuleImpl )
+ {
+ MatchingRuleImpl mr = ( ( MatchingRuleImpl ) selection );
+
+ String[] names = mr.getNames();
+ if ( ( names != null ) && ( names.length > 0 ) )
+ {
+ return mr.getName();
+ }
+ else
+ {
+ return mr.getOid();
+ }
+ }
+
+ return null;
+ }
+
+
+ /**
+ * Gets the value of the substring matching rule.
+ *
+ * @return
+ * the value of the substring matching rule
+ */
+ public String getSubstringMatchingRuleValue()
+ {
+ Object selection = ( ( StructuredSelection ) substringComboViewer.getSelection() ).getFirstElement();
+
+ if ( selection instanceof MatchingRuleImpl )
+ {
+ MatchingRuleImpl mr = ( ( MatchingRuleImpl ) selection );
+
+ String[] names = mr.getNames();
+ if ( ( names != null ) && ( names.length > 0 ) )
+ {
+ return mr.getName();
+ }
+ else
+ {
+ return mr.getOid();
+ }
+ }
+
+ return null;
+ }
+}
Propchange: directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/NewAttributeTypeMatchingRulesWizardPage.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/NewAttributeTypeWizard.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/NewAttributeTypeWizard.java?rev=592094&view=auto
==============================================================================
--- directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/NewAttributeTypeWizard.java (added)
+++ directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/NewAttributeTypeWizard.java Mon Nov 5 09:14:24 2007
@@ -0,0 +1,115 @@
+/*
+ * 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.schemaeditor.view.wizards;
+
+
+import org.apache.directory.studio.schemaeditor.Activator;
+import org.apache.directory.studio.schemaeditor.model.AttributeTypeImpl;
+import org.apache.directory.studio.schemaeditor.model.Schema;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+
+
+/**
+ * This class represents the wizard to create a new AttributeType.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class NewAttributeTypeWizard extends Wizard implements INewWizard
+{
+ public static final String ID = Activator.PLUGIN_ID + ".wizards.NewAttributeTypeWizard";
+
+ /** The selected schema */
+ private Schema selectedSchema;
+
+ // The pages of the wizards
+ private NewAttributeTypeGeneralWizardPage generalPage;
+ private NewAttributeTypeContentWizardPage contentPage;
+ private NewAttributeTypeMatchingRulesWizardPage matchingRulesPage;
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.wizard.Wizard#addPages()
+ */
+ public void addPages()
+ {
+ // Creating pages
+ generalPage = new NewAttributeTypeGeneralWizardPage();
+ generalPage.setSelectedSchema( selectedSchema );
+ contentPage = new NewAttributeTypeContentWizardPage();
+ matchingRulesPage = new NewAttributeTypeMatchingRulesWizardPage();
+
+ // Adding pages
+ addPage( generalPage );
+ addPage( contentPage );
+ addPage( matchingRulesPage );
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.wizard.Wizard#performFinish()
+ */
+ public boolean performFinish()
+ {
+ AttributeTypeImpl newAT = new AttributeTypeImpl( generalPage.getOidValue() );
+ newAT.setSchema( generalPage.getSchemaValue() );
+ newAT.setNames( generalPage.getAliasesValue() );
+ newAT.setDescription( generalPage.getDescriptionValue() );
+ newAT.setSuperiorName( contentPage.getSuperiorValue() );
+ newAT.setUsage( contentPage.getUsageValue() );
+ newAT.setSyntaxOid( contentPage.getSyntax() );
+ newAT.setLength( contentPage.getSyntaxLengthValue() );
+ newAT.setObsolete( contentPage.getObsoleteValue() );
+ newAT.setSingleValue( contentPage.getSingleValueValue() );
+ newAT.setCollective( contentPage.getCollectiveValue() );
+ newAT.setCanUserModify( !contentPage.getNoUserModificationValue() );
+ newAT.setEqualityName( matchingRulesPage.getEqualityMatchingRuleValue() );
+ newAT.setOrderingName( matchingRulesPage.getOrderingMatchingRuleValue() );
+ newAT.setSubstrName( matchingRulesPage.getSubstringMatchingRuleValue() );
+
+ Activator.getDefault().getSchemaHandler().addAttributeType( newAT );
+
+ return true;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.IWorkbenchWizard#init(org.eclipse.ui.IWorkbench, org.eclipse.jface.viewers.IStructuredSelection)
+ */
+ public void init( IWorkbench workbench, IStructuredSelection selection )
+ {
+ // Nothing to do.
+ }
+
+
+ /**
+ * Sets the selected schema.
+ *
+ * @param schema
+ * the selected schema
+ */
+ public void setSelectedSchema( Schema schema )
+ {
+ selectedSchema = schema;
+ }
+}
Propchange: directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/NewAttributeTypeWizard.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/NewObjectClassContentWizardPage.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/NewObjectClassContentWizardPage.java?rev=592094&view=auto
==============================================================================
--- directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/NewObjectClassContentWizardPage.java (added)
+++ directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/NewObjectClassContentWizardPage.java Mon Nov 5 09:14:24 2007
@@ -0,0 +1,352 @@
+/*
+ * 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.schemaeditor.view.wizards;
+
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
+import org.apache.directory.shared.ldap.schema.ObjectClassTypeEnum;
+import org.apache.directory.studio.schemaeditor.Activator;
+import org.apache.directory.studio.schemaeditor.PluginConstants;
+import org.apache.directory.studio.schemaeditor.model.ObjectClassImpl;
+import org.apache.directory.studio.schemaeditor.view.ViewUtils;
+import org.apache.directory.studio.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.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.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+
+/**
+ * This class represents the Content WizardPage of the ObjectClassWizard.
+ * <p>
+ * It is used to let the user enter content information about the
+ * attribute type he wants to create (superiors, class type, and properties).
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class NewObjectClassContentWizardPage extends WizardPage
+{
+ /** The superiors object classes */
+ private List<ObjectClassImpl> 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.
+ */
+ protected NewObjectClassContentWizardPage()
+ {
+ super( "NewObjectClassContentWizardPage" );
+ setTitle( "Object Class Content" );
+ 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<ObjectClassImpl>();
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
+ */
+ public void createControl( Composite parent )
+ {
+ Composite composite = new Composite( parent, SWT.NULL );
+ GridLayout layout = new GridLayout();
+ composite.setLayout( layout );
+
+ // Superiors
+ Group superiorsGroup = new Group( composite, SWT.NONE );
+ superiorsGroup.setText( "Superiors" );
+ superiorsGroup.setLayout( new GridLayout( 2, false ) );
+ superiorsGroup.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+
+ // Superiors
+ Table superiorsTable = new Table( superiorsGroup, SWT.BORDER );
+ GridData superiorsTableGridData = new GridData( SWT.FILL, SWT.FILL, true, true, 1, 2 );
+ superiorsTableGridData.heightHint = 100;
+ superiorsTable.setLayoutData( superiorsTableGridData );
+ superiorsTableViewer = new TableViewer( superiorsTable );
+ superiorsTableViewer.setLabelProvider( new LabelProvider()
+ {
+ public Image getImage( Object element )
+ {
+ if ( element instanceof ObjectClassImpl )
+ {
+ return AbstractUIPlugin.imageDescriptorFromPlugin( Activator.PLUGIN_ID,
+ PluginConstants.IMG_OBJECT_CLASS ).createImage();
+ }
+
+ // Default
+ return super.getImage( element );
+ }
+
+
+ public String getText( Object element )
+ {
+ if ( element instanceof ObjectClassImpl )
+ {
+ ObjectClassImpl oc = ( ObjectClassImpl ) element;
+
+ String[] names = oc.getNames();
+ if ( ( names != null ) && ( names.length > 0 ) )
+ {
+ return ViewUtils.concateAliases( names ) + " - (" + oc.getOid() + ")";
+ }
+ else
+ {
+ return "(None) - (" + oc.getOid() + ")";
+ }
+ }
+ // Default
+ return super.getText( element );
+ }
+ } );
+ superiorsTableViewer.setContentProvider( new ArrayContentProvider() );
+ 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 ) );
+ 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 );
+ classTypeGroup.setText( "Class Type" );
+ classTypeGroup.setLayout( new GridLayout( 5, false ) );
+ classTypeGroup.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+
+ // Class Type
+ Label classTypeLable = new Label( classTypeGroup, SWT.NONE );
+ classTypeLable.setText( "Class Type:" );
+ new Label( classTypeGroup, SWT.NONE ).setText( " " );
+ 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 );
+ 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 );
+ 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 );
+ propertiesGroup.setText( "Properties" );
+ propertiesGroup.setLayout( new GridLayout() );
+ propertiesGroup.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+
+ // Obsolete
+ 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()
+ {
+ Collections.sort( superiorsList, new Comparator<ObjectClassImpl>()
+ {
+ public int compare( ObjectClassImpl o1, ObjectClassImpl o2 )
+ {
+ String[] at1Names = o1.getNames();
+ String[] at2Names = o2.getNames();
+
+ if ( ( at1Names != null ) && ( at2Names != null ) && ( at1Names.length > 0 ) && ( at2Names.length > 0 ) )
+ {
+ return at1Names[0].compareToIgnoreCase( at2Names[0] );
+ }
+
+ // Default
+ return 0;
+ }
+ } );
+
+ superiorsTableViewer.refresh();
+ }
+
+
+ /**
+ * Gets the value of the superiors.
+ *
+ * @return
+ * the value of the superiors
+ */
+ public String[] getSuperiorsNameValue()
+ {
+ List<String> names = new ArrayList<String>();
+ for ( ObjectClassImpl oc : superiorsList )
+ {
+ String[] aliases = oc.getNames();
+
+ if ( ( aliases != null ) && ( aliases.length > 0 ) )
+ {
+ names.add( aliases[0] );
+ }
+ else
+ {
+ names.add( oc.getOid() );
+ }
+ }
+
+ 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();
+ }
+}
Propchange: directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/NewObjectClassContentWizardPage.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/NewObjectClassGeneralPageWizardPage.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/NewObjectClassGeneralPageWizardPage.java?rev=592094&view=auto
==============================================================================
--- directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/NewObjectClassGeneralPageWizardPage.java (added)
+++ directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/NewObjectClassGeneralPageWizardPage.java Mon Nov 5 09:14:24 2007
@@ -0,0 +1,424 @@
+/*
+ * 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.schemaeditor.view.wizards;
+
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
+import org.apache.directory.shared.asn1.primitives.OID;
+import org.apache.directory.studio.schemaeditor.Activator;
+import org.apache.directory.studio.schemaeditor.PluginConstants;
+import org.apache.directory.studio.schemaeditor.controller.SchemaHandler;
+import org.apache.directory.studio.schemaeditor.model.Schema;
+import org.apache.directory.studio.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.events.VerifyEvent;
+import org.eclipse.swt.events.VerifyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+
+/**
+ * This class represents the General WizardPage of the NewObjectClassWizard.
+ * <p>
+ * It is used to let the user enter general information about the
+ * attribute type he wants to create (schema, OID, aliases an description).
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class NewObjectClassGeneralPageWizardPage extends WizardPage
+{
+ /** The SchemaHandler */
+ private SchemaHandler schemaHandler;
+
+ /** The aliases */
+ private String[] aliases;
+
+ /** The selected schema */
+ private Schema selectedSchema;
+
+ // UI fields
+ private ComboViewer schemaComboViewer;
+ private Text oidText;
+ private Text aliasesText;
+ private Button aliasesButton;
+ private Text descriptionText;
+
+
+ /**
+ * Creates a new instance of NewObjectClassGeneralPageWizardPage.
+ */
+ protected NewObjectClassGeneralPageWizardPage()
+ {
+ super( "NewObjectClassGeneralPageWizardPage" );
+ setTitle( "Object Class" );
+ 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];
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
+ */
+ public void createControl( Composite parent )
+ {
+ Composite composite = new Composite( parent, SWT.NULL );
+ GridLayout layout = new GridLayout();
+ composite.setLayout( layout );
+
+ // Schema Group
+ Group schemaGroup = new Group( composite, SWT.NONE );
+ schemaGroup.setText( "Schema" );
+ schemaGroup.setLayout( new GridLayout( 2, false ) );
+ schemaGroup.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+
+ // Schema
+ Label schemaLabel = new Label( schemaGroup, SWT.NONE );
+ schemaLabel.setText( "Schema:" );
+ Combo schemaCombo = new Combo( schemaGroup, SWT.READ_ONLY );
+ schemaCombo.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+ 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 );
+ namingDescriptionGroup.setText( "Naming and Description" );
+ namingDescriptionGroup.setLayout( new GridLayout( 3, false ) );
+ namingDescriptionGroup.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+
+ // OID
+ Label oidLabel = new Label( namingDescriptionGroup, SWT.NONE );
+ oidLabel.setText( "OID:" );
+ 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();
+ }
+ } );
+ oidText.addVerifyListener( new VerifyListener()
+ {
+ /* (non-Javadoc)
+ * @see org.eclipse.swt.events.VerifyListener#verifyText(org.eclipse.swt.events.VerifyEvent)
+ */
+ public void verifyText( VerifyEvent e )
+ {
+ if ( !e.text.matches( "([0-9]*\\.?)*" ) ) //$NON-NLS-1$
+ {
+ e.doit = false;
+ }
+ }
+ } );
+
+ // Aliases
+ Label aliasesLabel = new Label( namingDescriptionGroup, SWT.NONE );
+ aliasesLabel.setText( "Aliases:" );
+ aliasesText = new Text( namingDescriptionGroup, SWT.BORDER );
+ aliasesText.setEnabled( false );
+ aliasesText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+ 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:" );
+ 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()
+ {
+ // Filling the Schemas table
+ if ( schemaHandler != null )
+ {
+ List<Schema> schemas = new ArrayList<Schema>();
+ schemas.addAll( schemaHandler.getSchemas() );
+
+ Collections.sort( schemas, new Comparator<Schema>()
+ {
+ public int compare( Schema o1, Schema o2 )
+ {
+ return o1.getName().compareToIgnoreCase( o2.getName() );
+ }
+ } );
+
+ schemaComboViewer.setInput( schemas );
+
+ if ( selectedSchema != null )
+ {
+ schemaComboViewer.setSelection( new StructuredSelection( selectedSchema ) );
+ }
+ }
+ }
+
+
+ /**
+ * 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 ( ( !oidText.getText().equals( "" ) ) && ( OID.isOID( oidText.getText() ) )
+ && ( schemaHandler.isAliasOrOidAlreadyTaken( oidText.getText() ) ) )
+ {
+ displayErrorMessage( "An object with this OID already exists." );
+ 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();
+ }
+
+
+ /**
+ * Sets the selected schema.
+ *
+ * @param schema
+ * the selected schema
+ */
+ public void setSelectedSchema( Schema schema )
+ {
+ selectedSchema = schema;
+ }
+}
Propchange: directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/NewObjectClassGeneralPageWizardPage.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/NewObjectClassMandatoryAttributesPage.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/NewObjectClassMandatoryAttributesPage.java?rev=592094&view=auto
==============================================================================
--- directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/NewObjectClassMandatoryAttributesPage.java (added)
+++ directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/NewObjectClassMandatoryAttributesPage.java Mon Nov 5 09:14:24 2007
@@ -0,0 +1,264 @@
+/*
+ * 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.schemaeditor.view.wizards;
+
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
+import org.apache.directory.studio.schemaeditor.Activator;
+import org.apache.directory.studio.schemaeditor.PluginConstants;
+import org.apache.directory.studio.schemaeditor.model.AttributeTypeImpl;
+import org.apache.directory.studio.schemaeditor.view.ViewUtils;
+import org.apache.directory.studio.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.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.Group;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+
+/**
+ * This class represents the Mandatory Attribute Types WizardPage of the NewObjectClassWizard.
+ * <p>
+ * It is used to let the user specify the mandatory attribute types for the object class.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class NewObjectClassMandatoryAttributesPage extends WizardPage
+{
+ /** The mandatory attribute types list */
+ private List<AttributeTypeImpl> mandatoryAttributeTypesList;
+
+ // UI Fields
+ private TableViewer mandatoryAttributeTypesTableViewer;
+ private Button mandatoryAttributeTypesAddButton;
+ private Button mandatoryAttributeTypesRemoveButton;
+
+
+ /**
+ * Creates a new instance of NewObjectClassMandatoryAttributesPage.
+ */
+ protected NewObjectClassMandatoryAttributesPage()
+ {
+ super( "NewObjectClassMandatoryAttributesPage" );
+ setTitle( "Mandatory Attribute Types" );
+ 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<AttributeTypeImpl>();
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
+ */
+ public void createControl( Composite parent )
+ {
+ Composite composite = new Composite( parent, SWT.NULL );
+ GridLayout layout = new GridLayout();
+ composite.setLayout( layout );
+
+ // Mandatory Attribute Types Group
+ Group mandatoryAttributeTypesGroup = new Group( composite, SWT.NONE );
+ mandatoryAttributeTypesGroup.setText( "Mandatory Attribute Types" );
+ mandatoryAttributeTypesGroup.setLayout( new GridLayout( 2, false ) );
+ mandatoryAttributeTypesGroup.setLayoutData( new GridData( SWT.FILL, SWT.FILL, true, true ) );
+
+ // Mandatory Attribute Types
+ Table mandatoryAttributeTypesTable = new Table( mandatoryAttributeTypesGroup, SWT.BORDER );
+ GridData mandatoryAttributeTypesTableGridData = new GridData( SWT.FILL, SWT.FILL, true, true, 1, 2 );
+ mandatoryAttributeTypesTableGridData.heightHint = 100;
+ mandatoryAttributeTypesTable.setLayoutData( mandatoryAttributeTypesTableGridData );
+ mandatoryAttributeTypesTableViewer = new TableViewer( mandatoryAttributeTypesTable );
+ mandatoryAttributeTypesTableViewer.setContentProvider( new ArrayContentProvider() );
+ mandatoryAttributeTypesTableViewer.setLabelProvider( new LabelProvider()
+ {
+ public Image getImage( Object element )
+ {
+ if ( element instanceof AttributeTypeImpl )
+ {
+ return AbstractUIPlugin.imageDescriptorFromPlugin( Activator.PLUGIN_ID,
+ PluginConstants.IMG_ATTRIBUTE_TYPE ).createImage();
+ }
+
+ // Default
+ return super.getImage( element );
+ }
+
+
+ public String getText( Object element )
+ {
+ if ( element instanceof AttributeTypeImpl )
+ {
+ AttributeTypeImpl at = ( AttributeTypeImpl ) element;
+
+ String[] names = at.getNames();
+ if ( ( names != null ) && ( names.length > 0 ) )
+ {
+ return ViewUtils.concateAliases( names ) + " - (" + at.getOid() + ")";
+ }
+ else
+ {
+ return "(None) - (" + at.getOid() + ")";
+ }
+ }
+ // Default
+ return super.getText( element );
+ }
+ } );
+ 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 ) );
+ 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<AttributeTypeImpl> hiddenAttributes = new ArrayList<AttributeTypeImpl>();
+ 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()
+ {
+ Collections.sort( mandatoryAttributeTypesList, new Comparator<AttributeTypeImpl>()
+ {
+ public int compare( AttributeTypeImpl o1, AttributeTypeImpl o2 )
+ {
+ String[] at1Names = o1.getNames();
+ String[] at2Names = o2.getNames();
+
+ if ( ( at1Names != null ) && ( at2Names != null ) && ( at1Names.length > 0 ) && ( at2Names.length > 0 ) )
+ {
+ return at1Names[0].compareToIgnoreCase( at2Names[0] );
+ }
+
+ // Default
+ return 0;
+ }
+ } );
+
+ mandatoryAttributeTypesTableViewer.refresh();
+ }
+
+
+ /**
+ * Gets the mandatory attribute types.
+ *
+ * @return
+ * the mandatory attributes types
+ */
+ public List<AttributeTypeImpl> getMandatoryAttributeTypes()
+ {
+ return mandatoryAttributeTypesList;
+ }
+
+
+ /**
+ * Gets the names of the mandatory attribute types.
+ *
+ * @return
+ * the names of the mandatory attributes types
+ */
+ public String[] getMandatoryAttributeTypesNames()
+ {
+ List<String> names = new ArrayList<String>();
+ for ( AttributeTypeImpl at : mandatoryAttributeTypesList )
+ {
+ names.add( at.getName() );
+ }
+ return names.toArray( new String[0] );
+ }
+}
Propchange: directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/NewObjectClassMandatoryAttributesPage.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/NewObjectClassOptionalAttributesPage.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/NewObjectClassOptionalAttributesPage.java?rev=592094&view=auto
==============================================================================
--- directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/NewObjectClassOptionalAttributesPage.java (added)
+++ directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/NewObjectClassOptionalAttributesPage.java Mon Nov 5 09:14:24 2007
@@ -0,0 +1,264 @@
+/*
+ * 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.schemaeditor.view.wizards;
+
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
+import org.apache.directory.studio.schemaeditor.Activator;
+import org.apache.directory.studio.schemaeditor.PluginConstants;
+import org.apache.directory.studio.schemaeditor.model.AttributeTypeImpl;
+import org.apache.directory.studio.schemaeditor.view.ViewUtils;
+import org.apache.directory.studio.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.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.Group;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+
+/**
+ * This class represents the Optional Attribute Types WizardPage of the NewObjectClassWizard.
+ * <p>
+ * It is used to let the user specify the optional attribute types for the object class.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class NewObjectClassOptionalAttributesPage extends WizardPage
+{
+ /** The optional attribute types list */
+ private List<AttributeTypeImpl> optionalAttributeTypesList;
+
+ // UI Fields
+ private TableViewer optionalAttributeTypesTableViewer;
+ private Button optionalAttributeTypesAddButton;
+ private Button optionalAttributeTypesRemoveButton;
+
+
+ /**
+ * Creates a new instance of NewObjectClassOptionalAttributesPage.
+ */
+ protected NewObjectClassOptionalAttributesPage()
+ {
+ super( "NewObjectClassOptionalAttributesPage" );
+ setTitle( "Optional Attribute Types" );
+ 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<AttributeTypeImpl>();
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
+ */
+ public void createControl( Composite parent )
+ {
+ Composite composite = new Composite( parent, SWT.NULL );
+ GridLayout layout = new GridLayout();
+ composite.setLayout( layout );
+
+ // Optional Attribute Types Group
+ Group optionalAttributeTypesGroup = new Group( composite, SWT.NONE );
+ optionalAttributeTypesGroup.setText( "Optional Attribute Types" );
+ optionalAttributeTypesGroup.setLayout( new GridLayout( 2, false ) );
+ optionalAttributeTypesGroup.setLayoutData( new GridData( SWT.FILL, SWT.FILL, true, true ) );
+
+ // Optional Attribute Types
+ Table optionalAttributeTypesTable = new Table( optionalAttributeTypesGroup, SWT.BORDER );
+ GridData optionalAttributeTypesTableGridData = new GridData( SWT.FILL, SWT.FILL, true, true, 1, 2 );
+ optionalAttributeTypesTableGridData.heightHint = 100;
+ optionalAttributeTypesTable.setLayoutData( optionalAttributeTypesTableGridData );
+ optionalAttributeTypesTableViewer = new TableViewer( optionalAttributeTypesTable );
+ optionalAttributeTypesTableViewer.setContentProvider( new ArrayContentProvider() );
+ optionalAttributeTypesTableViewer.setLabelProvider( new LabelProvider()
+ {
+ public Image getImage( Object element )
+ {
+ if ( element instanceof AttributeTypeImpl )
+ {
+ return AbstractUIPlugin.imageDescriptorFromPlugin( Activator.PLUGIN_ID,
+ PluginConstants.IMG_ATTRIBUTE_TYPE ).createImage();
+ }
+
+ // Default
+ return super.getImage( element );
+ }
+
+
+ public String getText( Object element )
+ {
+ if ( element instanceof AttributeTypeImpl )
+ {
+ AttributeTypeImpl at = ( AttributeTypeImpl ) element;
+
+ String[] names = at.getNames();
+ if ( ( names != null ) && ( names.length > 0 ) )
+ {
+ return ViewUtils.concateAliases( names ) + " - (" + at.getOid() + ")";
+ }
+ else
+ {
+ return "(None) - (" + at.getOid() + ")";
+ }
+ }
+ // Default
+ return super.getText( element );
+ }
+ } );
+ 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 ) );
+ 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<AttributeTypeImpl> hiddenAttributes = new ArrayList<AttributeTypeImpl>();
+ 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()
+ {
+ Collections.sort( optionalAttributeTypesList, new Comparator<AttributeTypeImpl>()
+ {
+ public int compare( AttributeTypeImpl o1, AttributeTypeImpl o2 )
+ {
+ String[] at1Names = o1.getNames();
+ String[] at2Names = o2.getNames();
+
+ if ( ( at1Names != null ) && ( at2Names != null ) && ( at1Names.length > 0 ) && ( at2Names.length > 0 ) )
+ {
+ return at1Names[0].compareToIgnoreCase( at2Names[0] );
+ }
+
+ // Default
+ return 0;
+ }
+ } );
+
+ optionalAttributeTypesTableViewer.refresh();
+ }
+
+
+ /**
+ * Gets the optional attribute types.
+ *
+ * @return
+ * the optional attributes types
+ */
+ public List<AttributeTypeImpl> getOptionalAttributeTypes()
+ {
+ return optionalAttributeTypesList;
+ }
+
+
+ /**
+ * Gets the names of the optional attribute types.
+ *
+ * @return
+ * the names of the optional attributes types
+ */
+ public String[] getOptionalAttributeTypesNames()
+ {
+ List<String> names = new ArrayList<String>();
+ for ( AttributeTypeImpl at : optionalAttributeTypesList )
+ {
+ names.add( at.getName() );
+ }
+ return names.toArray( new String[0] );
+ }
+}
Propchange: directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/NewObjectClassOptionalAttributesPage.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/NewObjectClassWizard.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/NewObjectClassWizard.java?rev=592094&view=auto
==============================================================================
--- directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/NewObjectClassWizard.java (added)
+++ directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/NewObjectClassWizard.java Mon Nov 5 09:14:24 2007
@@ -0,0 +1,112 @@
+/*
+ * 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.schemaeditor.view.wizards;
+
+
+import org.apache.directory.studio.schemaeditor.Activator;
+import org.apache.directory.studio.schemaeditor.model.ObjectClassImpl;
+import org.apache.directory.studio.schemaeditor.model.Schema;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+
+
+/**
+ * This class represents the wizard to create a new ObjectClass.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class NewObjectClassWizard extends Wizard implements INewWizard
+{
+ public static final String ID = Activator.PLUGIN_ID + ".wizards.NewObjectClassWizard";
+
+ /** The selected schema */
+ private Schema selectedSchema;
+
+ // The pages of the wizards
+ private NewObjectClassGeneralPageWizardPage generalPage;
+ private NewObjectClassContentWizardPage contentPage;
+ private NewObjectClassMandatoryAttributesPage mandatoryAttributesPage;
+ private NewObjectClassOptionalAttributesPage optionalAttributesPage;
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.wizard.Wizard#addPages()
+ */
+ public void addPages()
+ {
+ // Creating pages
+ generalPage = new NewObjectClassGeneralPageWizardPage();
+ generalPage.setSelectedSchema( selectedSchema );
+ contentPage = new NewObjectClassContentWizardPage();
+ mandatoryAttributesPage = new NewObjectClassMandatoryAttributesPage();
+ optionalAttributesPage = new NewObjectClassOptionalAttributesPage();
+
+ // Adding pages
+ addPage( generalPage );
+ addPage( contentPage );
+ addPage( mandatoryAttributesPage );
+ addPage( optionalAttributesPage );
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.wizard.Wizard#performFinish()
+ */
+ public boolean performFinish()
+ {
+ 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.setMayNamesList( optionalAttributesPage.getOptionalAttributeTypesNames() );
+
+ Activator.getDefault().getSchemaHandler().addObjectClass( newOC );
+
+ return true;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.IWorkbenchWizard#init(org.eclipse.ui.IWorkbench, org.eclipse.jface.viewers.IStructuredSelection)
+ */
+ public void init( IWorkbench workbench, IStructuredSelection selection )
+ {
+ // Nothing to do.
+ }
+
+
+ /**
+ * Sets the selected schema.
+ *
+ * @param schema
+ * the selected schema
+ */
+ public void setSelectedSchema( Schema schema )
+ {
+ selectedSchema = schema;
+ }
+}
Propchange: directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/NewObjectClassWizard.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/NewProjectWizard.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/NewProjectWizard.java?rev=592094&view=auto
==============================================================================
--- directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/NewProjectWizard.java (added)
+++ directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/NewProjectWizard.java Mon Nov 5 09:14:24 2007
@@ -0,0 +1,290 @@
+/*
+ * 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.schemaeditor.view.wizards;
+
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.directory.studio.connection.core.Connection;
+import org.apache.directory.studio.connection.core.StudioProgressMonitor;
+import org.apache.directory.studio.schemaeditor.Activator;
+import org.apache.directory.studio.schemaeditor.PluginUtils;
+import org.apache.directory.studio.schemaeditor.controller.ProjectsHandler;
+import org.apache.directory.studio.schemaeditor.model.Project;
+import org.apache.directory.studio.schemaeditor.model.ProjectType;
+import org.apache.directory.studio.schemaeditor.model.Schema;
+import org.apache.directory.studio.schemaeditor.model.io.SchemaConnector;
+import org.apache.directory.studio.schemaeditor.view.ViewUtils;
+import org.apache.directory.studio.schemaeditor.view.wizards.NewProjectWizardSchemasSelectionPage.ServerTypeEnum;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.IWizardPage;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+
+
+/**
+ * This class represents the wizard to create a new Project.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class NewProjectWizard extends Wizard implements INewWizard
+{
+ public static final String ID = Activator.PLUGIN_ID + ".wizards.NewProjectWizard";
+
+ // The pages of the wizard
+ private NewProjectWizardInformationPage informationPage;
+ private NewProjectWizardConnectionSelectionPage connectionSelectionPage;
+ private NewProjectWizardSchemasSelectionPage schemasSelectionPage;
+
+ private Throwable exceptionThrown = null;
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.wizard.Wizard#addPages()
+ */
+ public void addPages()
+ {
+ // Creating pages
+ informationPage = new NewProjectWizardInformationPage();
+ connectionSelectionPage = new NewProjectWizardConnectionSelectionPage();
+ schemasSelectionPage = new NewProjectWizardSchemasSelectionPage();
+
+ // Adding pages
+ addPage( informationPage );
+ addPage( connectionSelectionPage );
+ addPage( schemasSelectionPage );
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.wizard.Wizard#performFinish()
+ */
+ public boolean performFinish()
+ {
+ String projectName = informationPage.getProjectName();
+ ProjectType projectType = informationPage.getProjectType();
+
+ // Creating the project
+ final Project project = new Project( projectType, projectName );
+
+ if ( projectType.equals( ProjectType.ONLINE ) )
+ // Project is an "Online Project"
+ {
+ // Setting the connection to use
+ project.setConnection( connectionSelectionPage.getSelectedConnection() );
+
+ // Reseting the Exception Thrown
+ exceptionThrown = null;
+
+ try
+ {
+ getContainer().run( true, false, new IRunnableWithProgress()
+ {
+ public void run( IProgressMonitor monitor )
+ {
+ StudioProgressMonitor studioProgressMonitor = new StudioProgressMonitor( monitor );
+
+ // Getting the correct SchemaConnector for this connection
+ List<SchemaConnector> correctSchemaConnectors = getCorrectSchemaConnectors( project
+ .getConnection(), studioProgressMonitor );
+
+ // If no suitable SchemaConnector has been found, we display an
+ // error message and return false;
+ if ( correctSchemaConnectors.size() == 0 )
+ {
+ studioProgressMonitor.reportError(
+ "No suitable SchemaConnector has been found for the choosen Directory Server.",
+ new RuntimeException(
+ "No suitable SchemaConnector has been found for the choosen Directory Server." ) );
+ }
+
+ // Getting the correct SchemaConnector
+ SchemaConnector correctSchemaConnector = null;
+ if ( correctSchemaConnectors.size() == 1 )
+ {
+ correctSchemaConnector = correctSchemaConnectors.get( 0 );
+ }
+ else
+ {
+ // TODO display a dialog in which the user can select the correct schema connector
+ }
+
+ project.setSchemaConnector( correctSchemaConnector );
+
+ // Fetching the Online Schema
+ project.fetchOnlineSchema( new StudioProgressMonitor( monitor ) );
+
+ // Checking if an error has occured
+ if ( studioProgressMonitor.errorsReported() )
+ {
+ exceptionThrown = studioProgressMonitor.getException();
+ return;
+ }
+ }
+ } );
+ }
+ catch ( InvocationTargetException e )
+ {
+ PluginUtils.logError( "An error occured when creating the project.", e );
+ ViewUtils.displayErrorMessageBox( "Error", "An error occured when creating the project." );
+ }
+ catch ( InterruptedException e )
+ {
+ // Nothing to do.
+ }
+
+ if ( exceptionThrown != null )
+ {
+ PluginUtils.logError( "An error occured when creating the project.", exceptionThrown );
+ ViewUtils.displayErrorMessageBox( "Error", "An error occured when creating the project." );
+ return false;
+ }
+ }
+ else if ( projectType.equals( ProjectType.OFFLINE ) )
+ // Project is an "Online Project"
+ {
+ // Getting the selected 'core' schemas
+ String[] selectedSchemas = schemasSelectionPage.getSelectedSchemas();
+ ServerTypeEnum serverType = schemasSelectionPage.getServerType();
+ if ( ( selectedSchemas != null ) && ( serverType != null ) )
+ {
+ for ( String selectedSchema : selectedSchemas )
+ {
+ Schema schema = PluginUtils.loadCoreSchema( serverType, selectedSchema );
+ if ( schema != null )
+ {
+ project.getSchemaHandler().addSchema( schema );
+ }
+ }
+ }
+ }
+
+ ProjectsHandler projectsHandler = Activator.getDefault().getProjectsHandler();
+ projectsHandler.addProject( project );
+ projectsHandler.openProject( project );
+
+ return true;
+ }
+
+
+ /**
+ * Gets the List of suitable SchemaConnectors
+ *
+ * @param connection
+ * the connection to test the SchemaConnectors with
+ * @return
+ * the List of suitable SchemaConnectors
+ */
+ private List<SchemaConnector> getCorrectSchemaConnectors( Connection connection, StudioProgressMonitor monitor )
+ {
+ List<SchemaConnector> suitableSchemaConnectors = new ArrayList<SchemaConnector>();
+
+ // Looping on the SchemaConnectors
+ List<SchemaConnector> schemaConectors = PluginUtils.getSchemaConnectors();
+ for ( SchemaConnector schemaConnector : schemaConectors )
+ {
+ // Testing if the SchemaConnector is suitable for this connection
+ if ( schemaConnector.isSuitableConnector( connection, monitor ) )
+ {
+ suitableSchemaConnectors.add( schemaConnector );
+ }
+ }
+
+ return suitableSchemaConnectors;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.wizard.Wizard#getNextPage(org.eclipse.jface.wizard.IWizardPage)
+ */
+ public IWizardPage getNextPage( IWizardPage page )
+ {
+ if ( page.equals( informationPage ) )
+ {
+ if ( informationPage.getProjectType().equals( ProjectType.ONLINE ) )
+ {
+ return connectionSelectionPage;
+ }
+ else if ( informationPage.getProjectType().equals( ProjectType.OFFLINE ) )
+ {
+ return schemasSelectionPage;
+ }
+ }
+
+ // Default
+ return null;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.wizard.Wizard#getPreviousPage(org.eclipse.jface.wizard.IWizardPage)
+ */
+ public IWizardPage getPreviousPage( IWizardPage page )
+ {
+ if ( ( page.equals( connectionSelectionPage ) ) || ( page.equals( schemasSelectionPage ) ) )
+ {
+ return informationPage;
+ }
+
+ // Default
+ return null;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.wizard.Wizard#canFinish()
+ */
+ public boolean canFinish()
+ {
+ IWizardPage currentPage = getContainer().getCurrentPage();
+
+ if ( currentPage.equals( informationPage ) )
+ {
+ return false;
+ }
+ else if ( currentPage.equals( schemasSelectionPage ) )
+ {
+ return true;
+ }
+ else if ( currentPage.equals( connectionSelectionPage ) )
+ {
+ return connectionSelectionPage.isPageComplete();
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.IWorkbenchWizard#init(org.eclipse.ui.IWorkbench, org.eclipse.jface.viewers.IStructuredSelection)
+ */
+ public void init( IWorkbench workbench, IStructuredSelection selection )
+ {
+ setNeedsProgressMonitor( true );
+ }
+}
Propchange: directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/NewProjectWizard.java
------------------------------------------------------------------------------
svn:eol-style = native