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 [16/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/editors/objectclass/ObjectClassEditorAttributesTableContentProvider.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/editors/objectclass/ObjectClassEditorAttributesTableContentProvider.java?rev=592094&view=auto
==============================================================================
--- directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/editors/objectclass/ObjectClassEditorAttributesTableContentProvider.java (added)
+++ directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/editors/objectclass/ObjectClassEditorAttributesTableContentProvider.java Mon Nov 5 09:14:24 2007
@@ -0,0 +1,153 @@
+/*
+ * 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.editors.objectclass;
+
+
+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.controller.SchemaHandler;
+import org.apache.directory.studio.schemaeditor.model.AttributeTypeImpl;
+import org.apache.directory.studio.schemaeditor.view.editors.NonExistingAttributeType;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+
+
+/**
+ * This class is the Content Provider for the Attributes Table of the Object Class Editor.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class ObjectClassEditorAttributesTableContentProvider implements IStructuredContentProvider
+{
+ /** The Schema Pool */
+ private SchemaHandler schemaHandler;
+
+
+ /**
+ * Creates a new instance of ObjectClassEditorAttributesTableContentProvider.
+ */
+ public ObjectClassEditorAttributesTableContentProvider()
+ {
+ schemaHandler = Activator.getDefault().getSchemaHandler();
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
+ */
+ public Object[] getElements( Object inputElement )
+ {
+ if ( inputElement instanceof String[] )
+ {
+ List<Object> results = new ArrayList<Object>();
+
+ String[] attributes = ( String[] ) inputElement;
+ for ( String attribute : attributes )
+ {
+ AttributeTypeImpl at = schemaHandler.getAttributeType( attribute );
+ if ( at != null )
+ {
+ results.add( at );
+ }
+ else
+ {
+ results.add( new NonExistingAttributeType( attribute ) );
+ }
+ }
+
+ // Sorting Elements
+ Collections.sort( results, new Comparator<Object>()
+ {
+ public int compare( Object o1, Object o2 )
+ {
+ if ( o1 instanceof AttributeTypeImpl && o2 instanceof AttributeTypeImpl )
+ {
+ String[] at1Names = ( ( AttributeTypeImpl ) o1 ).getNames();
+ String[] at2Names = ( ( AttributeTypeImpl ) o2 ).getNames();
+
+ if ( ( at1Names != null ) && ( at2Names != null ) && ( at1Names.length > 0 )
+ && ( at2Names.length > 0 ) )
+ {
+ return at1Names[0].compareToIgnoreCase( at2Names[0] );
+ }
+ }
+ else if ( o1 instanceof AttributeTypeImpl && o2 instanceof NonExistingAttributeType )
+ {
+ String[] at1Names = ( ( AttributeTypeImpl ) o1 ).getNames();
+ String at2Name = ( ( NonExistingAttributeType ) o2 ).getName();
+
+ if ( ( at1Names != null ) && ( at2Name != null ) && ( at1Names.length > 0 ) )
+ {
+ return at1Names[0].compareToIgnoreCase( at2Name );
+ }
+ }
+ else if ( o1 instanceof NonExistingAttributeType && o2 instanceof AttributeTypeImpl )
+ {
+ String at1Name = ( ( NonExistingAttributeType ) o1 ).getName();
+ String[] at2Names = ( ( AttributeTypeImpl ) o2 ).getNames();
+
+ if ( ( at1Name != null ) && ( at2Names != null ) && ( at2Names.length > 0 ) )
+ {
+ return at1Name.compareToIgnoreCase( at2Names[0] );
+ }
+ }
+ else if ( o1 instanceof NonExistingAttributeType && o2 instanceof NonExistingAttributeType )
+ {
+ String at1Name = ( ( NonExistingAttributeType ) o1 ).getName();
+ String at2Name = ( ( NonExistingAttributeType ) o2 ).getName();
+
+ if ( ( at1Name != null ) && ( at2Name != null ) )
+ {
+ return at1Name.compareToIgnoreCase( at2Name );
+ }
+ }
+
+ return 0;
+ }
+ } );
+
+ return results.toArray();
+ }
+
+ // Default
+ return null;
+ }
+
+
+ /* (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 )
+ {
+ }
+}
Propchange: directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/editors/objectclass/ObjectClassEditorAttributesTableContentProvider.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/editors/objectclass/ObjectClassEditorAttributesTableLabelProvider.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/editors/objectclass/ObjectClassEditorAttributesTableLabelProvider.java?rev=592094&view=auto
==============================================================================
--- directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/editors/objectclass/ObjectClassEditorAttributesTableLabelProvider.java (added)
+++ directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/editors/objectclass/ObjectClassEditorAttributesTableLabelProvider.java Mon Nov 5 09:14:24 2007
@@ -0,0 +1,86 @@
+/*
+ * 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.editors.objectclass;
+
+
+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.editors.NonExistingAttributeType;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+
+/**
+ * This class is the Label Provider for the Attributes Table of the Object Class Editor.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class ObjectClassEditorAttributesTableLabelProvider extends LabelProvider implements ITableLabelProvider
+{
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object, int)
+ */
+ public Image getColumnImage( Object element, int columnIndex )
+ {
+ if ( ( element instanceof AttributeTypeImpl ) || ( element instanceof NonExistingAttributeType ) )
+ {
+ return AbstractUIPlugin.imageDescriptorFromPlugin( Activator.PLUGIN_ID, PluginConstants.IMG_ATTRIBUTE_TYPE )
+ .createImage();
+ }
+
+ // Default
+ return null;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int)
+ */
+ public String getColumnText( Object element, int columnIndex )
+ {
+ 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() + ")";
+ }
+ }
+ else if ( element instanceof NonExistingAttributeType )
+ {
+ return ( ( NonExistingAttributeType ) element ).getDisplayName();
+ }
+
+ // Default
+ return null;
+ }
+}
Propchange: directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/editors/objectclass/ObjectClassEditorAttributesTableLabelProvider.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/editors/objectclass/ObjectClassEditorInput.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/editors/objectclass/ObjectClassEditorInput.java?rev=592094&view=auto
==============================================================================
--- directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/editors/objectclass/ObjectClassEditorInput.java (added)
+++ directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/editors/objectclass/ObjectClassEditorInput.java Mon Nov 5 09:14:24 2007
@@ -0,0 +1,138 @@
+/*
+ * 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.editors.objectclass;
+
+
+import org.apache.directory.studio.schemaeditor.model.ObjectClassImpl;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IPersistableElement;
+
+
+/**
+ * This class is the Input class for the Object Class Editor
+ */
+public class ObjectClassEditorInput implements IEditorInput
+{
+ private ObjectClassImpl objectClass;
+
+
+ /**
+ * Default constructor.
+ *
+ * @param obj
+ * the object class
+ */
+ public ObjectClassEditorInput( ObjectClassImpl obj )
+ {
+ super();
+ objectClass = obj;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.IEditorInput#exists()
+ */
+ public boolean exists()
+ {
+ return ( objectClass == null );
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.IEditorInput#getImageDescriptor()
+ */
+ public ImageDescriptor getImageDescriptor()
+ {
+ return null;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.IEditorInput#getName()
+ */
+ public String getName()
+ {
+ String[] names = objectClass.getNames();
+ if ( ( names != null ) && ( names.length > 0 ) )
+ {
+ return names[0];
+ }
+ else
+ {
+ return objectClass.getOid();
+ }
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.IEditorInput#getPersistable()
+ */
+ public IPersistableElement getPersistable()
+ {
+ return null;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.IEditorInput#getToolTipText()
+ */
+ public String getToolTipText()
+ {
+ return getName() + " from the " + objectClass.getSchema() + " schema";
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
+ */
+ @SuppressWarnings("unchecked")
+ public Object getAdapter( Class adapter )
+ {
+ return null;
+ }
+
+
+ /* (non-Javadoc)
+ * @see java.lang.Object#equals(java.lang.Object)
+ */
+ public boolean equals( Object obj )
+ {
+ if ( this == obj )
+ return true;
+ if ( !( obj instanceof ObjectClassEditorInput ) )
+ return false;
+ ObjectClassEditorInput other = ( ObjectClassEditorInput ) obj;
+ return other.getObjectClass().equals( this.objectClass );
+ }
+
+
+ /**
+ * Returns the input object class
+ *
+ * @return
+ * the input object class
+ */
+ public ObjectClassImpl getObjectClass()
+ {
+ return this.objectClass;
+ }
+}
Propchange: directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/editors/objectclass/ObjectClassEditorInput.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/editors/objectclass/ObjectClassEditorOverviewPage.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/editors/objectclass/ObjectClassEditorOverviewPage.java?rev=592094&view=auto
==============================================================================
--- directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/editors/objectclass/ObjectClassEditorOverviewPage.java (added)
+++ directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/editors/objectclass/ObjectClassEditorOverviewPage.java Mon Nov 5 09:14:24 2007
@@ -0,0 +1,1214 @@
+/*
+ * 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.editors.objectclass;
+
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.directory.shared.asn1.primitives.OID;
+import org.apache.directory.shared.ldap.schema.ObjectClassTypeEnum;
+import org.apache.directory.studio.schemaeditor.Activator;
+import org.apache.directory.studio.schemaeditor.controller.SchemaHandler;
+import org.apache.directory.studio.schemaeditor.controller.SchemaHandlerListener;
+import org.apache.directory.studio.schemaeditor.model.AttributeTypeImpl;
+import org.apache.directory.studio.schemaeditor.model.MatchingRuleImpl;
+import org.apache.directory.studio.schemaeditor.model.ObjectClassImpl;
+import org.apache.directory.studio.schemaeditor.model.Schema;
+import org.apache.directory.studio.schemaeditor.model.SyntaxImpl;
+import org.apache.directory.studio.schemaeditor.view.ViewUtils;
+import org.apache.directory.studio.schemaeditor.view.dialogs.AttributeTypeSelectionDialog;
+import org.apache.directory.studio.schemaeditor.view.dialogs.EditAliasesDialog;
+import org.apache.directory.studio.schemaeditor.view.dialogs.ObjectClassSelectionDialog;
+import org.apache.directory.studio.schemaeditor.view.editors.NonExistingAttributeType;
+import org.apache.directory.studio.schemaeditor.view.editors.NonExistingObjectClass;
+import org.apache.directory.studio.schemaeditor.view.editors.attributetype.AttributeTypeEditor;
+import org.apache.directory.studio.schemaeditor.view.editors.attributetype.AttributeTypeEditorInput;
+import org.apache.directory.studio.schemaeditor.view.editors.schema.SchemaEditor;
+import org.apache.directory.studio.schemaeditor.view.editors.schema.SchemaEditorInput;
+import org.apache.log4j.Logger;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.window.Window;
+import org.eclipse.swt.SWT;
+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.events.MouseListener;
+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.Label;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.forms.IManagedForm;
+import org.eclipse.ui.forms.editor.FormEditor;
+import org.eclipse.ui.forms.editor.FormPage;
+import org.eclipse.ui.forms.events.HyperlinkAdapter;
+import org.eclipse.ui.forms.events.HyperlinkEvent;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.Hyperlink;
+import org.eclipse.ui.forms.widgets.ScrolledForm;
+import org.eclipse.ui.forms.widgets.Section;
+
+
+/**
+ * This class is the Overview Page of the Object Class Editor
+ */
+public class ObjectClassEditorOverviewPage extends FormPage
+{
+ /** The page ID */
+ public static final String ID = ObjectClassEditor.ID + "overviewPage"; //$NON-NLS-1$
+
+ /** The page title*/
+ public static final String TITLE = "Overview";
+
+ /** The original object class */
+ private ObjectClassImpl originalObjectClass;
+
+ /** The modified object class */
+ private ObjectClassImpl modifiedObjectClass;
+
+ /** The original schema */
+ private Schema originalSchema;
+
+ /** The SchemaHandler */
+ private SchemaHandler schemaHandler;
+
+ /** The SchemaHandler Listener */
+ private SchemaHandlerListener schemaHandlerListener = new SchemaHandlerListener()
+ {
+ /* (non-Javadoc)
+ * @see org.apache.directory.studio.schemaeditor.controller.SchemaHandlerListener#attributeTypeAdded(org.apache.directory.studio.schemaeditor.model.AttributeTypeImpl)
+ */
+ public void attributeTypeAdded( AttributeTypeImpl at )
+ {
+ refreshUI();
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.studio.schemaeditor.controller.SchemaHandlerListener#attributeTypeModified(org.apache.directory.studio.schemaeditor.model.AttributeTypeImpl)
+ */
+ public void attributeTypeModified( AttributeTypeImpl at )
+ {
+ refreshUI();
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.studio.schemaeditor.controller.SchemaHandlerListener#attributeTypeRemoved(org.apache.directory.studio.schemaeditor.model.AttributeTypeImpl)
+ */
+ public void attributeTypeRemoved( AttributeTypeImpl at )
+ {
+ refreshUI();
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.studio.schemaeditor.controller.SchemaHandlerListener#matchingRuleAdded(org.apache.directory.studio.schemaeditor.model.MatchingRuleImpl)
+ */
+ public void matchingRuleAdded( MatchingRuleImpl mr )
+ {
+ refreshUI();
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.studio.schemaeditor.controller.SchemaHandlerListener#matchingRuleModified(org.apache.directory.studio.schemaeditor.model.MatchingRuleImpl)
+ */
+ public void matchingRuleModified( MatchingRuleImpl mr )
+ {
+ refreshUI();
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.studio.schemaeditor.controller.SchemaHandlerListener#matchingRuleRemoved(org.apache.directory.studio.schemaeditor.model.MatchingRuleImpl)
+ */
+ public void matchingRuleRemoved( MatchingRuleImpl mr )
+ {
+ refreshUI();
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.studio.schemaeditor.controller.SchemaHandlerListener#objectClassAdded(org.apache.directory.studio.schemaeditor.model.ObjectClassImpl)
+ */
+ public void objectClassAdded( ObjectClassImpl oc )
+ {
+ refreshUI();
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.studio.schemaeditor.controller.SchemaHandlerListener#objectClassModified(org.apache.directory.studio.schemaeditor.model.ObjectClassImpl)
+ */
+ public void objectClassModified( ObjectClassImpl oc )
+ {
+ refreshUI();
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.studio.schemaeditor.controller.SchemaHandlerListener#objectClassRemoved(org.apache.directory.studio.schemaeditor.model.ObjectClassImpl)
+ */
+ public void objectClassRemoved( ObjectClassImpl oc )
+ {
+ if ( !oc.equals( originalObjectClass ) )
+ {
+ refreshUI();
+ }
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.studio.schemaeditor.controller.SchemaHandlerListener#schemaAdded(org.apache.directory.studio.schemaeditor.model.Schema)
+ */
+ public void schemaAdded( Schema schema )
+ {
+ refreshUI();
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.studio.schemaeditor.controller.SchemaHandlerListener#schemaRemoved(org.apache.directory.studio.schemaeditor.model.Schema)
+ */
+ public void schemaRemoved( Schema schema )
+ {
+ if ( !schema.equals( originalSchema ) )
+ {
+ refreshUI();
+ }
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.studio.schemaeditor.controller.SchemaHandlerListener#syntaxAdded(org.apache.directory.studio.schemaeditor.model.SyntaxImpl)
+ */
+ public void syntaxAdded( SyntaxImpl syntax )
+ {
+ refreshUI();
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.studio.schemaeditor.controller.SchemaHandlerListener#syntaxModified(org.apache.directory.studio.schemaeditor.model.SyntaxImpl)
+ */
+ public void syntaxModified( SyntaxImpl syntax )
+ {
+ refreshUI();
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.studio.schemaeditor.controller.SchemaHandlerListener#syntaxRemoved(org.apache.directory.studio.schemaeditor.model.SyntaxImpl)
+ */
+ public void syntaxRemoved( SyntaxImpl syntax )
+ {
+ refreshUI();
+ }
+ };
+
+ // UI fields
+ private Label aliasesLabel;
+ private Button aliasesButton;
+ private Text oidText;
+ private Hyperlink schemaLink;
+ private Label schemaLabel;
+ private Text descriptionText;
+ private Table superiorsTable;
+ private TableViewer superiorsTableViewer;
+ private Button addButtonSuperiorsTable;
+ private Button removeButtonSuperiorsTable;
+ private Combo classTypeCombo;
+ private Button obsoleteCheckbox;
+ private Table mandatoryAttributesTable;
+ private TableViewer mandatoryAttributesTableViewer;
+ private Button addButtonMandatoryTable;
+ private Button removeButtonMandatoryTable;
+ private Table optionalAttributesTable;
+ private TableViewer optionalAttributesTableViewer;
+ private Button addButtonOptionalTable;
+ private Button removeButtonOptionalTable;
+
+ // Listeners
+ /** The listener for Aliases Button Widget */
+ private SelectionAdapter aliasesButtonListener = new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ EditAliasesDialog editDialog = new EditAliasesDialog( modifiedObjectClass.getNames() );
+ if ( editDialog.open() != Window.OK )
+ {
+ return;
+ }
+ if ( editDialog.isDirty() )
+ {
+ modifiedObjectClass.setNames( editDialog.getAliases() );
+ if ( ( modifiedObjectClass.getNames() != null ) && ( modifiedObjectClass.getNames().length != 0 ) )
+ {
+ aliasesLabel.setText( ViewUtils.concateAliases( modifiedObjectClass.getNames() ) );
+ }
+ else
+ {
+ aliasesLabel.setText( "(None)" );
+ }
+ setEditorDirty();
+ }
+ }
+ };
+
+ /** The Modify listener for the OID Text Widget */
+ private ModifyListener oidTextModifyListener = new ModifyListener()
+ {
+ public void modifyText( ModifyEvent e )
+ {
+ oidText.setForeground( ViewUtils.COLOR_BLACK );
+ oidText.setToolTipText( "" ); //$NON-NLS-1$
+
+ String oid = oidText.getText();
+
+ if ( OID.isOID( oid ) )
+ {
+ if ( ( originalObjectClass.getOid().equals( oid ) )
+ || !( schemaHandler.isAliasOrOidAlreadyTaken( oid ) ) )
+ {
+ modifiedObjectClass.setOid( oid );
+ setEditorDirty();
+ }
+ else
+ {
+ oidText.setForeground( ViewUtils.COLOR_RED );
+ oidText.setToolTipText( "An element with same oid already exists." );
+ }
+ }
+ else
+ {
+ oidText.setForeground( ViewUtils.COLOR_RED );
+ oidText.setToolTipText( "Malformed_OID." );
+ }
+ }
+ };
+
+ /** The Verify listener for the OID Text Widget */
+ private VerifyListener oidTextVerifyListener = new VerifyListener()
+ {
+ public void verifyText( VerifyEvent e )
+ {
+ if ( !e.text.matches( "([0-9]*\\.?)*" ) ) //$NON-NLS-1$
+ {
+ e.doit = false;
+ }
+ }
+ };
+
+ /** The listener for the Schema Hyperlink Widget*/
+ private HyperlinkAdapter schemaLinkListener = new HyperlinkAdapter()
+ {
+ public void linkActivated( HyperlinkEvent e )
+ {
+ IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+
+ SchemaEditorInput input = new SchemaEditorInput( schemaHandler.getSchema( modifiedObjectClass.getSchema() ) );
+ String editorId = SchemaEditor.ID;
+ try
+ {
+ page.openEditor( input, editorId );
+ }
+ catch ( PartInitException exception )
+ {
+ Logger.getLogger( ObjectClassEditorOverviewPage.class ).debug( "error when opening the editor" ); //$NON-NLS-1$
+ }
+ }
+ };
+
+ /** The listener for Description Text Widget */
+ private ModifyListener descriptionTextListener = new ModifyListener()
+ {
+ public void modifyText( ModifyEvent e )
+ {
+ int caretPosition = descriptionText.getCaretPosition();
+ modifiedObjectClass.setDescription( descriptionText.getText() );
+ descriptionText.setSelection( caretPosition );
+ setEditorDirty();
+ }
+ };
+
+ /** The listener for Class Type Widget */
+ private ModifyListener classTypeListener = new ModifyListener()
+ {
+ public void modifyText( ModifyEvent e )
+ {
+ if ( classTypeCombo.getSelectionIndex() == 0 )
+ {
+ modifiedObjectClass.setType( ObjectClassTypeEnum.ABSTRACT );
+ }
+ else if ( classTypeCombo.getSelectionIndex() == 1 )
+ {
+ modifiedObjectClass.setType( ObjectClassTypeEnum.AUXILIARY );
+ }
+ else if ( classTypeCombo.getSelectionIndex() == 2 )
+ {
+ modifiedObjectClass.setType( ObjectClassTypeEnum.STRUCTURAL );
+ }
+ setEditorDirty();
+ }
+ };
+
+ /** The listener for Obsolete Widget */
+ private SelectionAdapter obsoleteListener = new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ modifiedObjectClass.setObsolete( obsoleteCheckbox.getSelection() );
+ setEditorDirty();
+ }
+ };
+
+ /** The listener for Mandatory Attributes Table Widget */
+ private MouseListener mandatoryAttributesTableListener = new MouseListener()
+ {
+ public void mouseDoubleClick( MouseEvent e )
+ {
+ StructuredSelection selection = ( StructuredSelection ) mandatoryAttributesTableViewer.getSelection();
+ if ( selection.isEmpty() )
+ {
+ return;
+ }
+
+ Object selectedElement = selection.getFirstElement();
+ if ( selectedElement != null )
+ {
+ if ( selectedElement instanceof AttributeTypeImpl )
+ {
+ IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+ try
+ {
+ page.openEditor( new AttributeTypeEditorInput( ( AttributeTypeImpl ) selectedElement ),
+ AttributeTypeEditor.ID );
+ }
+ catch ( PartInitException exception )
+ {
+ Logger.getLogger( ObjectClassEditorOverviewPage.class ).debug( "error when opening the editor" ); //$NON-NLS-1$
+ }
+ }
+ }
+ }
+
+
+ public void mouseDown( MouseEvent e )
+ {
+ }
+
+
+ public void mouseUp( MouseEvent e )
+ {
+ removeButtonMandatoryTable.setEnabled( mandatoryAttributesTable.getSelection().length != 0 );
+ }
+ };
+
+ /** The listener for Add Button Widget of the Mandatory Attributes section */
+ private SelectionAdapter addButtonMandatoryTableListener = new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ AttributeTypeSelectionDialog dialog = new AttributeTypeSelectionDialog();
+ List<AttributeTypeImpl> hiddenATs = new ArrayList<AttributeTypeImpl>();
+ String[] mustsHidden = modifiedObjectClass.getMustNamesList();
+ if ( mustsHidden != null )
+ {
+ for ( String must : mustsHidden )
+ {
+ AttributeTypeImpl at = schemaHandler.getAttributeType( must );
+ if ( at != null )
+ {
+ hiddenATs.add( at );
+ }
+ }
+ }
+ dialog.setHiddenAttributeTypes( hiddenATs.toArray( new AttributeTypeImpl[0] ) );
+
+ if ( dialog.open() != Window.OK )
+ {
+ return;
+ }
+
+ AttributeTypeImpl at = dialog.getSelectedAttributeType();
+ if ( at == null )
+ {
+ return;
+ }
+
+ List<String> newMusts = new ArrayList<String>();
+ String[] musts = modifiedObjectClass.getMustNamesList();
+ if ( musts != null )
+ {
+ for ( String must : musts )
+ {
+ newMusts.add( must );
+ }
+ }
+ String[] names = at.getNames();
+ if ( ( names != null ) && ( names.length > 0 ) )
+ {
+ newMusts.add( names[0] );
+ }
+ else
+ {
+ newMusts.add( at.getOid() );
+ }
+ modifiedObjectClass.setMustNamesList( newMusts.toArray( new String[0] ) );
+
+ fillInMandatoryAttributesTable();
+ setEditorDirty();
+ }
+ };
+
+ /** The listener for Remove Button Widget of the Mandatory Attributes section */
+ private SelectionAdapter removeButtonMandatoryTableListener = new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ StructuredSelection selection = ( StructuredSelection ) mandatoryAttributesTableViewer.getSelection();
+ if ( selection.isEmpty() )
+ {
+ return;
+ }
+
+ Object selectedElement = selection.getFirstElement();
+ if ( selectedElement != null )
+ {
+ List<String> newMusts = new ArrayList<String>();
+ String[] musts = modifiedObjectClass.getMustNamesList();
+ for ( String must : musts )
+ {
+ newMusts.add( must );
+ }
+
+ if ( selectedElement instanceof AttributeTypeImpl )
+ {
+ for ( String name : ( ( AttributeTypeImpl ) selectedElement ).getNames() )
+ {
+ newMusts.remove( name );
+ }
+ }
+ else if ( selectedElement instanceof NonExistingAttributeType )
+ {
+ newMusts.remove( ( ( NonExistingAttributeType ) selectedElement ).getName() );
+ }
+
+ modifiedObjectClass.setMustNamesList( newMusts.toArray( new String[0] ) );
+
+ fillInMandatoryAttributesTable();
+ addButtonMandatoryTable.setFocus();
+ removeButtonMandatoryTable.setEnabled( mandatoryAttributesTable.getSelection().length != 0 );
+ setEditorDirty();
+ }
+ }
+ };
+
+ /** The listener for Optional Attributes Table Widget */
+ private MouseListener optionalAttributesTableListener = new MouseAdapter()
+ {
+ public void mouseDoubleClick( MouseEvent e )
+ {
+ StructuredSelection selection = ( StructuredSelection ) optionalAttributesTableViewer.getSelection();
+ if ( selection.isEmpty() )
+ {
+ return;
+ }
+
+ Object selectedElement = selection.getFirstElement();
+ if ( selectedElement != null )
+ {
+ if ( selectedElement instanceof AttributeTypeImpl )
+ {
+ IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+ try
+ {
+ page.openEditor( new AttributeTypeEditorInput( ( AttributeTypeImpl ) selectedElement ),
+ AttributeTypeEditor.ID );
+ }
+ catch ( PartInitException exception )
+ {
+ Logger.getLogger( ObjectClassEditorOverviewPage.class ).debug( "error when opening the editor" ); //$NON-NLS-1$
+ }
+ }
+ }
+ }
+
+
+ public void mouseUp( MouseEvent e )
+ {
+ removeButtonOptionalTable.setEnabled( optionalAttributesTable.getSelection().length != 0 );
+ }
+ };
+
+ /** The listener for Add Button Widget of the Optional Attributes section */
+ private SelectionAdapter addButtonOptionalTableListener = new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ AttributeTypeSelectionDialog dialog = new AttributeTypeSelectionDialog();
+ List<AttributeTypeImpl> hiddenATs = new ArrayList<AttributeTypeImpl>();
+ String[] maysHidden = modifiedObjectClass.getMayNamesList();
+ if ( maysHidden != null )
+ {
+ for ( String may : maysHidden )
+ {
+ AttributeTypeImpl at = schemaHandler.getAttributeType( may );
+ if ( at != null )
+ {
+ hiddenATs.add( at );
+ }
+ }
+ }
+ dialog.setHiddenAttributeTypes( hiddenATs.toArray( new AttributeTypeImpl[0] ) );
+
+ if ( dialog.open() != Window.OK )
+ {
+ return;
+ }
+
+ AttributeTypeImpl at = dialog.getSelectedAttributeType();
+ if ( at == null )
+ {
+ return;
+ }
+
+ List<String> newMays = new ArrayList<String>();
+ String[] mays = modifiedObjectClass.getMayNamesList();
+ if ( mays != null )
+ {
+ for ( String may : mays )
+ {
+ newMays.add( may );
+ }
+ }
+ String[] names = at.getNames();
+ if ( ( names != null ) && ( names.length > 0 ) )
+ {
+ newMays.add( names[0] );
+ }
+ else
+ {
+ newMays.add( at.getOid() );
+ }
+ modifiedObjectClass.setMayNamesList( newMays.toArray( new String[0] ) );
+
+ fillInOptionalAttributesTable();
+ setEditorDirty();
+ }
+ };
+
+ /** The listener for Remove Button Widget of the Optional Attributes section */
+ private SelectionAdapter removeButtonOptionalTableListener = new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ StructuredSelection selection = ( StructuredSelection ) optionalAttributesTableViewer.getSelection();
+ if ( selection.isEmpty() )
+ {
+ return;
+ }
+
+ Object selectedElement = selection.getFirstElement();
+ if ( selectedElement != null )
+ {
+ List<String> newMays = new ArrayList<String>();
+ String[] mays = modifiedObjectClass.getMayNamesList();
+ for ( String may : mays )
+ {
+ newMays.add( may );
+ }
+
+ if ( selectedElement instanceof AttributeTypeImpl )
+ {
+ for ( String name : ( ( AttributeTypeImpl ) selectedElement ).getNames() )
+ {
+ newMays.remove( name );
+ }
+ }
+ else if ( selectedElement instanceof NonExistingAttributeType )
+ {
+ newMays.remove( ( ( NonExistingAttributeType ) selectedElement ).getName() );
+ }
+
+ modifiedObjectClass.setMayNamesList( newMays.toArray( new String[0] ) );
+
+ fillInOptionalAttributesTable();
+ addButtonOptionalTable.setFocus();
+ removeButtonOptionalTable.setEnabled( optionalAttributesTable.getSelection().length != 0 );
+ setEditorDirty();
+ }
+ }
+ };
+
+ /** The listener for Superiors Table Widget */
+ private MouseListener superiorsTableListener = new MouseAdapter()
+ {
+ public void mouseDoubleClick( MouseEvent e )
+ {
+ StructuredSelection selection = ( StructuredSelection ) superiorsTableViewer.getSelection();
+ if ( selection.isEmpty() )
+ {
+ return;
+ }
+
+ Object selectedElement = selection.getFirstElement();
+ if ( selectedElement != null )
+ {
+ if ( selectedElement instanceof ObjectClassImpl )
+ {
+ IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+ try
+ {
+ page.openEditor( new ObjectClassEditorInput( ( ObjectClassImpl ) selectedElement ),
+ ObjectClassEditor.ID );
+ }
+ catch ( PartInitException exception )
+ {
+ Logger.getLogger( ObjectClassEditorOverviewPage.class ).debug( "error when opening the editor" ); //$NON-NLS-1$
+ }
+ }
+ }
+ }
+
+
+ public void mouseUp( MouseEvent e )
+ {
+ removeButtonSuperiorsTable.setEnabled( superiorsTable.getSelection().length != 0 );
+ }
+ };
+
+ /** The listener for Add Button Widget of the Superiors Table */
+ private SelectionAdapter addButtonSuperiorsTableListener = new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ ObjectClassSelectionDialog dialog = new ObjectClassSelectionDialog();
+ List<ObjectClassImpl> hiddenOCs = new ArrayList<ObjectClassImpl>();
+ for ( String sup : modifiedObjectClass.getSuperClassesNames() )
+ {
+ ObjectClassImpl oc = schemaHandler.getObjectClass( sup );
+ if ( oc != null )
+ {
+ hiddenOCs.add( oc );
+ }
+ }
+ hiddenOCs.add( originalObjectClass );
+ dialog.setHiddenObjectClasses( hiddenOCs.toArray( new ObjectClassImpl[0] ) );
+
+ if ( dialog.open() != Window.OK )
+ {
+ return;
+ }
+
+ ObjectClassImpl oc = dialog.getSelectedObjectClass();
+ if ( oc == null )
+ {
+ return;
+ }
+
+ List<String> superiors = new ArrayList<String>();
+ String[] sups = modifiedObjectClass.getSuperClassesNames();
+ for ( String sup : sups )
+ {
+ superiors.add( sup );
+ }
+ String[] names = oc.getNames();
+ if ( ( names != null ) && ( names.length > 0 ) )
+ {
+ superiors.add( names[0] );
+ }
+ else
+ {
+ superiors.add( oc.getOid() );
+ }
+ modifiedObjectClass.setSuperClassesNames( superiors.toArray( new String[0] ) );
+
+ fillInSuperiorsTable();
+ setEditorDirty();
+ }
+ };
+
+ /** The listener for Remove Button Widget of the Superiors Table */
+ private SelectionAdapter removeButtonSuperiorsTableListener = new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ StructuredSelection selection = ( StructuredSelection ) superiorsTableViewer.getSelection();
+ if ( selection.isEmpty() )
+ {
+ return;
+ }
+
+ Object selectedElement = selection.getFirstElement();
+ if ( selectedElement != null )
+ {
+ List<String> superiors = new ArrayList<String>();
+ String[] sups = modifiedObjectClass.getSuperClassesNames();
+ for ( String sup : sups )
+ {
+ superiors.add( sup );
+ }
+
+ if ( selectedElement instanceof ObjectClassImpl )
+ {
+ for ( String name : ( ( ObjectClassImpl ) selectedElement ).getNames() )
+ {
+ superiors.remove( name );
+ }
+ }
+ else if ( selectedElement instanceof NonExistingObjectClass )
+ {
+ superiors.remove( ( ( NonExistingObjectClass ) selectedElement ).getName() );
+ }
+
+ modifiedObjectClass.setSuperClassesNames( superiors.toArray( new String[0] ) );
+
+ fillInSuperiorsTable();
+ addButtonSuperiorsTable.setFocus();
+ removeButtonSuperiorsTable.setEnabled( superiorsTable.getSelection().length != 0 );
+ setEditorDirty();
+ }
+ }
+ };
+
+
+ /**
+ * Default constructor
+ * @param editor
+ * the associated editor
+ */
+ public ObjectClassEditorOverviewPage( FormEditor editor )
+ {
+ super( editor, ID, TITLE );
+ schemaHandler = Activator.getDefault().getSchemaHandler();
+ schemaHandler.addListener( schemaHandlerListener );
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.forms.editor.FormPage#createFormContent(org.eclipse.ui.forms.IManagedForm)
+ */
+ protected void createFormContent( IManagedForm managedForm )
+ {
+ // Getting the original and modified object classes
+ modifiedObjectClass = ( ( ObjectClassEditor ) getEditor() ).getModifiedObjectClass();
+ originalObjectClass = ( ( ObjectClassEditor ) getEditor() ).getOriginalObjectClass();
+ originalSchema = schemaHandler.getSchema( originalObjectClass.getSchema() );
+
+ // Creating the base UI
+ ScrolledForm form = managedForm.getForm();
+ FormToolkit toolkit = managedForm.getToolkit();
+ form.getBody().setLayout( new GridLayout() );
+
+ // General Information Section
+ createGeneralInformationSection( form.getBody(), toolkit );
+
+ Composite bottomComposite = toolkit.createComposite( form.getBody() );
+ bottomComposite.setLayout( new GridLayout( 2, true ) );
+ bottomComposite.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+
+ // Mandatory Attributes Section
+ createMandatoryAttributesSection( bottomComposite, toolkit );
+
+ // Optionnal Attributes Section
+ createOptionalAttributesSection( bottomComposite, toolkit );
+
+ // Enabling or disabling the fields
+ // setFieldsEditableState();
+
+ // Filling the UI with values from the object class
+ fillInUiFields();
+
+ // Listeners initialization
+ addListeners();
+
+ // Help Context for Dynamic Help
+ PlatformUI.getWorkbench().getHelpSystem().setHelp( form, Activator.PLUGIN_ID + "." + "object_class_editor" );
+ }
+
+
+ /**
+ * Creates the General Information Section.
+ *
+ * @param parent
+ * the parent composite
+ * @param toolkit
+ * the FormToolKit to use
+ */
+ private void createGeneralInformationSection( Composite parent, FormToolkit toolkit )
+ {
+ // General Information Section
+ Section section_general_information = toolkit.createSection( parent, Section.DESCRIPTION | Section.TITLE_BAR );
+ section_general_information.setDescription( "Specify general information (aliases, OID, etc.)." );
+ section_general_information.setText( "General information" );
+ section_general_information.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, true ) );
+
+ // Creating the layout of the section
+ Composite client_general_information = toolkit.createComposite( section_general_information );
+ client_general_information.setLayout( new GridLayout( 3, false ) );
+ toolkit.paintBordersFor( client_general_information );
+ section_general_information.setClient( client_general_information );
+
+ // ALIASES Button
+ toolkit.createLabel( client_general_information, "Aliases:" );
+ aliasesLabel = toolkit.createLabel( client_general_information, "" ); //$NON-NLS-1$
+ aliasesLabel.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false, 2, 1 ) );
+ toolkit.createLabel( client_general_information, "" ); //$NON-NLS-1$
+ aliasesButton = toolkit.createButton( client_general_information, "Edit_Aliases", SWT.PUSH );
+ aliasesButton.setLayoutData( new GridData( SWT.NONE, SWT.NONE, false, false, 2, 1 ) );
+
+ // OID Field
+ toolkit.createLabel( client_general_information, "OID:" );
+ oidText = toolkit.createText( client_general_information, "" ); //$NON-NLS-1$
+ oidText.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false, 2, 1 ) );
+
+ // SCHEMA Field
+ schemaLink = toolkit.createHyperlink( client_general_information, "Schema:", SWT.WRAP );
+ schemaLabel = toolkit.createLabel( client_general_information, "" ); //$NON-NLS-1$
+ schemaLabel.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false, 2, 1 ) );
+
+ // DESCRIPTION Field
+ toolkit.createLabel( client_general_information, "Description:" );
+ descriptionText = toolkit.createText( client_general_information, "", SWT.MULTI | SWT.V_SCROLL ); //$NON-NLS-1$
+ GridData descriptionGridData = new GridData( SWT.FILL, SWT.NONE, true, false, 2, 1 );
+ descriptionGridData.heightHint = 42;
+ descriptionText.setLayoutData( descriptionGridData );
+
+ // SUPERIORS Table
+ toolkit.createLabel( client_general_information, "Superior classes:" );
+ superiorsTable = toolkit.createTable( client_general_information, SWT.SINGLE | SWT.FULL_SELECTION
+ | SWT.H_SCROLL | SWT.V_SCROLL );
+ GridData gridData = new GridData( SWT.FILL, SWT.NONE, true, false );
+ gridData.heightHint = 45;
+ gridData.minimumHeight = 45;
+ superiorsTable.setLayoutData( gridData );
+ superiorsTableViewer = new TableViewer( superiorsTable );
+ superiorsTableViewer.setContentProvider( new ObjectClassEditorSuperiorsTableContentProvider() );
+ superiorsTableViewer.setLabelProvider( new ObjectClassEditorSuperiorsTableLabelProvider() );
+ Composite superiorsButtonComposite = toolkit.createComposite( client_general_information );
+ superiorsButtonComposite.setLayout( new GridLayout() );
+ addButtonSuperiorsTable = toolkit.createButton( superiorsButtonComposite, "Add...", SWT.PUSH );
+ addButtonSuperiorsTable.setLayoutData( new GridData( SWT.FILL, SWT.NONE, false, false ) );
+ removeButtonSuperiorsTable = toolkit.createButton( superiorsButtonComposite, "Remove", SWT.PUSH );
+ removeButtonSuperiorsTable.setLayoutData( new GridData( SWT.FILL, SWT.NONE, false, false ) );
+
+ // CLASS TYPE Combo
+ toolkit.createLabel( client_general_information, "Class type:" );
+ classTypeCombo = new Combo( client_general_information, SWT.READ_ONLY | SWT.SINGLE );
+ classTypeCombo.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false, 2, 1 ) );
+ initClassTypeCombo();
+
+ // OBSOLETE Checkbox
+ toolkit.createLabel( client_general_information, "" ); //$NON-NLS-1$
+ obsoleteCheckbox = toolkit.createButton( client_general_information, "Obsolete", SWT.CHECK );
+ obsoleteCheckbox.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false, 2, 1 ) );
+ }
+
+
+ /**
+ * Creates the Mandatory Attributes Section.
+ *
+ * @param parent
+ * the parent composite
+ * @param toolkit
+ * the FormToolKit to use
+ */
+ private void createMandatoryAttributesSection( Composite parent, FormToolkit toolkit )
+ {
+ // MANDATORY ATTRIBUTES Section
+ Section section = toolkit.createSection( parent, Section.DESCRIPTION | Section.TITLE_BAR );
+ section.setText( "Mandatory attributes" );
+ section.setDescription( "Specify the mandatory attribute types." );
+ section.setExpanded( true );
+ Composite client = toolkit.createComposite( section );
+ section.setClient( client );
+ GridData gd = new GridData( SWT.FILL, SWT.NONE, true, false );
+ section.setLayoutData( gd );
+ toolkit.paintBordersFor( client );
+
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 2;
+ client.setLayout( layout );
+
+ mandatoryAttributesTable = toolkit.createTable( client, SWT.SINGLE | SWT.FULL_SELECTION | SWT.H_SCROLL
+ | SWT.V_SCROLL );
+ gd = new GridData( SWT.FILL, SWT.NONE, true, false );
+ gd.verticalSpan = 2;
+ gd.heightHint = 108;
+ mandatoryAttributesTable.setLayoutData( gd );
+ mandatoryAttributesTableViewer = new TableViewer( mandatoryAttributesTable );
+ mandatoryAttributesTableViewer.setContentProvider( new ObjectClassEditorAttributesTableContentProvider() );
+ mandatoryAttributesTableViewer.setLabelProvider( new ObjectClassEditorAttributesTableLabelProvider() );
+
+ addButtonMandatoryTable = toolkit.createButton( client, "Add...", SWT.PUSH );
+ removeButtonMandatoryTable = toolkit.createButton( client, "Remove", SWT.PUSH );
+ gd = new GridData( GridData.VERTICAL_ALIGN_BEGINNING );
+ addButtonMandatoryTable.setLayoutData( gd );
+ removeButtonMandatoryTable.setLayoutData( gd );
+
+ // By default, no element is selected
+ removeButtonMandatoryTable.setEnabled( false );
+ }
+
+
+ /**
+ * Creates the Optional Attributes Section.
+ *
+ * @param parent
+ * the parent composite
+ * @param toolkit
+ * the FormToolKit to use
+ */
+ private void createOptionalAttributesSection( Composite parent, FormToolkit toolkit )
+ {
+ // OPTIONAL ATTRIBUTES Section
+ Section section = toolkit.createSection( parent, Section.DESCRIPTION | Section.TITLE_BAR );
+ section.setText( "Optional attributes" );
+ section.setDescription( "Specify the optional attribute types." );
+ section.setExpanded( true );
+ Composite client = toolkit.createComposite( section );
+ section.setClient( client );
+ GridData gd = new GridData( SWT.FILL, SWT.NONE, true, false );
+ section.setLayoutData( gd );
+ toolkit.paintBordersFor( client );
+
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 2;
+ client.setLayout( layout );
+
+ optionalAttributesTable = toolkit.createTable( client, SWT.SINGLE | SWT.FULL_SELECTION | SWT.H_SCROLL
+ | SWT.V_SCROLL );
+ gd = new GridData( SWT.FILL, SWT.NONE, true, false );
+ gd.verticalSpan = 2;
+ gd.heightHint = 108;
+ optionalAttributesTable.setLayoutData( gd );
+ optionalAttributesTableViewer = new TableViewer( optionalAttributesTable );
+ optionalAttributesTableViewer.setContentProvider( new ObjectClassEditorAttributesTableContentProvider() );
+ optionalAttributesTableViewer.setLabelProvider( new ObjectClassEditorAttributesTableLabelProvider() );
+
+ addButtonOptionalTable = toolkit.createButton( client, "Add...", SWT.PUSH );
+ removeButtonOptionalTable = toolkit.createButton( client, "Remove", SWT.PUSH );
+ gd = new GridData( GridData.VERTICAL_ALIGN_BEGINNING );
+ addButtonOptionalTable.setLayoutData( gd );
+ removeButtonOptionalTable.setLayoutData( gd );
+
+ // By default, no element is selected
+ removeButtonOptionalTable.setEnabled( false );
+ }
+
+
+ /**
+ * Initializes the UI fields from the input.
+ */
+ private void fillInUiFields()
+ {
+ // ALIASES Label
+ if ( ( modifiedObjectClass.getNames() != null ) && ( modifiedObjectClass.getNames().length != 0 ) )
+ {
+ aliasesLabel.setText( ViewUtils.concateAliases( modifiedObjectClass.getNames() ) );
+ }
+ else
+ {
+ aliasesLabel.setText( "(None)" );
+ }
+
+ // OID Field
+ if ( modifiedObjectClass.getOid() != null )
+ {
+ oidText.setText( modifiedObjectClass.getOid() );
+ }
+
+ schemaLabel.setText( modifiedObjectClass.getSchema() );
+
+ // DESCRIPTION Field
+ if ( modifiedObjectClass.getDescription() != null )
+ {
+ descriptionText.setText( modifiedObjectClass.getDescription() );
+ }
+
+ // SUPERIORS Table
+ fillInSuperiorsTable();
+
+ // CLASS TYPE Combo
+ fillInClassType();
+
+ // OBSOLETE Checkbox
+ obsoleteCheckbox.setSelection( modifiedObjectClass.isObsolete() );
+
+ // MANDATORY ATTRIBUTES Table
+ fillInMandatoryAttributesTable();
+
+ // OPTIONNAL ATTRIBUTES Table
+ fillInOptionalAttributesTable();
+ }
+
+
+ /**
+ * Fills in the Superiors Table.
+ */
+ private void fillInSuperiorsTable()
+ {
+ superiorsTableViewer.setInput( modifiedObjectClass.getSuperClassesNames() );
+ }
+
+
+ /**
+ * Initializes the Class Type Combo
+ */
+ private void initClassTypeCombo()
+ {
+ classTypeCombo.add( "Abstract", 0 );
+ classTypeCombo.add( "Auxiliary", 1 );
+ classTypeCombo.add( "Structural", 2 );
+ }
+
+
+ /**
+ * Fills in the Class Type Combo
+ */
+ private void fillInClassType()
+ {
+ if ( modifiedObjectClass.getType() == ObjectClassTypeEnum.ABSTRACT )
+ {
+ classTypeCombo.select( 0 );
+ }
+ else if ( modifiedObjectClass.getType() == ObjectClassTypeEnum.AUXILIARY )
+ {
+ classTypeCombo.select( 1 );
+ }
+ else if ( modifiedObjectClass.getType() == ObjectClassTypeEnum.STRUCTURAL )
+ {
+ classTypeCombo.select( 2 );
+ }
+ }
+
+
+ /**
+ * Initializes the Mandatory Attributes Table
+ */
+ private void fillInMandatoryAttributesTable()
+ {
+ mandatoryAttributesTableViewer.setInput( modifiedObjectClass.getMustNamesList() );
+ }
+
+
+ /**
+ * Initializes the Optional Attributes Table
+ */
+ private void fillInOptionalAttributesTable()
+ {
+ optionalAttributesTableViewer.setInput( modifiedObjectClass.getMayNamesList() );
+ }
+
+
+ /**
+ * Adds listeners to UI fields
+ */
+ private void addListeners()
+ {
+ aliasesButton.addSelectionListener( aliasesButtonListener );
+ oidText.addModifyListener( oidTextModifyListener );
+ oidText.addVerifyListener( oidTextVerifyListener );
+ descriptionText.addModifyListener( descriptionTextListener );
+ addButtonSuperiorsTable.addSelectionListener( addButtonSuperiorsTableListener );
+ removeButtonSuperiorsTable.addSelectionListener( removeButtonSuperiorsTableListener );
+ classTypeCombo.addModifyListener( classTypeListener );
+ obsoleteCheckbox.addSelectionListener( obsoleteListener );
+ addButtonMandatoryTable.addSelectionListener( addButtonMandatoryTableListener );
+ removeButtonMandatoryTable.addSelectionListener( removeButtonMandatoryTableListener );
+ addButtonOptionalTable.addSelectionListener( addButtonOptionalTableListener );
+ removeButtonOptionalTable.addSelectionListener( removeButtonOptionalTableListener );
+ schemaLink.addHyperlinkListener( schemaLinkListener );
+ superiorsTable.addMouseListener( superiorsTableListener );
+ mandatoryAttributesTable.addMouseListener( mandatoryAttributesTableListener );
+ optionalAttributesTable.addMouseListener( optionalAttributesTableListener );
+ }
+
+
+ /**
+ * Removes listeners from UI fields
+ */
+ private void removeListeners()
+ {
+ aliasesButton.removeSelectionListener( aliasesButtonListener );
+ oidText.removeModifyListener( oidTextModifyListener );
+ oidText.removeVerifyListener( oidTextVerifyListener );
+ schemaLink.removeHyperlinkListener( schemaLinkListener );
+ descriptionText.removeModifyListener( descriptionTextListener );
+ superiorsTable.removeMouseListener( superiorsTableListener );
+ addButtonSuperiorsTable.removeSelectionListener( addButtonSuperiorsTableListener );
+ removeButtonSuperiorsTable.removeSelectionListener( removeButtonSuperiorsTableListener );
+ classTypeCombo.removeModifyListener( classTypeListener );
+ obsoleteCheckbox.removeSelectionListener( obsoleteListener );
+ mandatoryAttributesTable.removeMouseListener( mandatoryAttributesTableListener );
+ addButtonMandatoryTable.removeSelectionListener( addButtonMandatoryTableListener );
+ removeButtonMandatoryTable.removeSelectionListener( removeButtonMandatoryTableListener );
+ optionalAttributesTable.removeMouseListener( optionalAttributesTableListener );
+ addButtonOptionalTable.removeSelectionListener( addButtonOptionalTableListener );
+ removeButtonOptionalTable.removeSelectionListener( removeButtonOptionalTableListener );
+ }
+
+
+ /**
+ * Sets the editor as dirty
+ */
+ private void setEditorDirty()
+ {
+ ( ( ObjectClassEditor ) getEditor() ).setDirty( true );
+ }
+
+
+ /**
+ * Refreshes the UI.
+ */
+ public void refreshUI()
+ {
+ removeListeners();
+ fillInUiFields();
+ addListeners();
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.forms.editor.FormPage#dispose()
+ */
+ public void dispose()
+ {
+ schemaHandler.removeListener( schemaHandlerListener );
+
+ super.dispose();
+ }
+}
Propchange: directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/editors/objectclass/ObjectClassEditorOverviewPage.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/editors/objectclass/ObjectClassEditorSourceCodePage.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/editors/objectclass/ObjectClassEditorSourceCodePage.java?rev=592094&view=auto
==============================================================================
--- directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/editors/objectclass/ObjectClassEditorSourceCodePage.java (added)
+++ directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/editors/objectclass/ObjectClassEditorSourceCodePage.java Mon Nov 5 09:14:24 2007
@@ -0,0 +1,200 @@
+/*
+ * 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.editors.objectclass;
+
+
+import java.io.IOException;
+import java.text.ParseException;
+import java.util.List;
+
+import org.apache.directory.server.core.tools.schema.ObjectClassLiteral;
+import org.apache.directory.server.core.tools.schema.OpenLdapSchemaParser;
+import org.apache.directory.studio.schemaeditor.Activator;
+import org.apache.directory.studio.schemaeditor.model.ObjectClassImpl;
+import org.apache.directory.studio.schemaeditor.model.io.OpenLdapSchemaFileExporter;
+import org.apache.directory.studio.schemaeditor.view.widget.SchemaSourceViewer;
+import org.eclipse.jface.resource.JFaceResources;
+import org.eclipse.jface.text.Document;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.forms.IManagedForm;
+import org.eclipse.ui.forms.editor.FormEditor;
+import org.eclipse.ui.forms.editor.FormPage;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.ScrolledForm;
+
+
+/**
+ * This class is the Source Code Page of the Object Class Editor
+ */
+public class ObjectClassEditorSourceCodePage extends FormPage
+{
+ /** The page ID */
+ public static final String ID = ObjectClassEditor.ID + "sourceCodePage"; //$NON-NLS-1$
+
+ /** The page title*/
+ public static final String TITLE = "Source Code"; //$NON-NLS-1$
+
+ /** The modified object class */
+ private ObjectClassImpl modifiedObjectClass;
+
+ /** The Schema Source Viewer */
+ private SchemaSourceViewer schemaSourceViewer;
+
+ /** The flag to indicate if the user can leave the Source Code page */
+ private boolean canLeaveThePage = true;
+
+ /** The listener of the Schema Source Viewer Widget */
+ private ModifyListener schemaSourceViewerListener = new ModifyListener()
+ {
+ public void modifyText( ModifyEvent e )
+ {
+ canLeaveThePage = true;
+ try
+ {
+ ( ( ObjectClassEditor ) getEditor() ).setDirty( true );
+ OpenLdapSchemaParser parser = new OpenLdapSchemaParser();
+ parser.parse( schemaSourceViewer.getTextWidget().getText() );
+
+ List<?> objectclasses = parser.getObjectClassTypes();
+ if ( objectclasses.size() != 1 )
+ {
+ // TODO Throw an exception and return
+ }
+ else
+ {
+ updateObjectClass( ( ObjectClassLiteral ) objectclasses.get( 0 ) );
+ }
+ }
+ catch ( IOException e1 )
+ {
+ canLeaveThePage = false;
+ }
+ catch ( ParseException exception )
+ {
+ canLeaveThePage = false;
+ }
+ }
+ };
+
+
+ /**
+ * Default constructor
+ * @param editor
+ * the associated editor
+ */
+ public ObjectClassEditorSourceCodePage( FormEditor editor )
+ {
+ super( editor, ID, TITLE );
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.forms.editor.FormPage#createFormContent(org.eclipse.ui.forms.IManagedForm)
+ */
+ protected void createFormContent( IManagedForm managedForm )
+ {
+ ScrolledForm form = managedForm.getForm();
+ FormToolkit toolkit = managedForm.getToolkit();
+ GridLayout layout = new GridLayout();
+ layout.marginWidth = 0;
+ layout.marginHeight = 0;
+ form.getBody().setLayout( layout );
+ toolkit.paintBordersFor( form.getBody() );
+
+ modifiedObjectClass = ( ( ObjectClassEditor ) getEditor() ).getModifiedObjectClass();
+
+ // SOURCE CODE Field
+ schemaSourceViewer = new SchemaSourceViewer( form.getBody(), null, null, false, SWT.BORDER | SWT.H_SCROLL
+ | SWT.V_SCROLL );
+ GridData gd = new GridData( SWT.FILL, SWT.FILL, true, true );
+ gd.heightHint = 10;
+ schemaSourceViewer.getTextWidget().setLayoutData( gd );
+
+ // set text font
+ Font font = JFaceResources.getFont( JFaceResources.TEXT_FONT );
+ schemaSourceViewer.getTextWidget().setFont( font );
+
+ IDocument document = new Document();
+ schemaSourceViewer.setDocument( document );
+
+ // Initialization from the "input" object class
+ fillInUiFields();
+
+ schemaSourceViewer.getTextWidget().addModifyListener( schemaSourceViewerListener );
+
+ // Help Context for Dynamic Help
+ PlatformUI.getWorkbench().getHelpSystem().setHelp( form, Activator.PLUGIN_ID + "." + "object_class_editor" );
+ }
+
+
+ /**
+ * Fills in the User Interface.
+ */
+ private void fillInUiFields()
+ {
+ // SOURCE CODE Field
+ schemaSourceViewer.getDocument().set( OpenLdapSchemaFileExporter.toSourceCode( modifiedObjectClass ) );
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.forms.editor.FormPage#canLeaveThePage()
+ */
+ public boolean canLeaveThePage()
+ {
+ return canLeaveThePage;
+ }
+
+
+ /**
+ * Updates the Modified Object Class from the given Object Class Literal.
+ *
+ * @param ocl
+ * the Object Class Literal
+ */
+ private void updateObjectClass( ObjectClassLiteral ocl )
+ {
+ modifiedObjectClass.setDescription( ocl.getDescription() );
+ modifiedObjectClass.setMayNamesList( ocl.getMay() );
+ modifiedObjectClass.setMustNamesList( ocl.getMust() );
+ modifiedObjectClass.setNames( ocl.getNames() );
+ modifiedObjectClass.setObsolete( ocl.isObsolete() );
+ modifiedObjectClass.setOid( ocl.getOid() );
+ modifiedObjectClass.setSuperClassesNames( ocl.getSuperiors() );
+ modifiedObjectClass.setType( ocl.getClassType() );
+ }
+
+
+ /**
+ * Refreshes the UI.
+ */
+ public void refreshUI()
+ {
+ fillInUiFields();
+ }
+}
Propchange: directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/editors/objectclass/ObjectClassEditorSourceCodePage.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/editors/objectclass/ObjectClassEditorSuperiorsTableContentProvider.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/editors/objectclass/ObjectClassEditorSuperiorsTableContentProvider.java?rev=592094&view=auto
==============================================================================
--- directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/editors/objectclass/ObjectClassEditorSuperiorsTableContentProvider.java (added)
+++ directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/editors/objectclass/ObjectClassEditorSuperiorsTableContentProvider.java Mon Nov 5 09:14:24 2007
@@ -0,0 +1,162 @@
+/*
+ * 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.editors.objectclass;
+
+
+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.controller.SchemaHandler;
+import org.apache.directory.studio.schemaeditor.model.ObjectClassImpl;
+import org.apache.directory.studio.schemaeditor.view.editors.NonExistingObjectClass;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+
+
+/**
+ * This class is the Content Provider for the Superiors Table of the Object
+ * Class Editor.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class ObjectClassEditorSuperiorsTableContentProvider implements IStructuredContentProvider
+{
+ /** The SchemaHandler */
+ private SchemaHandler schemaHandler;
+
+
+ /**
+ * Creates a new instance of
+ * ObjectClassFormEditorSuperiorsTableContentProvider.
+ */
+ public ObjectClassEditorSuperiorsTableContentProvider()
+ {
+ schemaHandler = Activator.getDefault().getSchemaHandler();
+ }
+
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
+ */
+ public Object[] getElements( Object inputElement )
+ {
+ if ( inputElement instanceof String[] )
+ {
+ List<Object> results = new ArrayList<Object>();
+
+ String[] superiors = ( String[] ) inputElement;
+ for ( String superior : superiors )
+ {
+ ObjectClassImpl oc = schemaHandler.getObjectClass( superior );
+ if ( oc != null )
+ {
+ results.add( oc );
+ }
+ else
+ {
+ results.add( new NonExistingObjectClass( superior ) );
+ }
+ }
+
+ // Sorting Elements
+ Collections.sort( results, new Comparator<Object>()
+ {
+ public int compare( Object o1, Object o2 )
+ {
+ if ( o1 instanceof ObjectClassImpl && o2 instanceof ObjectClassImpl )
+ {
+ String[] oc1Names = ( ( ObjectClassImpl ) o1 ).getNames();
+ String[] oc2Names = ( ( ObjectClassImpl ) o2 ).getNames();
+
+ if ( ( oc1Names != null ) && ( oc2Names != null ) && ( oc1Names.length > 0 )
+ && ( oc2Names.length > 0 ) )
+ {
+ return oc1Names[0].compareToIgnoreCase( oc2Names[0] );
+ }
+ }
+ else if ( o1 instanceof ObjectClassImpl && o2 instanceof NonExistingObjectClass )
+ {
+ String[] oc1Names = ( ( ObjectClassImpl ) o1 ).getNames();
+ String oc2Name = ( ( NonExistingObjectClass ) o2 ).getName();
+
+ if ( ( oc1Names != null ) && ( oc2Name != null ) && ( oc1Names.length > 0 ) )
+ {
+ return oc1Names[0].compareToIgnoreCase( oc2Name );
+ }
+ }
+ else if ( o1 instanceof NonExistingObjectClass && o2 instanceof ObjectClassImpl )
+ {
+ String oc1Name = ( ( NonExistingObjectClass ) o1 ).getName();
+ String[] oc2Names = ( ( ObjectClassImpl ) o2 ).getNames();
+
+ if ( ( oc1Name != null ) && ( oc2Names != null ) && ( oc2Names.length > 0 ) )
+ {
+ return oc1Name.compareToIgnoreCase( oc2Names[0] );
+ }
+ }
+ else if ( o1 instanceof NonExistingObjectClass && o2 instanceof NonExistingObjectClass )
+ {
+ String oc1Name = ( ( NonExistingObjectClass ) o1 ).getName();
+ String oc2Name = ( ( NonExistingObjectClass ) o2 ).getName();
+
+ if ( ( oc1Name != null ) && ( oc2Name != null ) )
+ {
+ return oc1Name.compareToIgnoreCase( oc2Name );
+ }
+ }
+
+ return 0;
+ }
+ } );
+
+ return results.toArray();
+ }
+
+ // Default
+ return null;
+ }
+
+
+ /*
+ * (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 )
+ {
+ }
+}
Propchange: directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/editors/objectclass/ObjectClassEditorSuperiorsTableContentProvider.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/editors/objectclass/ObjectClassEditorSuperiorsTableLabelProvider.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/editors/objectclass/ObjectClassEditorSuperiorsTableLabelProvider.java?rev=592094&view=auto
==============================================================================
--- directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/editors/objectclass/ObjectClassEditorSuperiorsTableLabelProvider.java (added)
+++ directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/editors/objectclass/ObjectClassEditorSuperiorsTableLabelProvider.java Mon Nov 5 09:14:24 2007
@@ -0,0 +1,86 @@
+/*
+ * 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.editors.objectclass;
+
+
+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.editors.NonExistingObjectClass;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+
+/**
+ * This class is the Label Provider for the Superiors Table of the Object Class Editor.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class ObjectClassEditorSuperiorsTableLabelProvider extends LabelProvider implements ITableLabelProvider
+{
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object, int)
+ */
+ public Image getColumnImage( Object element, int columnIndex )
+ {
+ if ( ( element instanceof ObjectClassImpl ) || ( element instanceof NonExistingObjectClass ) )
+ {
+ return AbstractUIPlugin.imageDescriptorFromPlugin( Activator.PLUGIN_ID, PluginConstants.IMG_OBJECT_CLASS )
+ .createImage();
+ }
+
+ // Default
+ return null;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int)
+ */
+ public String getColumnText( Object element, int columnIndex )
+ {
+ 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() + ")";
+ }
+ }
+ else if ( element instanceof NonExistingObjectClass )
+ {
+ return ( ( NonExistingObjectClass ) element ).getDisplayName();
+ }
+
+ // Default
+ return null;
+ }
+}
Propchange: directory/sandbox/felixk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/editors/objectclass/ObjectClassEditorSuperiorsTableLabelProvider.java
------------------------------------------------------------------------------
svn:eol-style = native