eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientReferenceService.java -text
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientTaxonService.java -text
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientTermService.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/AmplificationTransfer.java -text
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/CreateDerivateContextMenu.java -text
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateContentProvider.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateDragListener.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateDropListener.java -text
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java -text
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateViewEditorInput.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/SingleReadTransfer.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/SpecimenOrObservationTransfer.java -text
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/DescriptionElementDragListener.java -text
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/DescriptionElementDropAdapter.java -text
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/DescriptionElementTransfer.java -text
--- /dev/null
+// $Id$
+/**
+* Copyright (C) 2014 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.view.derivate;
+
+import java.util.UUID;
+
+import eu.etaxonomy.cdm.api.service.IService;
+import eu.etaxonomy.cdm.model.molecular.Amplification;
+import eu.etaxonomy.taxeditor.model.CdmObjectTransfer;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+/**
+ * @author pplitzner
+ * @date 18.03.2014
+ *
+ */
+public class AmplificationTransfer extends CdmObjectTransfer<Amplification> {
+
+ private static AmplificationTransfer instance = new AmplificationTransfer();
+ private static final String TYPE_NAME = "amplification-transfer-format";
+ private static final int TYPEID = registerType(TYPE_NAME);
+
+ public static synchronized AmplificationTransfer getInstance(){
+ return instance;
+ }
+
+ private AmplificationTransfer(){}
+
+ /* (non-Javadoc)
+ * @see org.eclipse.swt.dnd.Transfer#getTypeIds()
+ */
+ @Override
+ protected int[] getTypeIds() {
+ return new int[] { TYPEID };
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.swt.dnd.Transfer#getTypeNames()
+ */
+ @Override
+ protected String[] getTypeNames() {
+ return new String[] { TYPE_NAME };
+ }
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.taxeditor.model.CdmObjectTransfer#loadElement(java.util.UUID)
+ */
+ @Override
+ public Amplification loadElement(UUID uuid) {
+ return (Amplification) CdmStore.getService(IService.class).load(uuid);
+ }
+}
--- /dev/null
+// $Id$
+/**
+ * Copyright (C) 2014 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.view.derivate;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.TreeNode;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.dnd.DragSourceAdapter;
+import org.eclipse.swt.dnd.DragSourceEvent;
+
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+
+/**
+ * @author pplitzner
+ * @date 18.03.2014
+ *
+ */
+public class DerivateDragListener extends DragSourceAdapter{
+
+ private final Viewer viewer;
+
+ /**
+ * @param viewer
+ */
+ public DerivateDragListener(Viewer viewer) {
+ this.viewer = viewer;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.swt.dnd.DragSourceAdapter#dragSetData(org.eclipse.swt.dnd.DragSourceEvent)
+ */
+ @Override
+ public void dragSetData(DragSourceEvent event) {
+ if (SpecimenOrObservationTransfer.getInstance().isSupportedType(event.dataType)) {
+
+ IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
+ List<SpecimenOrObservationBase<?>> specimens = new ArrayList<SpecimenOrObservationBase<?>>();
+
+ for (Object object : selection.toList()){
+ if(object instanceof TreeNode && ((TreeNode) object).getValue() instanceof SpecimenOrObservationBase<?>) {
+ Object value = ((TreeNode) object).getValue();
+ specimens.add((SpecimenOrObservationBase<?>) value);
+ }
+ }
+ event.data = specimens.toArray(new SpecimenOrObservationBase<?>[specimens.size()]);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.swt.dnd.DragSourceAdapter#dragStart(org.eclipse.swt.dnd.DragSourceEvent)
+ */
+ @Override
+ public void dragStart(DragSourceEvent event) {
+ ISelection selection = viewer.getSelection();
+ if(selection instanceof IStructuredSelection
+ && ((IStructuredSelection) selection).size()==1
+ && ((IStructuredSelection) selection).getFirstElement() instanceof TreeNode
+ && ((TreeNode) ((IStructuredSelection) selection).getFirstElement()).getValue() instanceof SpecimenOrObservationBase<?>){
+ event.doit = true;
+ }
+ else{
+ event.doit = false;
+ }
+ }
+}
--- /dev/null
+// $Id$
+/**
+* Copyright (C) 2014 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.view.derivate;
+
+import org.eclipse.jface.viewers.TreeNode;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerDropAdapter;
+import org.eclipse.swt.dnd.DropTargetEvent;
+import org.eclipse.swt.dnd.TransferData;
+import org.eclipse.swt.widgets.TreeItem;
+
+import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;
+import eu.etaxonomy.cdm.model.occurrence.DerivationEventType;
+import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+
+/**
+ * @author pplitzner
+ * @date 18.03.2014
+ *
+ */
+public class DerivateDropListener extends ViewerDropAdapter {
+
+ /**
+ * @param viewer
+ */
+ protected DerivateDropListener(Viewer viewer) {
+ super(viewer);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ViewerDropAdapter#performDrop(java.lang.Object)
+ */
+ @Override
+ public boolean performDrop(Object data) {
+
+// TermBase target = (TermBase) getCurrentTarget();//can be vocab
+// //DefinedTermBase[] droppedElements = (DefinedTermBase[]) data;
+// Object[] droppedTerms = (Object[]) data;
+// Collection<DefinedTermBase> sourceTerms = new ArrayList<DefinedTermBase>(); //Arrays.asList(droppedElements)
+//
+// for (Object droppedTerm : droppedTerms) {
+//
+// DefinedTermBase term = (DefinedTermBase) droppedTerm;
+// sourceTerms.add(term);
+//
+// }
+//
+// AbstractPostOperation operation = new MoveDefinedTermOperation("Move Descriptions", StoreUtil.getUndoContext(), target, sourceTerms, editor);
+ // //TODO: implement execute
+ // AbstractUtility.executeOperation(operation);
+ Object target = getCurrentTarget();
+ if(target instanceof TreeNode){
+ Object targetDerivate = ((TreeNode) target).getValue();
+ if(data instanceof Object[]){
+ Object[] droppedElements = (Object[])data;
+ for (Object droppedElement:droppedElements) {
+ //performDrop();
+ if(droppedElement instanceof DerivedUnit && targetDerivate instanceof SpecimenOrObservationBase<?>){
+ SpecimenOrObservationBase<?> originSpecimen = (SpecimenOrObservationBase<?>)targetDerivate;
+ DerivedUnit derivedSpecimen = (DerivedUnit)droppedElement;
+ originSpecimen.addDerivationEvent(DerivationEvent.NewSimpleInstance(originSpecimen, derivedSpecimen, DerivationEventType.GATHERING_IN_SITU()));
+ System.out.println("Add Derivate: " + droppedElement.getClass().getSimpleName() + " to " + targetDerivate.getClass().getSimpleName());
+ }
+ System.out.println("Drop: " + droppedElement.getClass().getSimpleName() + " to " + targetDerivate.getClass().getSimpleName());
+ }
+ }
+ return true;
+ }
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ViewerDropAdapter#validateDrop(java.lang.Object, int, org.eclipse.swt.dnd.TransferData)
+ */
+ @Override
+ public boolean validateDrop(Object target, int operation, TransferData transferType) {
+ if(SpecimenOrObservationTransfer.getInstance().isSupportedType(transferType)
+ && target instanceof TreeNode){
+ Object value = ((TreeNode) target).getValue();
+ return checkDropTarget(value);
+ }
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ViewerDropAdapter#dragOver(org.eclipse.swt.dnd.DropTargetEvent)
+ */
+ @Override
+ public void dragOver(DropTargetEvent event) {
+ Object draggedDerivate = getCurrentTarget();
+
+ Object targetItem = event.item;
+// System.out.println(event);
+ if(targetItem instanceof TreeItem){
+ TreeItem treeItem = (TreeItem)targetItem;
+// System.out.println(treeItem.getData());
+// System.out.println("Drag over: " + draggedDerivate.getClass().getSimpleName() + " to " + targetItem.getClass().getSimpleName());
+ }
+ super.dragOver(event);
+ }
+
+
+
+ /**
+ * @param value
+ * @return
+ */
+ private boolean checkDropTarget(Object value) {
+ // TODO Auto-generated method stub
+ return true;
+ }
+}
import org.eclipse.jface.viewers.TreeNode;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.Transfer;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Menu;
private boolean isDirty;
+ private final int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK;
+
/* (non-Javadoc)
* @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
*/
viewer.setInput(editorInput);
if(editorInput instanceof DerivateViewEditorInput){
SpecimenOrObservationBase<?> specimen = ((DerivateViewEditorInput) editorInput).getDerivate();
- SpecimenOrObservationBase rootElement = ((DerivateViewEditorInput) editorInput).getRootElement();
+ SpecimenOrObservationBase<?> rootElement = ((DerivateViewEditorInput) editorInput).getRootElement();
setPartName(rootElement.toString());
viewer.setSelection(new StructuredSelection(new TreeNode(specimen)));
}
+
+ //add drag'n'drop support
+ Transfer[] transfers = new Transfer[] {
+ SpecimenOrObservationTransfer.getInstance(),
+// SingleReadTransfer.getInstance(),
+// AmplificationTransfer.getInstance()
+ };
+ viewer.addDragSupport(dndOperations, transfers, new DerivateDragListener(viewer));
+ viewer.addDropSupport(dndOperations, transfers, new DerivateDropListener(viewer));
}
/* (non-Javadoc)
--- /dev/null
+// $Id$
+/**
+* Copyright (C) 2014 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.view.derivate;
+
+import java.util.UUID;
+
+import eu.etaxonomy.cdm.api.service.IAnnotatableService;
+import eu.etaxonomy.cdm.model.molecular.SingleRead;
+import eu.etaxonomy.taxeditor.model.CdmObjectTransfer;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+/**
+ * @author pplitzner
+ * @date 18.03.2014
+ *
+ */
+public class SingleReadTransfer extends CdmObjectTransfer<SingleRead> {
+
+ private static SingleReadTransfer instance = new SingleReadTransfer();
+ private static final String TYPE_NAME = "singleRead-transfer-format";
+ private static final int TYPEID = registerType(TYPE_NAME);
+
+ public static synchronized SingleReadTransfer getInstance(){
+ return instance;
+ }
+
+ private SingleReadTransfer(){}
+
+ /* (non-Javadoc)
+ * @see org.eclipse.swt.dnd.Transfer#getTypeIds()
+ */
+ @Override
+ protected int[] getTypeIds() {
+ return new int[] { TYPEID };
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.swt.dnd.Transfer#getTypeNames()
+ */
+ @Override
+ protected String[] getTypeNames() {
+ return new String[] { TYPE_NAME };
+ }
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.taxeditor.model.CdmObjectTransfer#loadElement(java.util.UUID)
+ */
+ @Override
+ public SingleRead loadElement(UUID uuid) {
+ IAnnotatableService service = CdmStore.getService(IAnnotatableService.class);
+ System.out.println(service);
+ return (SingleRead) service.load(uuid);
+ }
+}
--- /dev/null
+// $Id$
+/**
+* Copyright (C) 2014 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.view.derivate;
+
+import java.util.UUID;
+
+import eu.etaxonomy.cdm.api.service.IOccurrenceService;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+import eu.etaxonomy.taxeditor.model.CdmObjectTransfer;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+/**
+ * @author pplitzner
+ * @date 18.03.2014
+ *
+ */
+public class SpecimenOrObservationTransfer extends CdmObjectTransfer<SpecimenOrObservationBase<?>> {
+
+ private static SpecimenOrObservationTransfer instance = new SpecimenOrObservationTransfer();
+ private static final String TYPE_NAME = "derivate-transfer-format";
+ private static final int TYPEID = registerType(TYPE_NAME);
+
+ public static synchronized SpecimenOrObservationTransfer getInstance(){
+ return instance;
+ }
+
+ private SpecimenOrObservationTransfer(){}
+
+ /* (non-Javadoc)
+ * @see org.eclipse.swt.dnd.Transfer#getTypeIds()
+ */
+ @Override
+ protected int[] getTypeIds() {
+ return new int[] { TYPEID };
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.swt.dnd.Transfer#getTypeNames()
+ */
+ @Override
+ protected String[] getTypeNames() {
+ return new String[] { TYPE_NAME };
+ }
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.taxeditor.model.CdmObjectTransfer#loadElement(java.util.UUID)
+ */
+ @Override
+ public SpecimenOrObservationBase<?> loadElement(UUID uuid) {
+ return CdmStore.getService(IOccurrenceService.class).load(uuid);
+ }
+}