/**
* 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
*
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
@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
/**
* 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;
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
*
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
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();
}
}