DND-triggered operations now executed after drag end.
authorp.ciardelli <p.ciardelli@localhost>
Fri, 6 Feb 2009 14:25:54 +0000 (14:25 +0000)
committerp.ciardelli <p.ciardelli@localhost>
Fri, 6 Feb 2009 14:25:54 +0000 (14:25 +0000)
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/GroupComposite.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/GroupedComposite.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/NameComposite.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/SynonymComposite.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/TaxonNameEditor.java

index 321a85be107fa3c317b860e5c94dbaa485b78938..48ab3fc38a5ad8798fa9cc39e4695a9f86a29b66 100644 (file)
@@ -19,6 +19,8 @@ import org.eclipse.swt.dnd.DropTargetListener;
 import org.eclipse.swt.dnd.Transfer;\r
 import org.eclipse.swt.graphics.Color;\r
 import org.eclipse.swt.widgets.Composite;\r
+import org.eclipse.swt.widgets.Event;\r
+import org.eclipse.swt.widgets.Listener;\r
 import org.eclipse.ui.forms.widgets.TableWrapData;\r
 import org.eclipse.ui.forms.widgets.TableWrapLayout;\r
 \r
@@ -68,11 +70,23 @@ public class GroupComposite extends Composite {
                                }\r
                                \r
                                public void drop(DropTargetEvent event) {\r
-                                                                               \r
-                                       if (event.data instanceof Composite) {\r
-                                               Composite composite = (Composite) event.data; \r
-                                               if ( ! composite.getParent().equals(GroupComposite.this)) {\r
-                                                       composite.setParent(GroupComposite.this);\r
+                                                                       \r
+                                       if (event.data instanceof GroupedComposite) {\r
+                                               \r
+                                               final GroupedComposite composite = (GroupedComposite) event.data;\r
+                                               if (composite.getDragSource() != null) {\r
+                                                       \r
+                                                       // Make sure composite is not being dropped onto its current parent\r
+                                                       if ( ! composite.getParent().equals(GroupComposite.this)) {\r
+                                                               \r
+                                                               // Change parent at end of drag event\r
+                                                               composite.getDragSource().addListener(DND.DragEnd, new Listener() {\r
+                                                                       @Override\r
+                                                                       public void handleEvent(Event event) {\r
+                                                                               composite.setParent(GroupComposite.this);\r
+                                                                       }\r
+                                                               });\r
+                                                       }                                                       \r
                                                }\r
                                        }\r
                                }\r
index 6afd4d5c402d976a8cf1a30da67814230aab6727..ca1ad9b1f5440f3457821aa40523c42cdb48e066 100644 (file)
@@ -304,6 +304,10 @@ abstract public class GroupedComposite extends Composite implements IHasProperty
                draggableControl = control;\r
        }\r
 \r
+       public DragSource getDragSource() {\r
+               return dragSource;\r
+       }\r
+       \r
        public void setIsDraggable(boolean draggable) {\r
 \r
                if (draggable) {\r
index 683bbfa6c2c6df388ed0e05ba6750e260e724520..61d3954db1545520d6878001e92e5aeab5405e59 100644 (file)
@@ -17,7 +17,6 @@ import org.eclipse.core.commands.operations.IUndoContext;
 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.action.MenuManager;\r
 import org.eclipse.swt.SWT;\r
 import org.eclipse.swt.custom.StyledText;\r
 import org.eclipse.swt.events.FocusAdapter;\r
@@ -318,31 +317,30 @@ public abstract class NameComposite extends GroupedComposite {
 \r
                        @Override\r
                        public void handleSplitText(String text) {\r
-\r
+                               \r
                                // Create a synonym in a new homotypic group using text as name\r
                                IUndoContext undoContext = EditorController.getUndoContext(taxon);\r
-//                             IUndoableOperation operation = new CreateSynonymInNewGroupOperation\r
-                               setOperation(new CreateSynonymInNewGroupOperation\r
-                                               ("new heterotypic synonym", undoContext, taxon, text)); //$NON-NLS-1$\r
-                               \r
-//                             GlobalController.executeOperation(operation);\r
+                               IUndoableOperation operation = new CreateSynonymInNewGroupOperation\r
+                                               ("new heterotypic synonym", undoContext, taxon, text); //$NON-NLS-1$\r
+//                             setOperation(new CreateSynonymInNewGroupOperation\r
                                \r
+                               GlobalController.executeOperation(operation);\r
 //                             getTextViewer().removeLineBreakListener(this);\r
                        }\r
 \r
                });\r
 \r
-               styledText.addKeyListener(new KeyAdapter(){\r
-\r
-                       @Override\r
-                       public void keyReleased(KeyEvent e) {\r
-                               if (operation != null) {\r
-                                       GlobalController.executeOperation(operation);\r
-                                       operation = null;\r
-                               }\r
-                       }\r
-                       \r
-               });\r
+//             styledText.addKeyListener(new KeyAdapter(){\r
+//\r
+//                     @Override\r
+//                     public void keyReleased(KeyEvent e) {\r
+//                             if (operation != null) {\r
+//                                     GlobalController.executeOperation(operation);\r
+//                                     operation = null;\r
+//                             }\r
+//                     }\r
+//                     \r
+//             });\r
                \r
                styledText.addFocusListener(new FocusAdapter() {\r
                        public void focusGained(FocusEvent e) {\r
@@ -356,13 +354,13 @@ public abstract class NameComposite extends GroupedComposite {
                return nameViewer;\r
        }\r
        \r
-       IUndoableOperation operation;\r
+//     IUndoableOperation operation;\r
 \r
        private Label nonEditableInfo;\r
        \r
-       protected void setOperation(IUndoableOperation operation) {\r
-               this.operation = operation;\r
-       }\r
+//     protected void setOperation(IUndoableOperation operation) {\r
+//             this.operation = operation;\r
+//     }\r
 \r
        public void setText(String text) {\r
                Assert.isNotNull(getTextViewer(), \r
index cd5eee3ffb51d1d78d614e0e1c4b909222d008a4..0dcb32f2bf7f2db439e0d697a361c6d0b84f48ae 100644 (file)
@@ -97,7 +97,7 @@ public class SynonymComposite extends NameComposite {
        public Synonym getSynonym() {\r
                return synonym;\r
        }\r
-       \r
+\r
        public boolean setParent(Composite parent) {\r
 \r
                if (super.setParent(parent)) {  \r
index 347f6953221976213657c4818ea9d38afcd43427..97914aeac6c6ad46c74930736062d784db0e472f 100644 (file)
@@ -26,6 +26,8 @@ import org.eclipse.swt.dnd.DropTargetEvent;
 import org.eclipse.swt.dnd.Transfer;\r
 import org.eclipse.swt.widgets.Composite;\r
 import org.eclipse.swt.widgets.Control;\r
+import org.eclipse.swt.widgets.Event;\r
+import org.eclipse.swt.widgets.Listener;\r
 import org.eclipse.ui.IEditorInput;\r
 import org.eclipse.ui.IEditorSite;\r
 import org.eclipse.ui.PartInitException;\r
@@ -44,6 +46,8 @@ import eu.etaxonomy.taxeditor.controller.EditorController;
 import eu.etaxonomy.taxeditor.controller.GlobalController;\r
 import eu.etaxonomy.taxeditor.editor.AbstractTaxonEditor;\r
 import eu.etaxonomy.taxeditor.editor.FreeTextElementFactory;\r
+import eu.etaxonomy.taxeditor.editor.GroupComposite;\r
+import eu.etaxonomy.taxeditor.editor.GroupedComposite;\r
 import eu.etaxonomy.taxeditor.operations.name.ChangeHomotypicGroupOperation;\r
 import eu.etaxonomy.taxeditor.operations.name.ChangeMisappliedNameToSynonymOperation;\r
 \r
@@ -140,32 +144,46 @@ public class TaxonNameEditor extends AbstractTaxonEditor
                target.addDropListener(new DropTargetAdapter() {\r
                        \r
                        public void drop(DropTargetEvent event) {\r
-                               \r
-                               IUndoContext undoContext = EditorController.getUndoContext(getTaxon());\r
-                               IUndoableOperation operation = null;\r
-                               \r
-                               // Synonym being dropped\r
-                               if(event.data instanceof SynonymComposite){\r
-                                       Synonym synonym = ((SynonymComposite)event.data).getSynonym();\r
-                                       operation = new ChangeHomotypicGroupOperation\r
-                                                       ("change type", undoContext, \r
-                                                                       getTaxon(), synonym, HomotypicalGroup.NewInstance());\r
-                               }\r
-                               \r
-                               // Misapplied name being dropped\r
-                               if(event.data instanceof MisappliedNameComposite){\r
-                                               Taxon misapplication = ((MisappliedNameComposite)event.data).getMisappliedName();\r
-                                               operation = new ChangeMisappliedNameToSynonymOperation\r
-                                                               ("change misapplied name to synonym", undoContext, \r
-                                                                               getTaxon(), misapplication, HomotypicalGroup.NewInstance());                                    \r
+                       \r
+                               if (event.data instanceof GroupedComposite) {\r
+                                       final GroupedComposite composite = (GroupedComposite) event.data;\r
+                                       if (composite.getDragSource() != null) {\r
+                                               \r
+                                                       // Execute operations at end of drag event\r
+                                                       composite.getDragSource().addListener(DND.DragEnd, new Listener() {\r
+                                                               @Override\r
+                                                               public void handleEvent(Event event) {\r
+                                                                       IUndoContext undoContext = EditorController.getUndoContext(getTaxon());\r
+                                                                       IUndoableOperation operation = null;\r
+                                                                       \r
+                                                                       // Synonym being dropped\r
+                                                                       if(composite instanceof SynonymComposite){\r
+                                                                               Synonym synonym = ((SynonymComposite)composite).getSynonym();\r
+                                                                               operation = new ChangeHomotypicGroupOperation\r
+                                                                                               ("change type", undoContext, \r
+                                                                                                               getTaxon(), synonym, HomotypicalGroup.NewInstance());\r
+                                                                       }\r
+                                                                       \r
+                                                                       // Misapplied name being dropped\r
+                                                                       if(composite instanceof MisappliedNameComposite){\r
+                                                                                       Taxon misapplication = ((MisappliedNameComposite)composite).getMisappliedName();\r
+                                                                                       operation = new ChangeMisappliedNameToSynonymOperation\r
+                                                                                                       ("change misapplied name to synonym", undoContext, \r
+                                                                                                                       getTaxon(), misapplication, HomotypicalGroup.NewInstance());                                    \r
+                                                                       }\r
+                                                                       \r
+                                                                       // Execute operation if it's been init'ed\r
+                                                                       if (operation == null) {\r
+                                                                               logger.warn("User unsuccessfully tried to drop " + composite.getClass());\r
+                                                                       } else {\r
+                                                                               GlobalController.executeOperation(operation);\r
+                                                                       }\r
+                                                               }\r
+                                                       });                                                     \r
+                                       }\r
                                }\r
                                \r
-                               // Execute operation if it's been init'ed\r
-                               if (operation == null) {\r
-                                       logger.warn("User unsuccessfully tried to drop " + event.data.getClass());\r
-                               } else {\r
-                                       GlobalController.executeOperation(operation);\r
-                               }\r
+\r
                        }               \r
                });\r
                                \r