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/CopySingleReadCommand.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/PasteDerivateCommand.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
id="eu.etaxonomy.taxeditor.editor.view.derivate.CreateDerivateContextMenu">
</dynamic>
</menu>
+ <command
+ commandId="eu.etaxonomy.taxeditor.editor.copySingleRead"
+ label="Copy"
+ style="push">
+ </command>
+ <command
+ commandId="eu.etaxonomy.taxeditor.editor.pasteDerivate"
+ label="Paste"
+ style="push">
+ </command>
</menuContribution>
<menuContribution
locationURI="popup:eu.etaxonomy.taxeditor.editor.view.dataimport.SpecimenImportEditor">
id="eu.etaxonomy.taxeditor.editor.view.dataimport.SaveSpecimenCommand"
name="Save Specimen">
</command>
+ <command
+ defaultHandler="eu.etaxonomy.taxeditor.editor.view.derivate.CopySingleReadCommand"
+ id="eu.etaxonomy.taxeditor.editor.copySingleRead"
+ name="Copy SingleRead">
+ </command>
+ <command
+ defaultHandler="eu.etaxonomy.taxeditor.editor.view.derivate.PasteDerivateCommand"
+ id="eu.etaxonomy.taxeditor.editor.pasteDerivate"
+ name="Paste">
+ </command>
</extension>
<extension
point="org.eclipse.core.expressions.definitions">
--- /dev/null
+package eu.etaxonomy.taxeditor.editor.view.derivate;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.util.LocalSelectionTransfer;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.ui.PlatformUI;
+
+public class CopySingleReadCommand extends AbstractHandler {
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ final ISelection selection = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getSelection();
+ LocalSelectionTransfer.getTransfer().setSelection(selection);
+ return null;
+ }
+
+}
else if(selectedTreeNode.getValue() instanceof Sequence){
createMenuItem(menu, "Single Read", selectedTreeNode, SingleRead.class, null);
}
-// //context menu for SingleRead
-// else if(selectedTreeNode.getValue() instanceof SingleRead && !(selectedTreeNode.getParent().getValue() instanceof Amplification)){
-// createMenuItem(menu, "Amplification (will be a parent node)", selectedTreeNode, Amplification.class, null);
-// }
//default
else{
MenuItem menuItem = new MenuItem(menu, SWT.NONE);
Object selectedDerivate = selectedNode.getValue();
if(selectedDerivate instanceof DnaSample){
DnaSample dnaSample = (DnaSample)selectedDerivate;
-// if(childClass.equals(Amplification.class)){
-// Amplification.NewInstance(dnaSample);
-// }
-// else
- if(childClass.equals(Sequence.class)){
+ if(childClass.equals(Sequence.class)){
dnaSample.addSequence(Sequence.NewInstance(""));//why does this not have DnaSample as constructor parameter?
}
}
-// else if(selectedDerivate instanceof Amplification){
-// ((Amplification) selectedDerivate).addSingleRead(SingleRead.NewInstance());
-// }
else if(selectedDerivate instanceof Sequence){
((Sequence) selectedDerivate).addSingleRead(SingleRead.NewInstance());
}
-// else if(selectedDerivate instanceof SingleRead){
-// TreeNode parentNode = selectedNode.getParent();
-// while(parentNode!=null && !(parentNode.getValue() instanceof DnaSample)){
-// parentNode = parentNode.getParent();
-// }
-// if(parentNode!=null && parentNode.getValue() instanceof DnaSample){
-// DnaSample dnaSample = (DnaSample)parentNode.getValue();
-// Amplification amplification = Amplification.NewInstance(dnaSample);
-// dnaSample.addAmplification(amplification);
-// amplification.addSingleRead((SingleRead) selectedDerivate);
-// }
-// }
else if(selectedDerivate instanceof SpecimenOrObservationBase && DerivedUnit.class.isAssignableFrom(childClass)){
SpecimenOrObservationBase<?> specimenOrObservationBase = (SpecimenOrObservationBase<?>)selectedDerivate;
DerivedUnit derivedUnit;
if(activePart instanceof DerivateView){
DerivateView derivateView = (DerivateView)activePart;
derivateView.changed(null);
- derivateView.viewer.refresh();
+ derivateView.getViewer().refresh();
}
}
// TODO Auto-generated method stub
}
-
}
}
}
return children.toArray();
}
-// else if(value instanceof Amplification){
-// if(parentNode!=null && parentNode.getValue() instanceof Sequence){
-// Set<SingleRead> amplificationSingleReads = ((Amplification) value).getSingleReads();
-// Set<SingleRead> sequenceSingleReads = ((Sequence)parentNode.getValue()).getSingleReads();
-// for(SingleRead amplificationSingleRead:amplificationSingleReads){
-// if(sequenceSingleReads.contains(amplificationSingleRead)){
-// TreeNode node = new TreeNode(amplificationSingleRead);
-// node.setParent(currentnode);
-// children.add(node);
-// }
-// }
-// return children.toArray();
-// }
-// }
else if(value instanceof Sequence){
Set<SingleRead> singleReads = ((Sequence) value).getSingleReads();
for(SingleRead singleRead:singleReads){
-// // if the single read has an amplification then show the amplification as the direct child
-// // (and the single read as child of the amplification)
-// if(singleRead.getAmplification()!=null){
-// TreeNode node = new TreeNode(singleRead.getAmplification());
-// node.setParent(currentnode);
-// children.add(node);
-// }
-// else{
- TreeNode node = new TreeNode(singleRead);
- node.setParent(currentnode);
- children.add(node);
-// }
+ TreeNode node = new TreeNode(singleRead);
+ node.setParent(currentnode);
+ children.add(node);
}
return children.toArray();
}
return true;
}
}
-// else if(element instanceof Amplification){
-// Amplification amplification = (Amplification)element;
-// return !amplification.getSingleReads().isEmpty();
-// }
else if(element instanceof Sequence){
return !((Sequence)element).getSingleReads().isEmpty();
}
import org.eclipse.swt.dnd.TransferData;
import eu.etaxonomy.cdm.api.service.IOccurrenceService;
-import eu.etaxonomy.cdm.api.service.molecular.IAmplificationService;
import eu.etaxonomy.cdm.api.service.molecular.ISequenceService;
-import eu.etaxonomy.cdm.model.molecular.Amplification;
import eu.etaxonomy.cdm.model.molecular.DnaSample;
import eu.etaxonomy.cdm.model.molecular.Sequence;
import eu.etaxonomy.cdm.model.molecular.SingleRead;
* @param derivateView
*/
protected DerivateDropListener(DerivateView derivateView) {
- super(derivateView.viewer);
+ super(derivateView.getViewer());
this.derivateView = derivateView;
}
if(target instanceof TreeNode && data instanceof IStructuredSelection && ((IStructuredSelection) data).size()==1 && ((IStructuredSelection) data).getFirstElement() instanceof TreeNode){
TreeNode targetNode = (TreeNode) target;
TreeNode draggednode = (TreeNode) ((IStructuredSelection) data).getFirstElement();
- if(moveDropTarget(draggednode, targetNode)){
- derivateView.viewer.setInput(derivateView.getEditorInput());
+ if(moveTreeNode(draggednode, targetNode)){
+ derivateView.getViewer().setInput(derivateView.getEditorInput());
+ LocalSelectionTransfer.getTransfer().setSelection(null);
return true;
}
}
*/
@Override
public boolean validateDrop(Object target, int operation, TransferData transferType) {
- System.out.println("VAL");
return LocalSelectionTransfer.getTransfer().isSupportedType(transferType) && target instanceof TreeNode;
}
* @param value
* @return
*/
- private boolean moveDropTarget(TreeNode draggedObject, TreeNode target) {
- Object dragValue = draggedObject.getValue();
- Object targetValue = target.getValue();
- TreeNode dragParentNode = draggedObject.getParent();
- Object dragParentSpecimen = dragParentNode.getValue();
+ private boolean moveTreeNode(TreeNode from, TreeNode to) {
+ Object fromValue = from.getValue();
+ Object toValue = to.getValue();
+ TreeNode fromParentNode = from.getParent();
+ Object fromParentSpecimen = fromParentNode.getValue();
// drag'n'drop for SpecimenOrObservationBase
- if(dragValue instanceof DerivedUnit && targetValue instanceof SpecimenOrObservationBase<?>){
- DerivedUnit draggedSpecimen = (DerivedUnit) dragValue;
- SpecimenOrObservationBase<?> targetSpecimen = (SpecimenOrObservationBase<?>) targetValue;
+ if(fromValue instanceof DerivedUnit && toValue instanceof SpecimenOrObservationBase<?>){
+ DerivedUnit draggedSpecimen = (DerivedUnit) fromValue;
+ SpecimenOrObservationBase<?> targetSpecimen = (SpecimenOrObservationBase<?>) toValue;
//check if type is a sub derivate type
- if(!dragParentNode.equals(target)//don't drag on direct parent node
- && dragParentSpecimen instanceof SpecimenOrObservationBase<?>){
- CdmStore.getService(IOccurrenceService.class).moveDerivate((SpecimenOrObservationBase<?>)dragParentSpecimen, targetSpecimen, draggedSpecimen);
+ if(!fromParentNode.equals(to)//don't drag on direct parent node
+ && fromParentSpecimen instanceof SpecimenOrObservationBase<?>){
+ CdmStore.getService(IOccurrenceService.class).moveDerivate((SpecimenOrObservationBase<?>)fromParentSpecimen, targetSpecimen, draggedSpecimen);
return true;
}
}
// drag'n'drop for SingleRead
- else if(dragValue instanceof SingleRead && (targetValue instanceof Amplification || targetValue instanceof Sequence)){
- SingleRead singleRead = (SingleRead) dragValue;
- //amplification -> amplification
- if(dragParentSpecimen instanceof Amplification && targetValue instanceof Amplification){
- if(((Amplification) dragParentSpecimen).getSingleReads().size()>1){
- CdmStore.getService(IAmplificationService.class).moveSingleRead((Amplification)dragParentSpecimen, (Amplification)targetValue, singleRead);
- }
- }
- //amplification -> sequence
- else if(dragParentSpecimen instanceof Amplification && targetValue instanceof Sequence){
- //TODO: what does the user expect?
- }
- //sequence -> sequence
- else if(dragParentSpecimen instanceof Sequence && targetValue instanceof Sequence){
- CdmStore.getService(ISequenceService.class).moveSingleRead((Sequence)dragParentSpecimen, (Sequence)targetValue, singleRead);
- }
- //sequence -> amplification
- else if(dragParentSpecimen instanceof Sequence && targetValue instanceof Amplification){
- //TODO: what does the user expect?
+ else if(fromValue instanceof SingleRead && toValue instanceof Sequence){
+ SingleRead singleRead = (SingleRead) fromValue;
+ if(fromParentSpecimen instanceof Sequence){
+ CdmStore.getService(ISequenceService.class).moveSingleRead((Sequence)fromParentSpecimen, (Sequence)toValue, singleRead);
}
return true;
}
// drag'n'drop for Sequence
- else if(dragValue instanceof Sequence && targetValue instanceof DnaSample ){
- Sequence sequence = (Sequence)dragValue;
- if(dragParentSpecimen instanceof DnaSample){
- CdmStore.getService(IOccurrenceService.class).moveSequence((DnaSample)dragParentSpecimen, (DnaSample)targetValue, sequence);
+ else if(fromValue instanceof Sequence && toValue instanceof DnaSample ){
+ Sequence sequence = (Sequence)fromValue;
+ if(fromParentSpecimen instanceof DnaSample){
+ CdmStore.getService(IOccurrenceService.class).moveSequence((DnaSample)fromParentSpecimen, (DnaSample)toValue, sequence);
return true;
}
}
private ConversationHolder conversation;
- protected TreeViewer viewer;
+ private TreeViewer viewer;
private boolean isDirty;
//create context menu
MenuManager menuManager = new MenuManager();
-
getSite().registerContextMenu(menuManager, viewer);
-
Control control = viewer.getControl();
Menu menu = menuManager.createContextMenu(control);
-
control.setMenu(menu);
IEditorInput editorInput = getEditorInput();
return conversation;
}
+ /**
+ * @return the viewer
+ */
+ public TreeViewer getViewer() {
+ return viewer;
+ }
+
/* (non-Javadoc)
* @see eu.etaxonomy.taxeditor.model.IDirtyMarkableSelectionProvider#changed(java.lang.Object)
*/
--- /dev/null
+package eu.etaxonomy.taxeditor.editor.view.derivate;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.util.LocalSelectionTransfer;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.TreeNode;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PlatformUI;
+
+import eu.etaxonomy.cdm.api.service.molecular.ISequenceService;
+import eu.etaxonomy.cdm.model.molecular.Sequence;
+import eu.etaxonomy.cdm.model.molecular.SingleRead;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+public class PasteDerivateCommand extends AbstractHandler {
+
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ IEditorPart activeEditor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
+ if(activeEditor.isDirty()){
+ AbstractUtility.warningDialog("View has unsaved changes", this, "You need to save before performing this action");
+ return null;
+ }
+ ISelection clipBoardSelection = LocalSelectionTransfer.getTransfer().getSelection();
+ final ISelection pasteSelection = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getSelection();
+
+ if(clipBoardSelection instanceof IStructuredSelection && pasteSelection instanceof IStructuredSelection
+ && ((IStructuredSelection) clipBoardSelection).size()==1 && ((IStructuredSelection) pasteSelection).size()==1
+ && ((IStructuredSelection) clipBoardSelection).getFirstElement() instanceof TreeNode
+ && ((IStructuredSelection) pasteSelection).getFirstElement() instanceof TreeNode){
+ TreeNode clipBoardTreeNode = ((TreeNode) ((IStructuredSelection) clipBoardSelection).getFirstElement());
+ TreeNode pasteTreeNode = ((TreeNode) ((IStructuredSelection) pasteSelection).getFirstElement());
+ if(clipBoardTreeNode.getValue() instanceof SingleRead && pasteTreeNode.getValue() instanceof Sequence){
+ SingleRead singleRead = (SingleRead)clipBoardTreeNode.getValue();
+ Sequence sequence = (Sequence)pasteTreeNode.getValue();
+ sequence.addSingleRead(singleRead);
+ CdmStore.getService(ISequenceService.class).saveOrUpdate(sequence);
+ if(activeEditor instanceof DerivateView) {
+ ((DerivateView) activeEditor).changed(null);
+ }
+ }
+ }
+ return null;
+ }
+
+}
else if(element instanceof Sequence){
return ImageResources.getImage(ImageResources.SEQUENCE_DERIVATE);
}
-// else if(element instanceof Amplification){
-// return ImageResources.getImage(ImageResources.AMPLIFICATION_DERIVATE);
-// }
else if(element instanceof SingleRead){
return ImageResources.getImage(ImageResources.SINGLE_READ_DERIVATE);
}