Finalizing PolytomousKeyListEditor
authorn.hoffmann <n.hoffmann@localhost>
Wed, 20 Apr 2011 14:34:07 +0000 (14:34 +0000)
committern.hoffmann <n.hoffmann@localhost>
Wed, 20 Apr 2011 14:34:07 +0000 (14:34 +0000)
.gitattributes
eu.etaxonomy.taxeditor.editor/plugin.xml
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/IPolytomousKeyEditorPage.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyGraphEditor.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyListEditor.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/handler/CreateNodeHandler.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/handler/DeleteNodeHandler.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/operation/DeleteNodeOperation.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/key/PolytomousKeyNodeDetailElement.java

index 2bb3c7adb0131530cdaa06f5cbbfaf50163f1bb7..3173a420e71a3dfc1d39f93ccdb2c34be5076036 100644 (file)
@@ -345,6 +345,7 @@ eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/Ab
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/AbstractIdentificationEditorInput.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/KeyEditor.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/handler/ApplyLayoutHandler.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/IPolytomousKeyEditorPage.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyContentProvider.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyEditorInput.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyGraphEditor.java -text
index 7313f74cfe9d557bb31ba88c5dec87639fa40a51..ff49af4516c1dcd007fbb6a70988c2246ac6b32b 100644 (file)
             <with
                   variable="activePartId">
                <equals
-                     value="eu.etaxonomy.taxeditor.editor.key.polytomous.PolytomousKeyEditor">
+                     value="eu.etaxonomy.taxeditor.editor.key">
                </equals>
             </with>
          </activeWhen>
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/IPolytomousKeyEditorPage.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/IPolytomousKeyEditorPage.java
new file mode 100644 (file)
index 0000000..6d0e845
--- /dev/null
@@ -0,0 +1,22 @@
+// $Id$
+/**
+ * Copyright (C) 2007 EDIT
+ * European Distributed Institute of Taxonomy 
+ * http://www.e-taxonomy.eu
+ * 
+ * The contents of this file are subject to the Mozilla Public License Version 1.1
+ * See LICENSE.TXT at the top of this package for the full license terms.
+ */
+
+package eu.etaxonomy.taxeditor.editor.key.polytomous;
+
+import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
+
+/**
+ * @author n.hoffmann
+ * @created Apr 20, 2011
+ * @version 1.0
+ */
+public interface IPolytomousKeyEditorPage extends IPostOperationEnabled {
+
+}
index 61a8dd24947ea706f2fb71dfb096d5d96cf083fd..0bdd3625106a6a93db3fd44d4992dfa08d39b804 100644 (file)
@@ -14,7 +14,9 @@ import eu.etaxonomy.taxeditor.editor.key.AbstractGraphKeyEditor;
  * @author n.hoffmann
  * 
  */
-public class PolytomousKeyGraphEditor extends AbstractGraphKeyEditor<PolytomousKey> {
+public class PolytomousKeyGraphEditor extends
+               AbstractGraphKeyEditor<PolytomousKey> implements
+               IPolytomousKeyEditorPage {
 
        public static final String ID = "eu.etaxonomy.taxeditor.editor.key.polytomous.graph";
 
index 67236cfc13c9cd17a1d5597394c38969371e8dfd..fc252da037704cbe8ae0b21ee76be79a3312456a 100644 (file)
@@ -37,6 +37,7 @@ import org.eclipse.ui.part.EditorPart;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
+import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.description.PolytomousKey;
 import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
@@ -50,7 +51,8 @@ import eu.etaxonomy.taxeditor.model.IDirtyMarkableSelectionProvider;
  * @version 1.0
  */
 public class PolytomousKeyListEditor extends EditorPart implements
-               IConversationEnabled, IDirtyMarkableSelectionProvider {
+               IConversationEnabled, IDirtyMarkableSelectionProvider,
+               IPolytomousKeyEditorPage {
 
        private class LinkListener extends MouseAdapter {
                /*
@@ -292,4 +294,30 @@ public class PolytomousKeyListEditor extends EditorPart implements
 
        }
 
+       /*
+        * (non-Javadoc)
+        * 
+        * @see
+        * eu.etaxonomy.taxeditor.operation.IPostOperationEnabled#postOperation(
+        * eu.etaxonomy.cdm.model.common.CdmBase)
+        */
+       @Override
+       public boolean postOperation(CdmBase objectAffectedByOperation) {
+               viewer.refresh();
+               viewer.setSelection(new StructuredSelection(objectAffectedByOperation),
+                               true);
+               return true;
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see eu.etaxonomy.taxeditor.operation.IPostOperationEnabled#onComplete()
+        */
+       @Override
+       public boolean onComplete() {
+               // TODO Auto-generated method stub
+               return false;
+       }
+
 }
index 12fb3dc6d2758ff190e68fff2f8c9454dc4bec76..d1d4a917dd97f4567f57ef6f8ce1e291842b76b1 100644 (file)
@@ -14,45 +14,54 @@ import org.eclipse.ui.handlers.HandlerUtil;
 
 import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
 import eu.etaxonomy.taxeditor.editor.EditorUtil;
-import eu.etaxonomy.taxeditor.editor.key.polytomous.PolytomousKeyGraphEditor;
+import eu.etaxonomy.taxeditor.editor.key.KeyEditor;
+import eu.etaxonomy.taxeditor.editor.key.polytomous.IPolytomousKeyEditorPage;
 import eu.etaxonomy.taxeditor.editor.key.polytomous.operation.CreateNodeOperation;
 import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
 
 /**
  * @author n.hoffmann
- *
+ * 
  */
 public class CreateNodeHandler extends AbstractHandler {
 
-       /* (non-Javadoc)
-        * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+       /*
+        * (non-Javadoc)
+        * 
+        * @see
+        * org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.
+        * ExecutionEvent)
         */
        @Override
        public Object execute(ExecutionEvent event) throws ExecutionException {
-               
+
                IEditorPart editor = HandlerUtil.getActiveEditor(event);
-               
-               if(editor instanceof PolytomousKeyGraphEditor){
-                       PolytomousKeyGraphEditor keyEditor = (PolytomousKeyGraphEditor) editor;
-                       
-                       IStructuredSelection selection = (IStructuredSelection) HandlerUtil.getActiveMenuSelection(event);
-                       
-                       if(selection.getFirstElement() instanceof PolytomousKeyNode){
+
+               if (editor instanceof KeyEditor) {
+                       IPolytomousKeyEditorPage editorPage = (IPolytomousKeyEditorPage) ((KeyEditor) editor)
+                                       .getActiveEditor();
+
+                       IStructuredSelection selection = (IStructuredSelection) HandlerUtil
+                                       .getActiveMenuSelection(event);
+
+                       if (selection.getFirstElement() instanceof PolytomousKeyNode) {
                                try {
                                        String label = event.getCommand().getName();
                                        IUndoContext undoContext = EditorUtil.getUndoContext();
-                                       
-                                       PolytomousKeyNode keyNode = (PolytomousKeyNode) selection.getFirstElement();
-                                       
-                                       AbstractPostOperation operation = new CreateNodeOperation(label, undoContext, keyNode, keyEditor);
+
+                                       PolytomousKeyNode keyNode = (PolytomousKeyNode) selection
+                                                       .getFirstElement();
+
+                                       AbstractPostOperation operation = new CreateNodeOperation(
+                                                       label, undoContext, keyNode, editorPage);
                                        EditorUtil.executeOperation(operation);
                                } catch (NotDefinedException e) {
                                        EditorUtil.warn(getClass(), "Command name not set.");
                                }
-                               
+
                        }
                }
-               
+
                return null;
        }
 
index f67fdbb092c3d94ea1e8b50b35993e66230800b1..2926c7d1adbbe904c7c3d1dc98923905d9d5f298 100644 (file)
@@ -1,18 +1,30 @@
 // $Id$
 /**
-* Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
-* http://www.e-taxonomy.eu
-* 
-* The contents of this file are subject to the Mozilla Public License Version 1.1
-* See LICENSE.TXT at the top of this package for the full license terms.
-*/
+ * Copyright (C) 2007 EDIT
+ * European Distributed Institute of Taxonomy 
+ * http://www.e-taxonomy.eu
+ 
+ * The contents of this file are subject to the Mozilla Public License Version 1.1
+ * See LICENSE.TXT at the top of this package for the full license terms.
+ */
 
 package eu.etaxonomy.taxeditor.editor.key.polytomous.handler;
 
 import org.eclipse.core.commands.AbstractHandler;
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.common.NotDefinedException;
+import org.eclipse.core.commands.operations.IUndoContext;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
+import eu.etaxonomy.taxeditor.editor.key.KeyEditor;
+import eu.etaxonomy.taxeditor.editor.key.polytomous.IPolytomousKeyEditorPage;
+import eu.etaxonomy.taxeditor.editor.key.polytomous.operation.DeleteNodeOperation;
+import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
 
 /**
  * @author n.hoffmann
@@ -21,12 +33,42 @@ import org.eclipse.core.commands.ExecutionException;
  */
 public class DeleteNodeHandler extends AbstractHandler {
 
-       /* (non-Javadoc)
-        * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+       /*
+        * (non-Javadoc)
+        * 
+        * @see
+        * org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.
+        * ExecutionEvent)
         */
        @Override
        public Object execute(ExecutionEvent event) throws ExecutionException {
-               // TODO Auto-generated method stub
+               IEditorPart editor = HandlerUtil.getActiveEditor(event);
+
+               if (editor instanceof KeyEditor) {
+                       IPolytomousKeyEditorPage editorPage = (IPolytomousKeyEditorPage) ((KeyEditor) editor)
+                                       .getActiveEditor();
+
+                       IStructuredSelection selection = (IStructuredSelection) HandlerUtil
+                                       .getActiveMenuSelection(event);
+
+                       if (selection.getFirstElement() instanceof PolytomousKeyNode) {
+                               try {
+                                       String label = event.getCommand().getName();
+                                       IUndoContext undoContext = EditorUtil.getUndoContext();
+
+                                       PolytomousKeyNode keyNode = (PolytomousKeyNode) selection
+                                                       .getFirstElement();
+
+                                       AbstractPostOperation operation = new DeleteNodeOperation(
+                                                       label, undoContext, keyNode, editorPage);
+                                       EditorUtil.executeOperation(operation);
+                               } catch (NotDefinedException e) {
+                                       EditorUtil.warn(getClass(), "Command name not set.");
+                               }
+
+                       }
+               }
+
                return null;
        }
 
index d4cc5ddb466e6bd2772c81acedaeb14e4e919f0f..dc054de2ef665819867a72509840b0edf4e498c5 100644 (file)
@@ -9,51 +9,61 @@ import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 
-import eu.etaxonomy.cdm.model.description.PolytomousKey;
 import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
 import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 
 /**
  * @author n.hoffmann
- *
+ * 
  */
 public class DeleteNodeOperation extends AbstractPostOperation {
 
-       private PolytomousKeyNode node;
-       private PolytomousKey key;
+       private final PolytomousKeyNode parent;
+       private final PolytomousKeyNode node;
 
-       public DeleteNodeOperation(String label,
-                       IUndoContext undoContext, PolytomousKeyNode node, IPostOperationEnabled postOperationEnabled) {
+       public DeleteNodeOperation(String label, IUndoContext undoContext,
+                       PolytomousKeyNode node, IPostOperationEnabled postOperationEnabled) {
                super(label, undoContext, postOperationEnabled);
                this.node = node;
+               this.parent = node.getParent();
        }
 
-       /* (non-Javadoc)
-        * @see org.eclipse.core.commands.operations.AbstractOperation#execute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
+       /*
+        * (non-Javadoc)
+        * 
+        * @see
+        * org.eclipse.core.commands.operations.AbstractOperation#execute(org.eclipse
+        * .core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
         */
        @Override
        public IStatus execute(IProgressMonitor monitor, IAdaptable info)
                        throws ExecutionException {
-               
-               key = node.getKey();
-               
-               
+
+               parent.removeChild(node);
+
                return postExecute(null);
        }
 
-       /* (non-Javadoc)
-        * @see org.eclipse.core.commands.operations.AbstractOperation#redo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
+       /*
+        * (non-Javadoc)
+        * 
+        * @see
+        * org.eclipse.core.commands.operations.AbstractOperation#redo(org.eclipse
+        * .core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
         */
        @Override
        public IStatus redo(IProgressMonitor monitor, IAdaptable info)
                        throws ExecutionException {
-               // TODO Auto-generated method stub
-               return null;
+               return execute(monitor, info);
        }
 
-       /* (non-Javadoc)
-        * @see org.eclipse.core.commands.operations.AbstractOperation#undo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
+       /*
+        * (non-Javadoc)
+        * 
+        * @see
+        * org.eclipse.core.commands.operations.AbstractOperation#undo(org.eclipse
+        * .core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
         */
        @Override
        public IStatus undo(IProgressMonitor monitor, IAdaptable info)
index b17833e5e51a910bed3de0889b853073dacd6259..2b004eaa0d2dffb656d205c7806404ae5410715f 100644 (file)
@@ -55,17 +55,17 @@ public class PolytomousKeyNodeDetailElement extends
 
                        element_question = formFactory.createKeyStatementElement(
                                        formElement, "Question", parent.getQuestion(), 50, style);
+
+                       selection_feature = (FeatureSelectionElement) formFactory
+                                       .createSelectionElement(SelectionType.FEATURE,
+                                                       getConversationHolder(), formElement, "Feature",
+                                                       parent.getFeature(),
+                                                       FeatureSelectionElement.DEFAULT, style);
                }
 
                element_statement = formFactory.createKeyStatementElement(formElement,
                                "Statement", entity.getStatement(), 50, style);
 
-               selection_feature = (FeatureSelectionElement) formFactory
-                               .createSelectionElement(SelectionType.FEATURE,
-                                               getConversationHolder(), formElement, "Feature",
-                                               entity.getFeature(), FeatureSelectionElement.DEFAULT,
-                                               style);
-
                if (entity.isLeaf()) {
                        selection_taxon = (TaxonSelectionElement) formFactory
                                        .createSelectionElement(SelectionType.TAXON,
@@ -106,7 +106,7 @@ public class PolytomousKeyNodeDetailElement extends
                } else if (eventSource == element_statement) {
                        getEntity().setStatement(element_statement.getKeyStatement());
                } else if (eventSource == selection_feature) {
-                       getEntity().setFeature(selection_feature.getEntity());
+                       getEntity().getParent().setFeature(selection_feature.getEntity());
                } else if (eventSource == selection_taxon) {
                        getEntity().setTaxon(selection_taxon.getEntity());
                } else if (eventSource == selection_subkey) {