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 2007/07/23 15:32:33 UTC

svn commit: r558721 - in /directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/controller: SchemaViewController.java actions/DeleteSchemaElementAction.java actions/OpenElementAction.java

Author: pamarcelot
Date: Mon Jul 23 06:32:32 2007
New Revision: 558721

URL: http://svn.apache.org/viewvc?view=rev&rev=558721
Log:
Corrected the OpenElementAction to open also the Schemas in Editors.
Added implementation for the DeleteSchemaElementAction.

Modified:
    directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/controller/SchemaViewController.java
    directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/controller/actions/DeleteSchemaElementAction.java
    directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/controller/actions/OpenElementAction.java

Modified: directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/controller/SchemaViewController.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/controller/SchemaViewController.java?view=diff&rev=558721&r1=558720&r2=558721
==============================================================================
--- directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/controller/SchemaViewController.java (original)
+++ directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/controller/SchemaViewController.java Mon Jul 23 06:32:32 2007
@@ -366,7 +366,7 @@
         newAttributeType = new NewAttributeTypeAction();
         newObjectClass = new NewObjectClassAction();
         openElement = new OpenElementAction( viewer );
-        deleteSchemaElement = new DeleteSchemaElementAction();
+        deleteSchemaElement = new DeleteSchemaElementAction( viewer );
         importSchemasFromOpenLdap = new ImportSchemasFromOpenLdapAction();
         importSchemasFromXml = new ImportSchemasFromXmlAction();
         exportSchemasAsOpenLdap = new ExportSchemasAsOpenLdapAction( viewer );

Modified: directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/controller/actions/DeleteSchemaElementAction.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/controller/actions/DeleteSchemaElementAction.java?view=diff&rev=558721&r1=558720&r2=558721
==============================================================================
--- directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/controller/actions/DeleteSchemaElementAction.java (original)
+++ directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/controller/actions/DeleteSchemaElementAction.java Mon Jul 23 06:32:32 2007
@@ -20,11 +20,30 @@
 package org.apache.directory.studio.apacheds.schemaeditor.controller.actions;
 
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.directory.shared.ldap.schema.SchemaObject;
 import org.apache.directory.studio.apacheds.schemaeditor.Activator;
 import org.apache.directory.studio.apacheds.schemaeditor.PluginConstants;
+import org.apache.directory.studio.apacheds.schemaeditor.controller.SchemaHandler;
+import org.apache.directory.studio.apacheds.schemaeditor.model.AttributeTypeImpl;
+import org.apache.directory.studio.apacheds.schemaeditor.model.ObjectClassImpl;
+import org.apache.directory.studio.apacheds.schemaeditor.model.Schema;
+import org.apache.directory.studio.apacheds.schemaeditor.view.wrappers.AttributeTypeWrapper;
+import org.apache.directory.studio.apacheds.schemaeditor.view.wrappers.Folder;
+import org.apache.directory.studio.apacheds.schemaeditor.view.wrappers.ObjectClassWrapper;
+import org.apache.directory.studio.apacheds.schemaeditor.view.wrappers.SchemaWrapper;
 import org.eclipse.jface.action.Action;
 import org.eclipse.jface.action.IAction;
 import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TreeViewer;
 import org.eclipse.ui.IWorkbenchWindow;
 import org.eclipse.ui.IWorkbenchWindowActionDelegate;
 import org.eclipse.ui.plugin.AbstractUIPlugin;
@@ -38,10 +57,14 @@
  */
 public class DeleteSchemaElementAction extends Action implements IWorkbenchWindowActionDelegate
 {
+    /** The associated viewer */
+    private TreeViewer viewer;
+
+
     /**
      * Creates a new instance of DeleteSchemaElementAction.
      */
-    public DeleteSchemaElementAction()
+    public DeleteSchemaElementAction( TreeViewer viewer )
     {
         super( "Delete" );
         setToolTipText( getText() );
@@ -49,6 +72,41 @@
         setImageDescriptor( AbstractUIPlugin
             .imageDescriptorFromPlugin( Activator.PLUGIN_ID, PluginConstants.IMG_DELETE ) );
         setEnabled( true );
+        this.viewer = viewer;
+        this.viewer.addSelectionChangedListener( new ISelectionChangedListener()
+        {
+            public void selectionChanged( SelectionChangedEvent event )
+            {
+                StructuredSelection selection = ( StructuredSelection ) event.getSelection();
+                if ( selection.size() > 0 )
+                {
+                    boolean enabled = false;
+
+                    for ( Iterator<?> iterator = selection.iterator(); iterator.hasNext(); )
+                    {
+                        Object selectedItem = iterator.next();
+                        if ( selectedItem instanceof SchemaWrapper )
+                        {
+                            enabled = true;
+                        }
+                        else if ( selectedItem instanceof AttributeTypeWrapper )
+                        {
+                            enabled = true;
+                        }
+                        else if ( selectedItem instanceof ObjectClassWrapper )
+                        {
+                            enabled = true;
+                        }
+                    }
+
+                    setEnabled( enabled );
+                }
+                else
+                {
+                    setEnabled( false );
+                }
+            }
+        } );
     }
 
 
@@ -57,7 +115,59 @@
      */
     public void run()
     {
-        // TODO implement
+        StructuredSelection selection = ( StructuredSelection ) viewer.getSelection();
+
+        if ( !selection.isEmpty() )
+        {
+            Map<String, Schema> schemasMap = new HashMap<String, Schema>();
+            List<SchemaObject> schemaObjectsList = new ArrayList<SchemaObject>();
+
+            for ( Iterator<?> iterator = selection.iterator(); iterator.hasNext(); )
+            {
+                Object selectedItem = iterator.next();
+                if ( selectedItem instanceof SchemaWrapper )
+                {
+                    Schema schema = ( ( SchemaWrapper ) selectedItem ).getSchema();
+                    schemasMap.put( schema.getName().toLowerCase(), schema );
+                }
+                else if ( selectedItem instanceof AttributeTypeWrapper )
+                {
+                    AttributeTypeImpl at = ( ( AttributeTypeWrapper ) selectedItem ).getAttributeType();
+                    schemaObjectsList.add( at );
+                }
+                else if ( selectedItem instanceof ObjectClassWrapper )
+                {
+                    ObjectClassImpl oc = ( ( ObjectClassWrapper ) selectedItem ).getObjectClass();
+                    schemaObjectsList.add( oc );
+                }
+            }
+
+            SchemaHandler schemaHandler = Activator.getDefault().getSchemaHandler();
+            // Removing schema objects
+            for ( SchemaObject schemaObject : schemaObjectsList )
+            {
+                if ( !schemasMap.containsKey( schemaObject.getSchema().toLowerCase() ) )
+                {
+                    // If the schema object is not part of deleted schema, we need to delete it.
+                    // But, we don't delete schema objects that are part of a deleted schema, since
+                    // deleting the schema will also delete this schema object.
+                    if ( schemaObject instanceof AttributeTypeImpl )
+                    {
+                        schemaHandler.removeAttributeType( ( AttributeTypeImpl ) schemaObject );
+                    }
+                    else if ( schemaObject instanceof ObjectClassImpl )
+                    {
+                        schemaHandler.removeObjectClass( ( ObjectClassImpl ) schemaObject );
+                    }
+                }
+            }
+
+            // Removing schemas
+            for ( Schema schema : schemasMap.values() )
+            {
+                schemaHandler.removeSchema( schema );
+            }
+        }
     }
 
 

Modified: directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/controller/actions/OpenElementAction.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/controller/actions/OpenElementAction.java?view=diff&rev=558721&r1=558720&r2=558721
==============================================================================
--- directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/controller/actions/OpenElementAction.java (original)
+++ directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/controller/actions/OpenElementAction.java Mon Jul 23 06:32:32 2007
@@ -27,6 +27,8 @@
 import org.apache.directory.studio.apacheds.schemaeditor.view.editors.attributetype.AttributeTypeEditorInput;
 import org.apache.directory.studio.apacheds.schemaeditor.view.editors.objectclass.ObjectClassEditor;
 import org.apache.directory.studio.apacheds.schemaeditor.view.editors.objectclass.ObjectClassEditorInput;
+import org.apache.directory.studio.apacheds.schemaeditor.view.editors.schema.SchemaEditor;
+import org.apache.directory.studio.apacheds.schemaeditor.view.editors.schema.SchemaEditorInput;
 import org.apache.directory.studio.apacheds.schemaeditor.view.wrappers.AttributeTypeWrapper;
 import org.apache.directory.studio.apacheds.schemaeditor.view.wrappers.Folder;
 import org.apache.directory.studio.apacheds.schemaeditor.view.wrappers.ObjectClassWrapper;
@@ -102,7 +104,19 @@
                     // TODO Add logging
                 }
             }
-            else if ( ( selectedItem instanceof Folder ) || ( selectedItem instanceof SchemaWrapper ) )
+            else if ( selectedItem instanceof SchemaWrapper )
+            {
+                try
+                {
+                    PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().openEditor(
+                        new SchemaEditorInput( ( ( SchemaWrapper ) selectedItem ).getSchema() ), SchemaEditor.ID );
+                }
+                catch ( PartInitException e )
+                {
+                    // TODO Add logging
+                }
+            }
+            else if ( selectedItem instanceof Folder )
             {
                 viewer.setExpandedState( selectedItem, !viewer.getExpandedState( selectedItem ) );
             }