import org.eclipse.e4.ui.di.Persist;
import org.eclipse.e4.ui.model.application.ui.MDirtyable;
import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.jface.util.LocalSelectionTransfer;
+import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.Transfer;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
import eu.etaxonomy.cdm.model.location.NamedArea;
import eu.etaxonomy.cdm.model.name.Rank;
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
import eu.etaxonomy.cdm.model.taxon.Taxon;
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
import eu.etaxonomy.taxeditor.store.CdmStore;
private WorkingSet workingSet;
+ private final int dndOperations = DND.DROP_MOVE;
+
@Inject
private MDirtyable dirty;
- private Listener nameAreaSelectionListener;
-
private ModifyListener labelModifyListener;
@PostConstruct
}
dirty.setDirty(true);
});
+
+ //add drag'n'drop support
+ Transfer[] transfers = new Transfer[] {LocalSelectionTransfer.getTransfer()};
+ composite.getTaxonNodeTree().addDropSupport(dndOperations, transfers, new TaxonNodeDropAdapter(this));
+
}
public void init(UUID workingSetUuid) {
if(area!=null){
areas.add(area);
}
- TaxonNode taxonNode = composite.getTaxonNode();
- Set<NamedArea> descriptions;
- if(taxonNode!=null && taxonNode.getTaxon()!=null){
- Taxon taxon = HibernateProxyHelper.deproxy(taxonNode.getTaxon(), Taxon.class);
- Collection<SpecimenOrObservationBase> specimens = CdmStore.getService(IOccurrenceService.class).listByAssociatedTaxon(SpecimenOrObservationBase.class, null, taxon, null, null, null, null, null);
- for (SpecimenOrObservationBase specimen : specimens) {
- Set<SpecimenDescription> specimenDescriptions = specimen.getSpecimenDescriptions();
- for (SpecimenDescription specimenDescription : specimenDescriptions) {
- workingSet.addDescription(specimenDescription);
+ Object input = composite.getTaxonNodeTree().getInput();
+ if(input!=null){
+ Collection<ITaxonTreeNode> taxonNodes = (Collection<ITaxonTreeNode>) input;
+ for (ITaxonTreeNode taxonTreeNode : taxonNodes) {
+ if(taxonTreeNode instanceof TaxonNode){
+ TaxonNode taxonNode = (TaxonNode)taxonTreeNode;
+ workingSet.addTaxonSubtree(taxonNode);
+ Set<NamedArea> descriptions;
+ if(taxonNode!=null && taxonNode.getTaxon()!=null){
+ Taxon taxon = HibernateProxyHelper.deproxy(taxonNode.getTaxon(), Taxon.class);
+ Collection<SpecimenOrObservationBase> specimens = CdmStore.getService(IOccurrenceService.class).listByAssociatedTaxon(SpecimenOrObservationBase.class, null, taxon, null, null, null, null, null);
+ for (SpecimenOrObservationBase specimen : specimens) {
+ Set<SpecimenDescription> specimenDescriptions = specimen.getSpecimenDescriptions();
+ for (SpecimenDescription specimenDescription : specimenDescriptions) {
+ workingSet.addDescription(specimenDescription);
+ }
+ }
+ }
}
}
}
workingSet.setMaxRank(rankMax);
workingSet.setMinRank(rankMin);
workingSet.setDescriptiveSystem(characters);
- workingSet.addTaxonSubtree(taxonNode);
workingSet.setGeoFilter(areas);
conversation.commit();
}
}
+ public Viewer getTaxonTreeViewer() {
+ return composite.getTaxonNodeTree();
+ }
+
}