You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by pa...@apache.org on 2006/11/16 17:05:29 UTC
svn commit: r475786 [11/13] - in
/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin: ./
META-INF/ icons/ ressources/ ressources/help/ ressources/help/html/
ressources/help/html/concepts/ ressources/help/html/concepts/images/
ressources/...
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/HierarchicalViewer.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/HierarchicalViewer.java?view=auto&rev=475786
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/HierarchicalViewer.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/HierarchicalViewer.java Thu Nov 16 08:05:20 2006
@@ -0,0 +1,145 @@
+/*
+ * 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.ldapstudio.schemas.view.viewers;
+
+
+import java.util.Comparator;
+
+import org.apache.directory.ldapstudio.schemas.controller.Application;
+import org.apache.directory.ldapstudio.schemas.controller.HierarchicalViewerController;
+import org.apache.directory.ldapstudio.schemas.controller.actions.SortHierarchicalViewAction;
+import org.apache.directory.ldapstudio.schemas.model.LDAPModelEvent;
+import org.apache.directory.ldapstudio.schemas.model.PoolListener;
+import org.apache.directory.ldapstudio.schemas.model.SchemaPool;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.part.ViewPart;
+
+
+public class HierarchicalViewer extends ViewPart implements PoolListener
+{
+ public static final String ID = Application.PLUGIN_ID + ".view.HierarchicalViewer"; //$NON-NLS-1$
+ private TreeViewer viewer;
+ private Composite parent;
+ private HierarchicalContentProvider contentProvider;
+
+
+ /**
+ * @return the internal tree viewer
+ */
+ public TreeViewer getViewer()
+ {
+ return viewer;
+ }
+
+
+ /******************************************
+ * Interfaces Implementation *
+ ******************************************/
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
+ */
+ public void createPartControl( Composite parent )
+ {
+ this.parent = parent;
+ initViewer();
+ IToolBarManager toolbar = getViewSite().getActionBars().getToolBarManager();
+ toolbar.add( new SortHierarchicalViewAction( PlatformUI.getWorkbench().getActiveWorkbenchWindow(),
+ SortHierarchicalViewAction.SortType.alphabetical, Messages
+ .getString( "HierarchicalViewer.Sort_alphabetically" ) ) ); //$NON-NLS-1$
+ toolbar.add( new SortHierarchicalViewAction( PlatformUI.getWorkbench().getActiveWorkbenchWindow(),
+ SortHierarchicalViewAction.SortType.unalphabetical, Messages
+ .getString( "HierarchicalViewer.Sort_unalphabetically" ) ) ); //$NON-NLS-1$
+ }
+
+
+ private void initViewer()
+ {
+ SchemaPool pool = SchemaPool.getInstance();
+ //we want to be notified if the pool has been modified
+ pool.addListener( this );
+
+ viewer = new TreeViewer( parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER );
+ contentProvider = new HierarchicalContentProvider( pool );
+ contentProvider.bindToTreeViewer( viewer );
+ viewer.addDoubleClickListener( HierarchicalViewerController.getInstance() );
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.part.WorkbenchPart#setFocus()
+ */
+ public void setFocus()
+ {
+ viewer.getControl().setFocus();
+ }
+
+
+ /******************************************
+ * Logic *
+ ******************************************/
+
+ /**
+ * Refresh the entire view
+ */
+ public void refresh()
+ {
+ //it seems there is a bug with the default element expanding system
+ Object[] exp = viewer.getExpandedElements();
+
+ //refresh the tree viewer
+ viewer.refresh();
+
+ //expand all the previsouly expanded elements
+ for ( Object object : exp )
+ {
+ viewer.setExpandedState( object, true );
+ }
+ }
+
+
+ /**
+ * Specify the comparator that will be used to sort the elements in that viewer
+ * @param order the comparator
+ */
+ public void setOrder( Comparator order )
+ {
+ contentProvider.setOrder( order );
+ refresh();
+ }
+
+
+ /******************************************
+ * Pool Listener Impl *
+ ******************************************/
+
+ /**
+ * refresh the view if the pool has been modified
+ */
+ public void poolChanged( SchemaPool p, LDAPModelEvent e )
+ {
+ refresh();
+ }
+}
\ No newline at end of file
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/Messages.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/Messages.java?view=auto&rev=475786
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/Messages.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/Messages.java Thu Nov 16 08:05:20 2006
@@ -0,0 +1,51 @@
+/*
+ * 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.ldapstudio.schemas.view.viewers;
+
+
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+
+public class Messages
+{
+ private static final String BUNDLE_NAME = "org.apache.directory.ldapstudio.schemas.view.viewers.messages"; //$NON-NLS-1$
+
+ private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle( BUNDLE_NAME );
+
+
+ private Messages()
+ {
+ }
+
+
+ public static String getString( String key )
+ {
+ try
+ {
+ return RESOURCE_BUNDLE.getString( key );
+ }
+ catch ( MissingResourceException e )
+ {
+ return '!' + key + '!';
+ }
+ }
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/PoolManager.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/PoolManager.java?view=auto&rev=475786
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/PoolManager.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/PoolManager.java Thu Nov 16 08:05:20 2006
@@ -0,0 +1,273 @@
+/*
+ * 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.ldapstudio.schemas.view.viewers;
+
+
+import java.util.Comparator;
+
+import org.apache.directory.ldapstudio.schemas.controller.Application;
+import org.apache.directory.ldapstudio.schemas.controller.PoolManagerController;
+import org.apache.directory.ldapstudio.schemas.controller.actions.CreateANewAttributeTypeAction;
+import org.apache.directory.ldapstudio.schemas.controller.actions.CreateANewObjectClassAction;
+import org.apache.directory.ldapstudio.schemas.controller.actions.CreateANewSchemaAction;
+import org.apache.directory.ldapstudio.schemas.controller.actions.DeleteAction;
+import org.apache.directory.ldapstudio.schemas.controller.actions.OpenLocalFileAction;
+import org.apache.directory.ldapstudio.schemas.controller.actions.RemoveSchemaAction;
+import org.apache.directory.ldapstudio.schemas.controller.actions.SortPoolManagerAction;
+import org.apache.directory.ldapstudio.schemas.model.LDAPModelEvent;
+import org.apache.directory.ldapstudio.schemas.model.PoolListener;
+import org.apache.directory.ldapstudio.schemas.model.Schema;
+import org.apache.directory.ldapstudio.schemas.model.SchemaPool;
+import org.apache.log4j.Logger;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.DropTarget;
+import org.eclipse.swt.dnd.FileTransfer;
+import org.eclipse.swt.dnd.Transfer;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.ISaveablePart2;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.part.ViewPart;
+
+
+public class PoolManager extends ViewPart implements PoolListener, ISaveablePart2
+{
+ public static final String ID = Application.PLUGIN_ID + ".view.PoolManager"; //$NON-NLS-1$
+
+ private static Logger logger = Logger.getLogger( PoolManager.class );
+ private TreeViewer viewer;
+ private Composite parent;
+ private PoolManagerContentProvider contentProvider;
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
+ */
+ @Override
+ public void createPartControl( Composite parent )
+ {
+ this.parent = parent;
+ initViewer();
+ IToolBarManager toolbar = getViewSite().getActionBars().getToolBarManager();
+ toolbar.add( new OpenLocalFileAction() );
+ toolbar.add( new CreateANewSchemaAction() );
+ toolbar.add( new RemoveSchemaAction() );
+ toolbar.add( new Separator() );
+ toolbar.add( new CreateANewObjectClassAction() );
+ toolbar.add( new CreateANewAttributeTypeAction() );
+ toolbar.add( new DeleteAction() );
+ toolbar.add( new Separator() );
+ toolbar.add( new SortPoolManagerAction( PlatformUI.getWorkbench().getActiveWorkbenchWindow(),
+ SortPoolManagerAction.SortType.alphabetical, Messages.getString( "PoolManager.Sort_alphabetically" ) ) ); //$NON-NLS-1$
+ toolbar.add( new SortPoolManagerAction( PlatformUI.getWorkbench().getActiveWorkbenchWindow(),
+ SortPoolManagerAction.SortType.unalphabetical, Messages.getString( "PoolManager.Sort_unalphabetically" ) ) ); //$NON-NLS-1$
+
+ // ContextMenu Creation
+ createContextMenu();
+ }
+
+
+ private MenuManager createContextMenu()
+ {
+ MenuManager menu = new MenuManager( "" ); //$NON-NLS-1$
+ menu.setRemoveAllWhenShown( true );
+ //contextual-menu handling via the singleton controller instance
+ menu.addMenuListener( PoolManagerController.getInstance() );
+ // set the context menu to the table viewer
+ viewer.getControl().setMenu( menu.createContextMenu( viewer.getControl() ) );
+ // register the context menu to enable extension actions
+ getSite().registerContextMenu( menu, viewer );
+ return menu;
+ }
+
+
+ private void initViewer()
+ {
+ SchemaPool pool = SchemaPool.getInstance();
+ //we want to be notified if the pool has been modified
+ pool.addListener( this );
+
+ viewer = new TreeViewer( parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER );
+ contentProvider = new PoolManagerContentProvider();
+ contentProvider.bindToTreeViewer( viewer );
+
+ //double-click handling via the singleton controller instance
+ viewer.addDoubleClickListener( PoolManagerController.getInstance() );
+
+ //drag&drop handling via the singleton controller instance
+ int operations = DND.DROP_COPY;
+ DropTarget target = new DropTarget( viewer.getControl(), operations );
+ //we only support file dropping on the viewer
+ Transfer[] types = new Transfer[]
+ { FileTransfer.getInstance() };
+ target.setTransfer( types );
+ target.addDropListener( PoolManagerController.getInstance() );
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.part.WorkbenchPart#setFocus()
+ */
+ @Override
+ public void setFocus()
+ {
+ viewer.getControl().setFocus();
+ }
+
+
+ /******************************************
+ * Logic *
+ ******************************************/
+
+ /**
+ * Refresh the entire view
+ */
+ public void refresh()
+ {
+ //it seems there is a bug with the default element expanding system
+ Object[] exp = viewer.getExpandedElements();
+
+ //refresh the tree viewer
+ viewer.refresh();
+
+ //expand all the previsouly expanded elements
+ for ( Object object : exp )
+ {
+ viewer.setExpandedState( object, true );
+ }
+ }
+
+
+ /**
+ * Specify the comparator that will be used to sort the elements in that viewer
+ * @param order the comparator
+ */
+ public void setOrder( Comparator order )
+ {
+ contentProvider.setOrder( order );
+ refresh();
+ }
+
+
+ /******************************************
+ * Pool Listener Impl *
+ ******************************************/
+
+ /**
+ * We refresh the view only if the pool has been modified
+ */
+ public void poolChanged( SchemaPool p, LDAPModelEvent e )
+ {
+ //refresh the tree viewer
+ viewer.refresh();
+ }
+
+
+ /**
+ * @return the internal tree viewer
+ */
+ public TreeViewer getViewer()
+ {
+ return viewer;
+ }
+
+
+ public int promptToSaveOnClose()
+ {
+ // TODO Auto-generated method stub
+ return ISaveablePart2.YES;
+ }
+
+
+ public void doSave( IProgressMonitor monitor )
+ {
+ // save schemas on disk
+ try
+ {
+ SchemaPool.getInstance().saveAll( true );
+ }
+ catch ( Exception e )
+ {
+ logger.debug( "error when saving schemas on disk after asking for confirmation" ); //$NON-NLS-1$
+ }
+ //
+ // IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+ // IEditorPart[] editors = page.getDirtyEditors();
+ // for (IEditorPart part : editors) {
+ // if(part instanceof AttributeTypeFormEditor) {
+ // AttributeTypeFormEditor editor = (AttributeTypeFormEditor) part;
+ // editor.setDirty(false);
+ // }
+ // else if (part instanceof ObjectClassFormEditor) {
+ // ObjectClassFormEditor editor = (ObjectClassFormEditor) part;
+ // editor.setDirty(false);
+ // }
+ // }
+
+ }
+
+
+ public void doSaveAs()
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+
+ public boolean isDirty()
+ {
+ // TODO Auto-generated method stub
+ Schema[] schemas = SchemaPool.getInstance().getSchemas();
+ for ( int i = 0; i < schemas.length; i++ )
+ {
+ Schema schema = schemas[i];
+ if ( schema.type == Schema.SchemaType.userSchema )
+ {
+ if ( schema.hasBeenModified() || schema.hasPendingModification() )
+ {
+ return true;
+ }
+ }
+ }
+ // Default value
+ return false;
+ }
+
+
+ public boolean isSaveAsAllowed()
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+
+ public boolean isSaveOnCloseNeeded()
+ {
+ // TODO Auto-generated method stub
+ return true;
+ }
+
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/PoolManagerContentProvider.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/PoolManagerContentProvider.java?view=auto&rev=475786
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/PoolManagerContentProvider.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/PoolManagerContentProvider.java Thu Nov 16 08:05:20 2006
@@ -0,0 +1,220 @@
+/*
+ * 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.ldapstudio.schemas.view.viewers;
+
+
+import java.util.Comparator;
+
+import org.apache.directory.ldapstudio.schemas.model.AttributeType;
+import org.apache.directory.ldapstudio.schemas.model.ObjectClass;
+import org.apache.directory.ldapstudio.schemas.model.Schema;
+import org.apache.directory.ldapstudio.schemas.model.SchemaPool;
+import org.apache.directory.ldapstudio.schemas.view.viewers.wrappers.AlphabeticalOrderComparator;
+import org.apache.directory.ldapstudio.schemas.view.viewers.wrappers.IntermediateNode;
+import org.apache.directory.ldapstudio.schemas.view.viewers.wrappers.PoolManagerAttributeTypeWrapper;
+import org.apache.directory.ldapstudio.schemas.view.viewers.wrappers.PoolManagerObjectClassWrapper;
+import org.apache.directory.ldapstudio.schemas.view.viewers.wrappers.SchemaWrapper;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+
+
+/**
+ * Content provider for the schema-pool manager
+ *
+ */
+public class PoolManagerContentProvider implements SortableContentProvider, IStructuredContentProvider,
+ ITreeContentProvider
+{
+
+ private SchemaPool pool;
+ private Comparator order = new AlphabeticalOrderComparator();
+
+
+ /**
+ * Default constructor
+ */
+ public PoolManagerContentProvider()
+ {
+ pool = SchemaPool.getInstance();
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
+ */
+ public Object[] getElements( Object inputElement )
+ {
+ return getChildren( inputElement );
+ }
+
+
+ /* (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 )
+ {
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
+ */
+ public Object[] getChildren( Object parentElement )
+ {
+ if ( parentElement instanceof IntermediateNode )
+ {
+ IntermediateNode intermediate = ( IntermediateNode ) parentElement;
+
+ if ( intermediate.getName().equals( "**Primary Node**" ) ) { //$NON-NLS-1$
+ // clear the primary node (because it's always the same instance we need to
+ //refresh it manually)
+ intermediate.clearChildrens();
+
+ Schema[] schemas = this.pool.getSchemas();
+ for ( int i = 0; i < schemas.length; i++ )
+ {
+ Schema schema = schemas[i];
+ SchemaWrapper schemaWrapper = new SchemaWrapper( schema, ( IntermediateNode ) parentElement );
+ intermediate.addElement( schemaWrapper );
+ }
+ }
+
+ Object[] temp = intermediate.getChildren();
+ return temp;
+ }
+
+ else if ( parentElement instanceof SchemaWrapper )
+ {
+ //we are looking for the childrens of the contained objectClass
+ Schema schema = ( Schema ) ( ( ( SchemaWrapper ) parentElement ).getMySchema() );
+
+ IntermediateNode attributeTypes = new IntermediateNode(
+ "Attribute Types", ( SchemaWrapper ) parentElement, this ); //$NON-NLS-1$
+ IntermediateNode objectClasses = new IntermediateNode(
+ "Object Classes", ( SchemaWrapper ) parentElement, this ); //$NON-NLS-1$
+
+ // Let's get all Attribute Types defined in the schema
+ AttributeType[] attributeTypeList = schema.getAttributeTypesAsArray();
+ for ( int i = 0; i < attributeTypeList.length; i++ )
+ {
+ AttributeType attributeType = attributeTypeList[i];
+ attributeTypes.addElement( new PoolManagerAttributeTypeWrapper( attributeType, attributeTypes ) );
+ }
+
+ // Let's get all Object Classes defined in the schema
+ ObjectClass[] objectClassList = schema.getObjectClassesAsArray();
+ for ( int i = 0; i < objectClassList.length; i++ )
+ {
+ ObjectClass objectClass = objectClassList[i];
+ objectClasses.addElement( new PoolManagerObjectClassWrapper( objectClass, objectClasses ) );
+ }
+
+ return new Object[]
+ { attributeTypes, objectClasses };
+ }
+
+ return new Object[0];
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
+ */
+ public Object getParent( Object element )
+ {
+ if ( element instanceof SchemaWrapper )
+ {
+ return ( ( SchemaWrapper ) element ).getParent();
+ }
+ else if ( element instanceof IntermediateNode )
+ {
+ return ( ( IntermediateNode ) element ).getParent();
+ }
+ return null;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
+ */
+ public boolean hasChildren( Object element )
+ {
+ if ( element instanceof IntermediateNode )
+ {
+ if ( ( ( IntermediateNode ) element ).getChildren().length > 0 )
+ return true;
+ }
+ else if ( element instanceof SchemaWrapper )
+ {
+ return true;
+ }
+ return false;
+ }
+
+
+ /******************************************
+ * Logic *
+ ******************************************/
+
+ /**
+ * Specify the comparator that will be used to sort the elements in the view
+ * @param order the comparator
+ */
+ public void setOrder( Comparator order )
+ {
+ this.order = order;
+ }
+
+
+ /**
+ * Returns the comparator used to sort the elements in the view
+ * @return
+ */
+ public Comparator getOrder()
+ {
+ return order;
+ }
+
+
+ /**
+ * Initialize a tree viewer to display the information provided by the specified content
+ * provider
+ * @param viewer the tree viewer
+ */
+ public void bindToTreeViewer( TreeViewer viewer )
+ {
+ viewer.setContentProvider( this );
+ viewer.setLabelProvider( new HierarchicalLabelProvider() );
+
+ IntermediateNode invisibleNode = new IntermediateNode( "**Primary Node**", null, this ); //$NON-NLS-1$
+ viewer.setInput( invisibleNode );
+ }
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/PoolManagerLabelProvider.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/PoolManagerLabelProvider.java?view=auto&rev=475786
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/PoolManagerLabelProvider.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/PoolManagerLabelProvider.java Thu Nov 16 08:05:20 2006
@@ -0,0 +1,63 @@
+/*
+ * 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.ldapstudio.schemas.view.viewers;
+
+
+import org.apache.directory.ldapstudio.schemas.view.viewers.wrappers.DisplayableTreeElement;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
+
+
+/**
+ * Label provider for the schema-pool manager
+ *
+ */
+public class PoolManagerLabelProvider extends LabelProvider
+{
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.LabelProvider#getText(java.lang.Object)
+ */
+ public String getText( Object obj )
+ {
+ if ( obj instanceof DisplayableTreeElement )
+ return ( ( DisplayableTreeElement ) obj ).getDisplayName();
+
+ //default
+ return obj.toString();
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.LabelProvider#getImage(java.lang.Object)
+ */
+ public Image getImage( Object obj )
+ {
+ if ( obj instanceof DisplayableTreeElement )
+ return ( ( DisplayableTreeElement ) obj ).getDisplayImage();
+
+ //default
+ return PlatformUI.getWorkbench().getSharedImages().getImage( ISharedImages.IMG_OBJS_WARN_TSK );
+
+ }
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/SearchContentProvider.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/SearchContentProvider.java?view=auto&rev=475786
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/SearchContentProvider.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/SearchContentProvider.java Thu Nov 16 08:05:20 2006
@@ -0,0 +1,198 @@
+/*
+ * 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.ldapstudio.schemas.view.viewers;
+
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Hashtable;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.apache.directory.ldapstudio.schemas.model.AttributeType;
+import org.apache.directory.ldapstudio.schemas.model.LDAPModelEvent;
+import org.apache.directory.ldapstudio.schemas.model.ObjectClass;
+import org.apache.directory.ldapstudio.schemas.model.PoolListener;
+import org.apache.directory.ldapstudio.schemas.model.SchemaElement;
+import org.apache.directory.ldapstudio.schemas.model.SchemaPool;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.ui.PlatformUI;
+
+
+/**
+ * Content provider for the search view
+ *
+ */
+public class SearchContentProvider implements IStructuredContentProvider, PoolListener
+{
+ private SchemaPool schemaPool;
+ private Hashtable<String, ObjectClass> objectClassTable;
+ private Hashtable<String, AttributeType> attributeTypeTable;
+
+
+ /**
+ * Default constructor
+ */
+ public SearchContentProvider()
+ {
+ this.schemaPool = SchemaPool.getInstance();
+ schemaPool.addListener( this );
+
+ objectClassTable = schemaPool.getObjectClassesAsHashTableByName();
+
+ attributeTypeTable = schemaPool.getAttributeTypesAsHashTableByName();
+ }
+
+
+ /**
+ * returns the matched elements as an array of objects
+ */
+ @SuppressWarnings("unchecked")//$NON-NLS-1$
+ public Object[] getElements( Object parent )
+ {
+ if ( parent instanceof String )
+ {
+ String searchText = ( String ) parent;
+
+ //reset the view title
+ SearchViewer view = ( SearchViewer ) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
+ .findView( SearchViewer.ID );
+ view.setPartName( Messages.getString( "SearchContentProvider.Search" ) ); //$NON-NLS-1$
+
+ if ( searchText.length() > 0 )
+ {
+ String searchRegexp = searchText + ".*"; //$NON-NLS-1$
+ Pattern pattern = Pattern.compile( searchRegexp, Pattern.CASE_INSENSITIVE );
+ ArrayList resultsList = new ArrayList();
+
+ Collection<ObjectClass> OCs = objectClassTable.values();
+ Collection<AttributeType> ATs = attributeTypeTable.values();
+
+ ArrayList<SchemaElement> allList = new ArrayList<SchemaElement>();
+ allList.addAll( OCs );
+ allList.addAll( ATs );
+
+ //search for all matching elements
+ for ( SchemaElement element : allList )
+ {
+
+ if ( SearchViewer.searchType.equals( SearchViewer.SEARCH_NAME )
+ || SearchViewer.searchType.equals( SearchViewer.SEARCH_ALL ) )
+ {
+ String[] names = element.getNames();
+ for ( String name : names )
+ {
+ Matcher m = pattern.matcher( name );
+ if ( m.matches() )
+ {
+ if ( !resultsList.contains( element ) )
+ {
+ resultsList.add( element );
+ }
+ break;
+ }
+ }
+ }
+
+ if ( SearchViewer.searchType.equals( SearchViewer.SEARCH_OID )
+ || SearchViewer.searchType.equals( SearchViewer.SEARCH_ALL ) )
+ {
+ String oid = element.getOid();
+ Matcher m = pattern.matcher( oid );
+ if ( m.matches() )
+ {
+ if ( !resultsList.contains( element ) )
+ {
+ resultsList.add( element );
+ }
+
+ }
+ }
+
+ if ( SearchViewer.searchType.equals( SearchViewer.SEARCH_DESC )
+ || SearchViewer.searchType.equals( SearchViewer.SEARCH_ALL ) )
+ {
+ String desc = element.getDescription();
+ if ( desc == null )
+ continue;
+ Matcher m = pattern.matcher( desc );
+ if ( m.matches() )
+ {
+ if ( !resultsList.contains( element ) )
+ {
+ resultsList.add( element );
+ }
+ }
+ }
+ }
+
+ //change the number of results in the view
+ view
+ .setPartName( Messages.getString( "SearchContentProvider.Search_(" ) + resultsList.size() + Messages.getString( "SearchContentProvider.Results)" ) ); //$NON-NLS-1$ //$NON-NLS-2$
+
+ //returns the result list
+ return resultsList.toArray();
+ }
+ }
+
+ return new Object[0];
+ }
+
+
+ /* (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 )
+ {
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.IContentProvider#dispose()
+ */
+ public void dispose()
+ {
+ schemaPool.removeListener( this );
+ }
+
+
+ /**
+ * Pool listener method
+ */
+ public void poolChanged( SchemaPool p, LDAPModelEvent e )
+ {
+ refresh();
+ }
+
+
+ /**
+ * Refresh the content of the provider
+ * (you can trigger it manually or it will be called when the pool has changed)
+ */
+ public void refresh()
+ {
+ objectClassTable = schemaPool.getObjectClassesAsHashTableByName();
+
+ attributeTypeTable = schemaPool.getAttributeTypesAsHashTableByName();
+ }
+
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/SearchLabelProvider.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/SearchLabelProvider.java?view=auto&rev=475786
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/SearchLabelProvider.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/SearchLabelProvider.java Thu Nov 16 08:05:20 2006
@@ -0,0 +1,92 @@
+/*
+ * 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.ldapstudio.schemas.view.viewers;
+
+
+import org.apache.directory.ldapstudio.schemas.controller.Application;
+import org.apache.directory.ldapstudio.schemas.model.AttributeType;
+import org.apache.directory.ldapstudio.schemas.model.ObjectClass;
+import org.apache.directory.ldapstudio.schemas.model.SchemaElement;
+import org.apache.directory.ldapstudio.schemas.view.IImageKeys;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+
+/**
+ * Label provider for the search view
+ *
+ */
+public class SearchLabelProvider 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 ( columnIndex == 0 )
+ {
+ if ( element instanceof ObjectClass )
+ {
+ return AbstractUIPlugin.imageDescriptorFromPlugin( Application.PLUGIN_ID, IImageKeys.OBJECT_CLASS )
+ .createImage();
+ }
+
+ if ( element instanceof AttributeType )
+ {
+ return AbstractUIPlugin.imageDescriptorFromPlugin( Application.PLUGIN_ID, IImageKeys.ATTRIBUTE_TYPE )
+ .createImage();
+ }
+ }
+
+ return null;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int)
+ */
+ public String getColumnText( Object element, int columnIndex )
+ {
+ String result = ""; //$NON-NLS-1$
+ if ( element instanceof SchemaElement )
+ {
+ SchemaElement schemaElement = ( SchemaElement ) element;
+ switch ( columnIndex )
+ {
+ case 0: // COMPLETED_COLUMN
+ break;
+ case 1:
+ result = schemaElement.getNames()[0];
+ break;
+ case 2:
+ result = schemaElement.getOriginatingSchema().getName();
+ break;
+ default:
+ break;
+ }
+ }
+ return result;
+ }
+
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/SearchViewer.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/SearchViewer.java?view=auto&rev=475786
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/SearchViewer.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/SearchViewer.java Thu Nov 16 08:05:20 2006
@@ -0,0 +1,307 @@
+/*
+ * 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.ldapstudio.schemas.view.viewers;
+
+
+import org.apache.directory.ldapstudio.schemas.controller.Application;
+import org.apache.directory.ldapstudio.schemas.controller.PoolManagerController;
+import org.apache.directory.ldapstudio.schemas.model.AttributeType;
+import org.apache.directory.ldapstudio.schemas.model.LDAPModelEvent;
+import org.apache.directory.ldapstudio.schemas.model.ObjectClass;
+import org.apache.directory.ldapstudio.schemas.model.PoolListener;
+import org.apache.directory.ldapstudio.schemas.model.SchemaPool;
+import org.apache.directory.ldapstudio.schemas.view.editors.AttributeTypeFormEditor;
+import org.apache.directory.ldapstudio.schemas.view.editors.AttributeTypeFormEditorInput;
+import org.apache.directory.ldapstudio.schemas.view.editors.ObjectClassFormEditor;
+import org.apache.directory.ldapstudio.schemas.view.editors.ObjectClassFormEditorInput;
+import org.apache.log4j.Logger;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+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.SelectionListener;
+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.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.part.ViewPart;
+
+
+/**
+ * This is the main class for the LDAP Studio Search Tool.
+ *
+ */
+public class SearchViewer extends ViewPart implements PoolListener
+{
+ public static final String ID = Application.PLUGIN_ID + ".view.SearchViewer"; //$NON-NLS-1$
+ private SchemaPool pool;
+ private Composite top;
+ private Table table;
+ private TableViewer tableViewer;
+ private Text searchField;
+ private Combo typeCombo;
+ private SearchContentProvider searchContentProvider;
+
+ //Set the table column property names
+ private final String TYPE_COLUMN = Messages.getString( "SearchViewer.Type_Column" ); //$NON-NLS-1$
+ private final String NAME_COLUMN = Messages.getString( "SearchViewer.Name_Column" ); //$NON-NLS-1$
+ private final String SCHEMA_COLUMN = Messages.getString( "SearchViewer.Schema_Column" ); //$NON-NLS-1$
+
+ // Set column names
+ private String[] columnNames = new String[]
+ { TYPE_COLUMN, NAME_COLUMN, SCHEMA_COLUMN, };
+
+ //search types
+ public static final String SEARCH_ALL = Messages.getString( "SearchViewer.Search_All_metadata" ); //$NON-NLS-1$
+ public static final String SEARCH_NAME = Messages.getString( "SearchViewer.Search_Name" ); //$NON-NLS-1$
+ public static final String SEARCH_OID = Messages.getString( "SearchViewer.Search_OID" ); //$NON-NLS-1$
+ public static final String SEARCH_DESC = Messages.getString( "SearchViewer.Search_Description" ); //$NON-NLS-1$
+
+ //current search type
+ public static String searchType = SEARCH_ALL;
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
+ */
+ @Override
+ public void createPartControl( Composite parent )
+ {
+ this.pool = SchemaPool.getInstance();
+ //we want to be notified if the pool has been modified
+ pool.addListener( this );
+
+ //top container
+ this.top = new Composite( parent, SWT.NONE );
+
+ GridLayout layout = new GridLayout();
+ layout.marginWidth = 0;
+ layout.marginHeight = 0;
+ layout.numColumns = 2;
+ layout.horizontalSpacing = 0;
+ layout.verticalSpacing = 0;
+ top.setLayout( layout );
+
+ //search field
+ searchField = new Text( top, SWT.BORDER );
+ GridData gridData = new GridData( GridData.FILL, 0, true, false );
+ gridData.heightHint = searchField.getLineHeight();
+ gridData.verticalAlignment = SWT.CENTER;
+ searchField.setLayoutData( gridData );
+ searchField.addModifyListener( new ModifyListener()
+ {
+
+ public void modifyText( ModifyEvent e )
+ {
+ tableViewer.setInput( searchField.getText() );
+ }
+
+ } );
+
+ //search type combo
+ typeCombo = new Combo( top, SWT.READ_ONLY | SWT.SINGLE );
+
+ gridData = new GridData( SWT.FILL, 0, false, false );
+ gridData.verticalAlignment = SWT.CENTER;
+ typeCombo.setLayoutData( gridData );
+ typeCombo.addSelectionListener( new SelectionListener()
+ {
+ public void widgetDefaultSelected( SelectionEvent e )
+ {
+ }
+
+
+ public void widgetSelected( SelectionEvent e )
+ {
+ searchType = typeCombo.getItem( typeCombo.getSelectionIndex() );
+ tableViewer.refresh();
+ }
+ } );
+ typeCombo.add( SEARCH_ALL, 0 );
+ typeCombo.add( SEARCH_NAME, 1 );
+ typeCombo.add( SEARCH_OID, 2 );
+ typeCombo.add( SEARCH_DESC, 3 );
+ typeCombo.select( 0 );
+
+ // Create the table
+ createTable( top );
+ createTableViewer();
+ this.searchContentProvider = new SearchContentProvider();
+ tableViewer.setContentProvider( searchContentProvider );
+ tableViewer.setLabelProvider( new SearchLabelProvider() );
+ }
+
+
+ /**
+ * Creates the Table
+ */
+ private void createTable( Composite parent )
+ {
+ int style = SWT.SINGLE | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.HIDE_SELECTION;
+
+ table = new Table( parent, style );
+
+ GridData gridData = new GridData( GridData.FILL, GridData.FILL, true, true, 2, 1 );
+ //gridData.horizontalSpan = 3;
+ table.setLayoutData( gridData );
+
+ table.setLinesVisible( false );
+ table.setHeaderVisible( true );
+
+ // 1st column with image - NOTE: The SWT.CENTER has no effect!!
+ TableColumn column = new TableColumn( table, SWT.CENTER, 0 );
+ column.setText( columnNames[0] );
+ column.setWidth( 40 );
+
+ // 2nd column with name
+ column = new TableColumn( table, SWT.LEFT, 1 );
+ column.setText( columnNames[1] );
+ column.setWidth( 400 );
+ // Add listener to column so tasks are sorted by name
+ column.addSelectionListener( new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ //tableViewer.setSorter(new ExampleTaskSorter(ExampleTaskSorter.DESCRIPTION));
+ }
+ } );
+
+ //3rd column with element defining schema
+ column = new TableColumn( table, SWT.LEFT, 2 );
+ column.setText( columnNames[2] );
+ column.setWidth( 100 );
+ // Add listener to column so tasks are sorted by schema
+ column.addSelectionListener( new SelectionAdapter()
+ {
+
+ public void widgetSelected( SelectionEvent e )
+ {
+ //tableViewer.setSorter(new ExampleTaskSorter(ExampleTaskSorter.OWNER));
+ }
+ } );
+ table.addMouseListener( new MouseListener()
+ {
+ public void mouseDoubleClick( MouseEvent e )
+ {
+ IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+ // Getting the source Table of the double click
+ Table sourceTable = ( Table ) e.getSource();
+
+ IEditorInput input = null;
+ String editorId = null;
+
+ // Here is the double clicked item
+ Object item = sourceTable.getSelection()[0].getData();
+ if ( item instanceof AttributeType )
+ {
+ input = new AttributeTypeFormEditorInput( ( AttributeType ) item );
+ editorId = AttributeTypeFormEditor.ID;
+ }
+ else if ( item instanceof ObjectClass )
+ {
+ input = new ObjectClassFormEditorInput( ( ObjectClass ) item );
+ editorId = ObjectClassFormEditor.ID;
+ }
+
+ // Let's open the editor
+ if ( input != null )
+ {
+ try
+ {
+ page.openEditor( input, editorId );
+ }
+ catch ( PartInitException exception )
+ {
+ Logger.getLogger( PoolManagerController.class ).debug( "error when opening the editor" ); //$NON-NLS-1$
+ }
+ }
+ }
+
+
+ public void mouseDown( MouseEvent e )
+ {
+ }
+
+
+ public void mouseUp( MouseEvent e )
+ {
+ }
+ } );
+ }
+
+
+ /**
+ * Creates the TableViewer
+ */
+ private void createTableViewer()
+ {
+
+ tableViewer = new TableViewer( table );
+ tableViewer.setUseHashlookup( true );
+
+ tableViewer.setColumnProperties( columnNames );
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.part.WorkbenchPart#setFocus()
+ */
+ @Override
+ public void setFocus()
+ {
+ if ( searchField != null && !searchField.isDisposed() )
+ {
+ searchField.setFocus();
+ }
+
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.safhaus.ldapstudio.model.PoolListener#poolChanged(org.safhaus.ldapstudio.model.SchemaPool, org.safhaus.ldapstudio.model.LDAPModelEvent)
+ */
+ public void poolChanged( SchemaPool p, LDAPModelEvent e )
+ {
+ searchContentProvider.refresh();
+ tableViewer.refresh();
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.part.ViewPart#setPartName(java.lang.String)
+ */
+ public void setPartName( String partName )
+ {
+ super.setPartName( partName );
+ }
+
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/SortableContentProvider.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/SortableContentProvider.java?view=auto&rev=475786
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/SortableContentProvider.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/SortableContentProvider.java Thu Nov 16 08:05:20 2006
@@ -0,0 +1,55 @@
+/*
+ * 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.ldapstudio.schemas.view.viewers;
+
+
+import java.util.Comparator;
+
+import org.eclipse.jface.viewers.TreeViewer;
+
+
+/**
+ * Common interface for sortable content providers
+ *
+ */
+public interface SortableContentProvider
+{
+ /**
+ * Specify the comparator that will be used to sort the elements in the view
+ * @param order the comparator
+ */
+ public void setOrder( Comparator order );
+
+
+ /**
+ * Returns the comparator used to sort the elements in the view
+ * @return
+ */
+ public Comparator getOrder();
+
+
+ /**
+ * Initialize a tree viewer to display the information provided by the specified content
+ * provider
+ * @param viewer the tree viewer
+ */
+ public void bindToTreeViewer( TreeViewer viewer );
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/wrappers/AlphabeticalOrderComparator.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/wrappers/AlphabeticalOrderComparator.java?view=auto&rev=475786
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/wrappers/AlphabeticalOrderComparator.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/wrappers/AlphabeticalOrderComparator.java Thu Nov 16 08:05:20 2006
@@ -0,0 +1,44 @@
+/*
+ * 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.ldapstudio.schemas.view.viewers.wrappers;
+
+
+import java.util.Comparator;
+
+
+/**
+ * This class is used to compare in alphabetical order two DisplayableTreeElement
+ */
+public class AlphabeticalOrderComparator implements Comparator
+{
+ /* (non-Javadoc)
+ * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
+ */
+ public int compare( Object o1, Object o2 )
+ {
+ DisplayableTreeElement one = ( DisplayableTreeElement ) o1;
+ DisplayableTreeElement two = ( DisplayableTreeElement ) o2;
+
+ String oneName = one.getDisplayName();
+ String twoName = two.getDisplayName();
+ return oneName.compareTo( twoName );
+ }
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/wrappers/AttributeTypeWrapper.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/wrappers/AttributeTypeWrapper.java?view=auto&rev=475786
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/wrappers/AttributeTypeWrapper.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/wrappers/AttributeTypeWrapper.java Thu Nov 16 08:05:20 2006
@@ -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.ldapstudio.schemas.view.viewers.wrappers;
+
+
+import org.apache.directory.ldapstudio.schemas.controller.Application;
+import org.apache.directory.ldapstudio.schemas.model.AttributeType;
+import org.apache.directory.ldapstudio.schemas.view.IImageKeys;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+
+/**
+ * Nasty trick to display object-classes attributes in the tree-viewer
+ */
+public class AttributeTypeWrapper implements DisplayableTreeElement
+{
+ /******************************************
+ * Fields *
+ ******************************************/
+
+ private IntermediateNode parent;
+ private AttributeType myAttributeType;
+
+
+ /******************************************
+ * Constructors *
+ ******************************************/
+
+ /**
+ * Default constructor
+ * @param myAttributeType
+ * @param parent
+ */
+ public AttributeTypeWrapper( AttributeType myAttributeType, IntermediateNode parent )
+ {
+ this.myAttributeType = myAttributeType;
+ this.parent = parent;
+ }
+
+
+ /******************************************
+ * Wrapper Methods *
+ ******************************************/
+
+ /**
+ * @return the name of the wrapped attribute type
+ */
+ public String getName()
+ {
+ return myAttributeType.getNames()[0];
+ }
+
+
+ /**
+ * @return the OID of the wrapped attribute type
+ */
+ public String getOid()
+ {
+ return myAttributeType.getOid();
+ }
+
+
+ /******************************************
+ * Accessors *
+ ******************************************/
+
+ /**
+ * @return the wrapped attribute type
+ */
+ public AttributeType getMyAttributeType()
+ {
+ return myAttributeType;
+ }
+
+
+ /**
+ * @return the parent element
+ */
+ public IntermediateNode getParent()
+ {
+ return parent;
+ }
+
+
+ /******************************************
+ * DisplayableTreeElement Impl. *
+ ******************************************/
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.ldapstudio.schemas.view.viewers.wrappers.DisplayableTreeElement#getDisplayImage()
+ */
+ public Image getDisplayImage()
+ {
+ return AbstractUIPlugin.imageDescriptorFromPlugin( Application.PLUGIN_ID, IImageKeys.ATTRIBUTE_TYPE )
+ .createImage();
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.ldapstudio.schemas.view.viewers.wrappers.DisplayableTreeElement#getDisplayName()
+ */
+ public String getDisplayName()
+ {
+ return getName() + " [" + myAttributeType.getOriginatingSchema().getName() + "]"; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /******************************************
+ * Object Redefinition *
+ ******************************************/
+
+ /* (non-Javadoc)
+ * @see java.lang.Object#toString()
+ */
+ public String toString()
+ {
+ return myAttributeType + " wrapper"; //$NON-NLS-1$
+ }
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/wrappers/DisplayableTreeElement.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/wrappers/DisplayableTreeElement.java?view=auto&rev=475786
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/wrappers/DisplayableTreeElement.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/wrappers/DisplayableTreeElement.java Thu Nov 16 08:05:20 2006
@@ -0,0 +1,49 @@
+/*
+ * 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.ldapstudio.schemas.view.viewers.wrappers;
+
+
+import org.eclipse.swt.graphics.Image;
+
+
+/**
+ * All objects that want to be displayed in the tree view must implement
+ * this interface.
+ * Note: implementation of E.Lecharny suggestion after the 04/06/06 briefing
+ *
+ */
+public interface DisplayableTreeElement
+{
+ /**
+ * Use this method to get the image that should be displayed in
+ * the tree view.
+ * @return the display image
+ */
+ public Image getDisplayImage();
+
+
+ /**
+ * Use this method to get the name that should be displayed in
+ * the tree view.
+ * @return the display name
+ */
+ public String getDisplayName();
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/wrappers/IntermediateNode.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/wrappers/IntermediateNode.java?view=auto&rev=475786
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/wrappers/IntermediateNode.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/wrappers/IntermediateNode.java Thu Nov 16 08:05:20 2006
@@ -0,0 +1,240 @@
+/*
+ * 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.ldapstudio.schemas.view.viewers.wrappers;
+
+
+import java.util.ArrayList;
+import java.util.Collections;
+
+import org.apache.directory.ldapstudio.schemas.view.viewers.SortableContentProvider;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
+
+
+/**
+ * Class used to display intermediate folder (like 'Optionnal Attributes',
+ * 'Mandatory Attributes' and so on...) in the tree view of the schema.
+ * Instances of the class may contain any kind of displayable objects like
+ * AttributeTypeLiterals or ObjectClassLiterals.
+ *
+ */
+public class IntermediateNode implements DisplayableTreeElement
+{
+
+ /******************************************
+ * Fields *
+ ******************************************/
+ private SortableContentProvider contentProvider;
+ private String name;
+ private DisplayableTreeElement parent;
+ private ArrayList<DisplayableTreeElement> elements;
+
+
+ /******************************************
+ * Constructors *
+ ******************************************/
+
+ /**
+ * Default constructor
+ * @param name the name that will be displayed in the tree viewer
+ * @param parent the parent DisplayableTreeElement in the schema relationship
+ * hierarchy
+ */
+ public IntermediateNode( String name, DisplayableTreeElement parent, SortableContentProvider contentProvider )
+ {
+ this.name = name;
+ this.parent = parent;
+ this.contentProvider = contentProvider;
+ elements = new ArrayList<DisplayableTreeElement>();
+ }
+
+
+ /******************************************
+ * Accessors *
+ ******************************************/
+
+ /**
+ * @return the name of the intermediate node
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+
+ /**
+ * @return the parent of the intermediate node
+ */
+ public DisplayableTreeElement getParent()
+ {
+ return parent;
+ }
+
+
+ /******************************************
+ * Logic *
+ ******************************************/
+
+ /**
+ * Adds a 'child' element to the node only if it's not already under the node.
+ * @param o usually AttributeTypeWrappers, SchemaWrapper or ObjectClassWrappers.
+ */
+ public void addElement( DisplayableTreeElement o )
+ {
+ if ( o instanceof AttributeTypeWrapper )
+ {
+ //initial case
+ if ( elements.size() == 0 )
+ elements.add( o );
+
+ AttributeTypeWrapper toAdd = ( AttributeTypeWrapper ) o;
+ for ( DisplayableTreeElement element : elements )
+ {
+ if ( element instanceof AttributeTypeWrapper )
+ {
+ AttributeTypeWrapper alreadyThere = ( AttributeTypeWrapper ) element;
+ //check if the attributeType instance has already been added
+ if ( toAdd.getMyAttributeType().equals( alreadyThere.getMyAttributeType() ) )
+ return;
+ }
+ }
+ elements.add( o );
+ }
+ else if ( o instanceof ObjectClassWrapper )
+ {
+ //initial case
+ if ( elements.size() == 0 )
+ elements.add( o );
+
+ ObjectClassWrapper toAdd = ( ObjectClassWrapper ) o;
+ for ( DisplayableTreeElement element : elements )
+ {
+ if ( element instanceof ObjectClassWrapper )
+ {
+ ObjectClassWrapper alreadyThere = ( ObjectClassWrapper ) element;
+
+ //check if the objectClass instance has already been added
+ if ( toAdd.getMyObjectClass().equals( alreadyThere.getMyObjectClass() ) )
+ return;
+ }
+ }
+ elements.add( o );
+ }
+ else if ( o instanceof SchemaWrapper )
+ {
+ //initial case
+ if ( elements.size() == 0 )
+ elements.add( o );
+
+ SchemaWrapper toAdd = ( SchemaWrapper ) o;
+ for ( DisplayableTreeElement element : elements )
+ {
+ if ( element instanceof SchemaWrapper )
+ {
+ SchemaWrapper alreadyThere = ( SchemaWrapper ) element;
+
+ if ( toAdd.getMySchema().getName().equals( alreadyThere.getMySchema().getName() ) )
+ return;
+ }
+ }
+ elements.add( o );
+ }
+ }
+
+
+ /**
+ * Clears the list of childrens from the intermediate nodes
+ */
+ public void clearChildrens()
+ {
+ elements = new ArrayList<DisplayableTreeElement>();
+ }
+
+
+ /**
+ * Returns the child elements in the form of an array of objects
+ * @return
+ */
+ @SuppressWarnings("unchecked")//$NON-NLS-1$
+ public Object[] getChildren()
+ {
+ Collections.sort( elements, contentProvider.getOrder() );
+ return elements.toArray( new Object[]
+ {} );
+ }
+
+
+ /******************************************
+ * DisplayableTreeElement Impl. *
+ ******************************************/
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.ldapstudio.schemas.view.viewers.wrappers.DisplayableTreeElement#getDisplayName()
+ */
+ public String getDisplayName()
+ {
+ return getName();
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.ldapstudio.schemas.view.viewers.wrappers.DisplayableTreeElement#getDisplayImage()
+ */
+ public Image getDisplayImage()
+ {
+ String imageKey = ISharedImages.IMG_OBJ_FOLDER;
+ return PlatformUI.getWorkbench().getSharedImages().getImage( imageKey );
+ }
+
+
+ /******************************************
+ * Object Redefinition *
+ ******************************************/
+
+ /* (non-Javadoc)
+ * @see java.lang.Object#toString()
+ */
+ public String toString()
+ {
+ return name;
+ }
+
+
+ /* (non-Javadoc)
+ * @see java.lang.Object#equals(java.lang.Object)
+ */
+ public boolean equals( Object obj )
+ {
+ if ( obj instanceof IntermediateNode )
+ {
+ IntermediateNode compared = ( IntermediateNode ) obj;
+ if ( compared.getName().equals( this.getName() ) )
+ {
+ if ( ( compared.getParent() == null ) || ( this.getParent() == null ) )
+ return true;
+ if ( compared.getParent().equals( this.getParent() ) )
+ return true;
+ }
+ }
+ return false;
+ }
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/wrappers/ObjectClassWrapper.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/wrappers/ObjectClassWrapper.java?view=auto&rev=475786
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/wrappers/ObjectClassWrapper.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/wrappers/ObjectClassWrapper.java Thu Nov 16 08:05:20 2006
@@ -0,0 +1,188 @@
+/*
+ * 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.ldapstudio.schemas.view.viewers.wrappers;
+
+
+import org.apache.directory.ldapstudio.schemas.controller.Application;
+import org.apache.directory.ldapstudio.schemas.model.ObjectClass;
+import org.apache.directory.ldapstudio.schemas.view.IImageKeys;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+
+/**
+ * Nasty trick to display object class in the tree-viewer
+ */
+public class ObjectClassWrapper implements DisplayableTreeElement
+{
+ /******************************************
+ * Fields *
+ ******************************************/
+ public enum State
+ {
+ resolved, unResolved
+ };
+
+ private State state;
+ private IntermediateNode parent;
+ private ObjectClass myObjectClass;
+
+
+ /******************************************
+ * Constructors *
+ ******************************************/
+
+ /**
+ * Default constructor
+ * @param parent
+ * @param myObjectClass
+ */
+ public ObjectClassWrapper( ObjectClass myObjectClass, IntermediateNode parent )
+ {
+ this.parent = parent;
+ this.myObjectClass = myObjectClass;
+ this.state = State.resolved;
+ }
+
+
+ /******************************************
+ * Wrapper Methods *
+ ******************************************/
+
+ /**
+ * @return the names of the wrapped object class
+ */
+ public String[] getNames()
+ {
+ return myObjectClass.getNames();
+ }
+
+
+ /**
+ * @return the oid of the wrapped object class
+ */
+ public String getOid()
+ {
+ return myObjectClass.getOid();
+ }
+
+
+ /******************************************
+ * Accessors *
+ ******************************************/
+
+ /**
+ * @return the wrapped object class
+ */
+ public ObjectClass getMyObjectClass()
+ {
+ return myObjectClass;
+ }
+
+
+ /**
+ * @return the parent element
+ */
+ public IntermediateNode getParent()
+ {
+ return parent;
+ }
+
+
+ /**
+ * @return the state of the wrapped object class
+ */
+ public State getState()
+ {
+ return state;
+ }
+
+
+ /**
+ * Sets the state of the wrapped object class
+ * @param state
+ */
+ public void setState( State state )
+ {
+ this.state = state;
+ }
+
+
+ /******************************************
+ * DisplayableTreeElement Impl. *
+ ******************************************/
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.ldapstudio.schemas.view.viewers.wrappers.DisplayableTreeElement#getDisplayImage()
+ */
+ public Image getDisplayImage()
+ {
+ String imageKey = ISharedImages.IMG_OBJS_WARN_TSK;
+
+ if ( state == State.resolved )
+ return AbstractUIPlugin.imageDescriptorFromPlugin( Application.PLUGIN_ID, IImageKeys.OBJECT_CLASS )
+ .createImage();
+ else if ( state == State.unResolved )
+ return AbstractUIPlugin.imageDescriptorFromPlugin( Application.PLUGIN_ID, IImageKeys.OBJECT_CLASS_WARNING )
+ .createImage();
+
+ return PlatformUI.getWorkbench().getSharedImages().getImage( imageKey );
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.ldapstudio.schemas.view.viewers.wrappers.DisplayableTreeElement#getDisplayName()
+ */
+ public String getDisplayName()
+ {
+ return getNames()[0] + " [" + myObjectClass.getOriginatingSchema().getName() + "]"; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /******************************************
+ * Object Redefinition *
+ ******************************************/
+
+ /* (non-Javadoc)
+ * @see java.lang.Object#equals(java.lang.Object)
+ */
+ public boolean equals( Object obj )
+ {
+ if ( obj instanceof ObjectClassWrapper )
+ {
+ ObjectClassWrapper compared = ( ObjectClassWrapper ) obj;
+ return compared.getOid().equals( this.getOid() );
+ }
+ return false;
+ }
+
+
+ /* (non-Javadoc)
+ * @see java.lang.Object#toString()
+ */
+ public String toString()
+ {
+ return myObjectClass + " wrapper"; //$NON-NLS-1$
+ }
+
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/wrappers/PoolManagerAttributeTypeWrapper.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/wrappers/PoolManagerAttributeTypeWrapper.java?view=auto&rev=475786
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/wrappers/PoolManagerAttributeTypeWrapper.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/wrappers/PoolManagerAttributeTypeWrapper.java Thu Nov 16 08:05:20 2006
@@ -0,0 +1,51 @@
+/*
+ * 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.ldapstudio.schemas.view.viewers.wrappers;
+
+
+import org.apache.directory.ldapstudio.schemas.model.AttributeType;
+
+
+/**
+ * Specific Attribute Type Wrapper for the Schemas View
+ */
+public class PoolManagerAttributeTypeWrapper extends AttributeTypeWrapper
+{
+
+ /**
+ * Default constructor
+ * @param myAttributeType
+ * @param parent
+ */
+ public PoolManagerAttributeTypeWrapper( AttributeType myAttributeType, IntermediateNode parent )
+ {
+ super( myAttributeType, parent );
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.ldapstudio.schemas.view.viewers.wrappers.AttributeTypeWrapper#getDisplayName()
+ */
+ public String getDisplayName()
+ {
+ return getName();
+ }
+}
Added: directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/wrappers/PoolManagerObjectClassWrapper.java
URL: http://svn.apache.org/viewvc/directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/wrappers/PoolManagerObjectClassWrapper.java?view=auto&rev=475786
==============================================================================
--- directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/wrappers/PoolManagerObjectClassWrapper.java (added)
+++ directory/sandbox/pamarcelot/ldapstudio/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/view/viewers/wrappers/PoolManagerObjectClassWrapper.java Thu Nov 16 08:05:20 2006
@@ -0,0 +1,51 @@
+/*
+ * 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.ldapstudio.schemas.view.viewers.wrappers;
+
+
+import org.apache.directory.ldapstudio.schemas.model.ObjectClass;
+
+
+/**
+ * Specific Object Class Wrapper for the Schemas View
+ */
+public class PoolManagerObjectClassWrapper extends ObjectClassWrapper
+{
+
+ /**
+ * Default constructor
+ * @param myObjectClass
+ * @param parent
+ */
+ public PoolManagerObjectClassWrapper( ObjectClass myObjectClass, IntermediateNode parent )
+ {
+ super( myObjectClass, parent );
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.ldapstudio.schemas.view.viewers.wrappers.ObjectClassWrapper#getDisplayName()
+ */
+ public String getDisplayName()
+ {
+ return getNames()[0];
+ }
+}