ref #7011 Migrate dnd
authorPatrick Plitzner <p.plitzner@bgbm.org>
Mon, 6 Nov 2017 15:44:28 +0000 (16:44 +0100)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Mon, 6 Nov 2017 15:44:34 +0000 (16:44 +0100)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/dnd/CdmAuthorityTableDropTargetListener.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/group/grantedauthority/CdmAuthorityComposite.java

index fbb1862c350afd397b1c8fada173c0c56747f66c..dbd0659e0bbd1e393fc54597e8174a66dcccc89a 100644 (file)
@@ -1,24 +1,28 @@
 /**
 * Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
+* 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.dnd;
 
+import java.util.Iterator;
+
+import org.eclipse.jface.util.LocalSelectionTransfer;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.TreeSelection;
 import org.eclipse.swt.dnd.DropTargetEvent;
 import org.eclipse.swt.dnd.DropTargetListener;
 
 import eu.etaxonomy.cdm.model.common.CdmBase;
-import eu.etaxonomy.taxeditor.dnd.transfer.TaxonNodeTransfer;
 import eu.etaxonomy.taxeditor.ui.group.grantedauthority.CdmAuthorityComposite;
 import eu.etaxonomy.taxeditor.ui.group.grantedauthority.CdmAuthorityCompositeViewer;
 
 /**
  * Drop listener for the {@link CdmAuthorityComposite}.
- * 
+ *
  * @author cmathew
  * @created Mar 28, 2013
  *
@@ -26,14 +30,14 @@ import eu.etaxonomy.taxeditor.ui.group.grantedauthority.CdmAuthorityCompositeVie
 public class CdmAuthorityTableDropTargetListener implements DropTargetListener {
 
        private CdmAuthorityCompositeViewer viewer;
-       
-       
+
+
        public CdmAuthorityTableDropTargetListener(CdmAuthorityCompositeViewer viewer) {
                this.viewer = viewer;
        }
 
        @Override
-       public void dragEnter(DropTargetEvent event) {                          
+       public void dragEnter(DropTargetEvent event) {
        }
 
        @Override
@@ -50,15 +54,18 @@ public class CdmAuthorityTableDropTargetListener implements DropTargetListener {
 
        @Override
        public void drop(DropTargetEvent dtevent) {
-               if(TaxonNodeTransfer.getInstance().isSupportedType(dtevent.currentDataType)) {
-                       Object[] selectedCdmBases = (Object[])dtevent.data;
-                       
-                       for (Object cdmBase : selectedCdmBases){
-                               if(CdmBase.class.isAssignableFrom(cdmBase.getClass()) ) {
-                                       viewer.addCdmAuthority((CdmBase)cdmBase);                                       
-                               }
-                       }
-               }               
+           ISelection selection = LocalSelectionTransfer.getTransfer().getSelection();
+        if (selection instanceof TreeSelection) {
+
+            Iterator<?> selectionIterator = ((TreeSelection) selection).iterator();
+
+            while (selectionIterator.hasNext()){
+                Object next = selectionIterator.next();
+                if(CdmBase.class.isAssignableFrom(next.getClass()) ) {
+                    viewer.addCdmAuthority((CdmBase)next);
+                }
+            }
+               }
        }
 
        @Override
index 850c8b4f44f603fd0d3b49ad93b8f63ce3b3a047..74485aa093925894c1d19bad4b60c3c060b55f09 100644 (file)
@@ -1,24 +1,27 @@
 /**
 * Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
+* 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.ui.group.grantedauthority;
 
+import org.eclipse.jface.util.LocalSelectionTransfer;
 import org.eclipse.nebula.widgets.compositetable.CompositeTable;
 import org.eclipse.nebula.widgets.compositetable.IRowContentProvider;
 import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.ScrolledComposite;
 import org.eclipse.swt.dnd.DND;
 import org.eclipse.swt.dnd.DropTarget;
 import org.eclipse.swt.dnd.Transfer;
 import org.eclipse.swt.events.DisposeEvent;
 import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Display;
@@ -26,15 +29,11 @@ import org.eclipse.swt.widgets.Label;
 import org.eclipse.ui.forms.widgets.FormToolkit;
 
 import eu.etaxonomy.taxeditor.dnd.CdmAuthorityTableDropTargetListener;
-import eu.etaxonomy.taxeditor.dnd.transfer.TaxonNodeTransfer;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
 
 /**
  * Composite class which consists of a {@link CompositeTable} built specifically
  * for creating / editing CDM Authority objects
- * 
+ *
  * @author cmathew
  * @created Mar 28, 2013
  *
@@ -44,40 +43,41 @@ public class CdmAuthorityComposite extends Composite {
 
        private final FormToolkit toolkit = new FormToolkit(Display.getCurrent());
        private CompositeTable table;
-       
+
        private int numOfInitialCdmAuthorities;
-       
+
        private CdmAuthorityCompositeViewer viewer;
-       
+
        private CdmAuthorityTableHeader cdmAuthorityTableHeader;
-       
+
 
        /**
         * Creates the composite using the given parent, style and associated viewer.
-        * 
+        *
         * @param parent composite to use as parent of this composite
-        * @param style 
+        * @param style
         * @param viewer viewer representing the model
         */
        public CdmAuthorityComposite(Composite parent, int style, final CdmAuthorityCompositeViewer viewer) {
                super(parent, SWT.NONE);
                addDisposeListener(new DisposeListener() {
-                       public void widgetDisposed(DisposeEvent e) {
+                       @Override
+            public void widgetDisposed(DisposeEvent e) {
                                toolkit.dispose();
                        }
                });
-               
+
                this.viewer = viewer;
-                               
+
                numOfInitialCdmAuthorities = viewer.getCdmAuthorities().size();
                setLayout(new GridLayout(2, false));
                setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-           Transfer[] transfers = new Transfer[] { TaxonNodeTransfer.getInstance() };     
-           
+           Transfer[] transfers = new Transfer[] { LocalSelectionTransfer.getTransfer() };
+
            toolkit.adapt(this);
                toolkit.paintBordersFor(this);
                new Label(this, SWT.NONE);
-               
+
                final Button cbShowUUIDheader = new Button(this, SWT.CHECK);
                cbShowUUIDheader.addSelectionListener(new SelectionAdapter() {
                        @Override
@@ -96,42 +96,43 @@ public class CdmAuthorityComposite extends Composite {
                table.setLayoutData(gd_table);
                cdmAuthorityTableHeader = new CdmAuthorityTableHeader(table, SWT.NULL);
                CdmAuthorityRow cdmAuthorityRow = new CdmAuthorityRow(table, SWT.NULL);
-               
+
                table.setRunTime(true);
                table.setNumRowsInCollection(numOfInitialCdmAuthorities);
-               table.setLinesVisible(true); 
-               
+               table.setLinesVisible(true);
+
                DropTarget dropTarget = new DropTarget(table, DND.DROP_MOVE);
                dropTarget.setTransfer(transfers);
                dropTarget.addDropListener(new CdmAuthorityTableDropTargetListener(viewer));
-               
-               
+
+
                table.addRowContentProvider(new IRowContentProvider() {
-                       public void refresh(CompositeTable sender, int currentObjectOffset, Control rowControl) {
-                               CdmAuthorityRow row = (CdmAuthorityRow) rowControl;             
+                       @Override
+            public void refresh(CompositeTable sender, int currentObjectOffset, Control rowControl) {
+                               CdmAuthorityRow row = (CdmAuthorityRow) rowControl;
                                // add the newly created authority objects first and then the already existing ones.
                                // this ensures the newly 'dragged' in objects always remain at the top
-                               if(currentObjectOffset < viewer.getNewCdmAuthorities().size()) {                        
-                                       row.setRowCdmAuthority(viewer, 
-                                                       viewer.getNewCdmAuthorities().get(currentObjectOffset), 
+                               if(currentObjectOffset < viewer.getNewCdmAuthorities().size()) {
+                                       row.setRowCdmAuthority(viewer,
+                                                       viewer.getNewCdmAuthorities().get(currentObjectOffset),
                                                        true,
                                                        cbShowUUIDheader.getSelection());
                                } else {
-                                       row.setRowCdmAuthority(viewer, 
-                                                       viewer.getCdmAuthorities().get(currentObjectOffset - viewer.getNewCdmAuthorities().size()), 
+                                       row.setRowCdmAuthority(viewer,
+                                                       viewer.getCdmAuthorities().get(currentObjectOffset - viewer.getNewCdmAuthorities().size()),
                                                        false,
                                                        cbShowUUIDheader.getSelection());
-                               }                                                                               
+                               }
                        }
                });
-       }       
+       }
 
        /**
         * Refreshes the table with underlying data
         */
-       public void refresh() {                 
-               numOfInitialCdmAuthorities = viewer.getNewCdmAuthorities().size() + viewer.getCdmAuthorities().size();                              
-           table.setNumRowsInCollection(numOfInitialCdmAuthorities);     
+       public void refresh() {
+               numOfInitialCdmAuthorities = viewer.getNewCdmAuthorities().size() + viewer.getCdmAuthorities().size();
+           table.setNumRowsInCollection(numOfInitialCdmAuthorities);
            table.refreshAllRows();
        }
 }