Refactored description editor per #577
[taxeditor.git] / eclipseprojects / eu.etaxonomy.taxeditor / src / eu / etaxonomy / taxeditor / editor / description / DescriptionElementComposite.java
index 9bd3706aa3649679fd1c3ff083862db48e0dfea3..853af63847b9ce86ab5b38b0491cafe34329d4f8 100644 (file)
 package eu.etaxonomy.taxeditor.editor.description;\r
 \r
 import org.apache.log4j.Logger;\r
+import org.eclipse.core.commands.operations.IUndoContext;\r
+import org.eclipse.core.commands.operations.IUndoableOperation;\r
 import org.eclipse.core.runtime.Assert;\r
 import org.eclipse.jface.action.Action;\r
+import org.eclipse.jface.resource.ImageDescriptor;\r
 import org.eclipse.jface.text.Document;\r
 import org.eclipse.jface.text.source.SourceViewer;\r
 import org.eclipse.swt.SWT;\r
@@ -29,11 +32,13 @@ import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.description.TextData;\r
 import eu.etaxonomy.taxeditor.ITaxEditorConstants;\r
 import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
-import eu.etaxonomy.taxeditor.actions.ui.description.DeleteElementCompositeAction;\r
+import eu.etaxonomy.taxeditor.controller.EditorController;\r
+import eu.etaxonomy.taxeditor.controller.GlobalController;\r
 import eu.etaxonomy.taxeditor.editor.ContextMenu;\r
 import eu.etaxonomy.taxeditor.editor.GroupedComposite;\r
 import eu.etaxonomy.taxeditor.editor.LineWrapSupport;\r
 import eu.etaxonomy.taxeditor.editor.ParseListener;\r
+import eu.etaxonomy.taxeditor.operations.description.RemoveElementOperation;\r
 import eu.etaxonomy.taxeditor.propertysheet.description.DescriptionElementPropertySource;\r
 \r
 /**\r
@@ -78,7 +83,9 @@ public class DescriptionElementComposite extends GroupedComposite {
         */\r
        public Action CHANGE_TAXON_TO_SYNONYM_ACTION;\r
 \r
-//     private DescriptionElementBase element;\r
+       private DescriptionElementBase element;\r
+\r
+       private IUndoContext undoContext;\r
 \r
        private static final String EMPTY_NAME_PROMPT = "Click to add descriptive element text";\r
 \r
@@ -95,6 +102,10 @@ public class DescriptionElementComposite extends GroupedComposite {
                        DescriptionElementBase element) {\r
                super(parent, managedForm);\r
                \r
+               this.element = element;\r
+               \r
+               this.undoContext = EditorController.getUndoContext(taxon);\r
+               \r
                createTextViewer();\r
                createBorderSupport();\r
                createLineWrapSupport();\r
@@ -106,6 +117,10 @@ public class DescriptionElementComposite extends GroupedComposite {
                setFocus();\r
        }\r
 \r
+       public DescriptionElementBase getElement() {\r
+               return element;\r
+       }\r
+       \r
        protected void createLineWrapSupport() {\r
                new LineWrapSupport(getTextViewer(), managedForm);\r
        }\r
@@ -182,11 +197,18 @@ public class DescriptionElementComposite extends GroupedComposite {
                ContextMenu contextMenu = new ContextMenu(getDraggableLabel());\r
                \r
                // Delete this description element\r
-               Action deleteElementAction = new DeleteElementCompositeAction(\r
-                               this, getTaxon());\r
-               contextMenu.addAction(deleteElementAction);\r
-               \r
-               // Add new text \r
+               String text = "Delete description element";\r
+               ImageDescriptor image = TaxEditorPlugin.getDefault()\r
+                               .getImageDescriptor(ITaxEditorConstants.ACTIVE_DELETE_ICON);\r
+               contextMenu.addAction(new Action(text, image){\r
+                                               \r
+                       public void run() {\r
+                               IUndoableOperation operation = new RemoveElementOperation\r
+                                               (this.getText(), undoContext, taxon, element);\r
+                               \r
+                               GlobalController.executeOperation(operation);\r
+                       }\r
+               });\r
        }\r
        \r
        @Override\r
@@ -198,7 +220,7 @@ public class DescriptionElementComposite extends GroupedComposite {
                \r
                // If feature only has 1 child that is not DescriptionElementComposite,\r
                //      composite is empty\r
-               if (!(featureComponent instanceof FeatureGroupComposite)) {\r
+               if (!(featureComponent instanceof DescriptionFeatureGroupComposite)) {\r
                        return;\r
                }\r
                \r