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/DerivateViewContextMenu.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/DerivateViewPropertyTester.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/derivate/SingleReadSequenceContextMenu.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/command/CopySingleReadCommand.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/command/PasteSingleReadCommand.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/command/UnlinkSingleReadCommand.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
</menuContribution>
<menuContribution
locationURI="popup:eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView">
- <menu
- label="Add...">
- <dynamic
- class="eu.etaxonomy.taxeditor.editor.view.derivate.CreateDerivateContextMenu"
- id="eu.etaxonomy.taxeditor.editor.view.derivate.CreateDerivateContextMenu">
- </dynamic>
- </menu>
+ <dynamic
+ class="eu.etaxonomy.taxeditor.editor.view.derivate.DerivateViewContextMenu"
+ id="eu.etaxonomy.taxeditor.editor.view.derivate.DerivateContextMenu">
+ </dynamic>
<command
- commandId="eu.etaxonomy.taxeditor.editor.copySingleRead"
- label="Copy"
+ commandId="eu.etaxonomy.taxeditor.editor.view.derivate.copySingleRead"
+ label="Reuse for other Sequence"
style="push">
<visibleWhen
checkEnabled="true">
</visibleWhen>
</command>
<command
- commandId="eu.etaxonomy.taxeditor.editor.pasteDerivate"
- label="Paste"
+ commandId="eu.etaxonomy.taxeditor.editor.view.derivate.pasteSingleRead"
+ label="Reuse Single Read here"
style="push">
<visibleWhen
checkEnabled="true">
</reference>
</visibleWhen>
</command>
+ <command
+ commandId="eu.etaxonomy.taxeditor.editor.view.derivate.unlinkSingleRead"
+ label="Remove SingleRead from Sequence"
+ style="push">
+ <visibleWhen
+ checkEnabled="true">
+ <reference
+ definitionId="isMultiLinkedSingleRead">
+ </reference>
+ </visibleWhen>
+ </command>
</menuContribution>
<menuContribution
locationURI="popup:eu.etaxonomy.taxeditor.editor.view.dataimport.SpecimenImportEditor">
name="Save Specimen">
</command>
<command
- defaultHandler="eu.etaxonomy.taxeditor.editor.view.derivate.CopySingleReadCommand"
- id="eu.etaxonomy.taxeditor.editor.copySingleRead"
+ defaultHandler="eu.etaxonomy.taxeditor.editor.view.derivate.command.CopySingleReadCommand"
+ id="eu.etaxonomy.taxeditor.editor.view.derivate.copySingleRead"
name="Copy SingleRead">
</command>
<command
- defaultHandler="eu.etaxonomy.taxeditor.editor.view.derivate.PasteDerivateCommand"
- id="eu.etaxonomy.taxeditor.editor.pasteDerivate"
- name="Paste">
+ defaultHandler="eu.etaxonomy.taxeditor.editor.view.derivate.command.PasteSingleReadCommand"
+ id="eu.etaxonomy.taxeditor.editor.view.derivate.pasteSingleRead"
+ name="Paste SingleRead">
+ </command>
+ <command
+ defaultHandler="eu.etaxonomy.taxeditor.editor.view.derivate.command.UnlinkSingleReadCommand"
+ id="eu.etaxonomy.taxeditor.editor.view.derivate.unlinkSingleRead"
+ name="Unlink SingleRead">
</command>
+
</extension>
<extension
point="org.eclipse.core.expressions.definitions">
</test>
</with>
</definition>
+ <definition
+ id="isMultiLinkedSingleRead">
+ <with
+ variable="selection">
+ <test
+ property="eu.etaxonomy.taxeditor.editor.view.derivate.DerivateViewPropertyTester.isMultiLinkedSingleRead">
+ </test>
+ </with>
+ </definition>
</extension>
<extension
point="org.eclipse.core.expressions.propertyTesters">
import org.eclipse.jface.action.ContributionItem;
import org.eclipse.jface.action.IContributionItem;
import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.TreeNode;
-import org.eclipse.jface.viewers.TreeSelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import eu.etaxonomy.cdm.model.occurrence.MediaSpecimen;
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
import eu.etaxonomy.taxeditor.model.AbstractUtility;
/**
new ContributionItem() {
@Override
public void fill(Menu menu, int index) {
+ MenuItem addItem = new MenuItem(menu, SWT.CASCADE);
+ addItem.setText("Add...");
+ Menu addMenu = new Menu(menu);
+ addItem.setMenu(addMenu);
final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
final ISelection selection = window.getActivePage().getSelection();
- if(selection instanceof TreeSelection && ((TreeSelection) selection).getFirstElement() instanceof TreeNode){
- TreeNode selectedTreeNode = (TreeNode) ((StructuredSelection) selection).getFirstElement();
+ TreeNode selectedTreeNode = EditorUtil.getTreeNodeValueOfSelection(selection);
+ if(selectedTreeNode!=null){
//context menu for FieldUnit
if(selectedTreeNode.getValue() instanceof FieldUnit){
- createMenuItem(menu, "Specimen", selectedTreeNode, DerivedUnit.class, SpecimenOrObservationType.PreservedSpecimen);
- new MenuItem(menu, SWT.SEPARATOR);
- createMenuItem(menu, "Tissue Sample", selectedTreeNode, DerivedUnit.class, SpecimenOrObservationType.TissueSample);
- createMenuItem(menu, "DNA Sample", selectedTreeNode, DnaSample.class, SpecimenOrObservationType.DnaSample);
- createMenuItem(menu, "Specimen Scan", selectedTreeNode, MediaSpecimen.class, SpecimenOrObservationType.StillImage);
- createMenuItem(menu, "Artwork", selectedTreeNode, MediaSpecimen.class, SpecimenOrObservationType.StillImage);
- createMenuItem(menu, "Living Plant Photo", selectedTreeNode, MediaSpecimen.class, SpecimenOrObservationType.StillImage);
+ createMenuItem(addMenu, "Specimen", selectedTreeNode, DerivedUnit.class, SpecimenOrObservationType.PreservedSpecimen);
+ new MenuItem(addMenu, SWT.SEPARATOR);
+ createMenuItem(addMenu, "Tissue Sample", selectedTreeNode, DerivedUnit.class, SpecimenOrObservationType.TissueSample);
+ createMenuItem(addMenu, "DNA Sample", selectedTreeNode, DnaSample.class, SpecimenOrObservationType.DnaSample);
+ createMenuItem(addMenu, "Specimen Scan", selectedTreeNode, MediaSpecimen.class, SpecimenOrObservationType.StillImage);
+ createMenuItem(addMenu, "Artwork", selectedTreeNode, MediaSpecimen.class, SpecimenOrObservationType.StillImage);
+ createMenuItem(addMenu, "Living Plant Photo", selectedTreeNode, MediaSpecimen.class, SpecimenOrObservationType.StillImage);
}
//context menu for Specimen
else if(selectedTreeNode.getValue() instanceof DerivedUnit && ((DerivedUnit)selectedTreeNode.getValue()).getRecordBasis()==SpecimenOrObservationType.PreservedSpecimen){
- createMenuItem(menu, "Tissue Sample", selectedTreeNode, DerivedUnit.class, SpecimenOrObservationType.TissueSample);
- createMenuItem(menu, "DNA Sample", selectedTreeNode, DnaSample.class, SpecimenOrObservationType.DnaSample);
- createMenuItem(menu, "Specimen Scan", selectedTreeNode, MediaSpecimen.class, SpecimenOrObservationType.StillImage);
- createMenuItem(menu, "Artwork", selectedTreeNode, MediaSpecimen.class, SpecimenOrObservationType.StillImage);
- createMenuItem(menu, "Living Plant Photo", selectedTreeNode, MediaSpecimen.class, SpecimenOrObservationType.StillImage);
+ createMenuItem(addMenu, "Tissue Sample", selectedTreeNode, DerivedUnit.class, SpecimenOrObservationType.TissueSample);
+ createMenuItem(addMenu, "DNA Sample", selectedTreeNode, DnaSample.class, SpecimenOrObservationType.DnaSample);
+ createMenuItem(addMenu, "Specimen Scan", selectedTreeNode, MediaSpecimen.class, SpecimenOrObservationType.StillImage);
+ createMenuItem(addMenu, "Artwork", selectedTreeNode, MediaSpecimen.class, SpecimenOrObservationType.StillImage);
+ createMenuItem(addMenu, "Living Plant Photo", selectedTreeNode, MediaSpecimen.class, SpecimenOrObservationType.StillImage);
}
//context menu for TissueSample
else if(selectedTreeNode.getValue() instanceof DerivedUnit && ((DerivedUnit)selectedTreeNode.getValue()).getRecordBasis()==SpecimenOrObservationType.TissueSample){
- createMenuItem(menu, "DnaSample", selectedTreeNode, DnaSample.class, null);
+ createMenuItem(addMenu, "DnaSample", selectedTreeNode, DnaSample.class, null);
}
//context menu for DnaSample
else if(selectedTreeNode.getValue() instanceof DnaSample){
- createMenuItem(menu, "Consensus Sequence", selectedTreeNode, Sequence.class, null);
+ createMenuItem(addMenu, "Consensus Sequence", selectedTreeNode, Sequence.class, null);
}
//context menu for Sequence
else if(selectedTreeNode.getValue() instanceof Sequence){
- createMenuItem(menu, "Single Read", selectedTreeNode, SingleRead.class, null);
+ createMenuItem(addMenu, "Single Read", selectedTreeNode, SingleRead.class, null);
}
//default
else{
- MenuItem menuItem = new MenuItem(menu, SWT.NONE);
+ MenuItem menuItem = new MenuItem(addMenu, SWT.NONE);
menuItem.setText("No child derivates");
menuItem.setEnabled(false);
}
}
}
- private void createMenuItem(Menu menu, String menuLabel, TreeNode selectedNode, Class<?> childClass, SpecimenOrObservationType specimenType) {
- MenuItem menuItem = new MenuItem(menu, SWT.NONE);
- menuItem.setText(menuLabel);
- menuItem.addSelectionListener(new WidgetSelectionListener(selectedNode, childClass, specimenType));
- }
}
};
return contributionItems;
}
+ private void createMenuItem(Menu menu, String menuLabel, TreeNode selectedNode, Class<?> childClass, SpecimenOrObservationType specimenType) {
+ MenuItem menuItem = new MenuItem(menu, SWT.NONE);
+ menuItem.setText(menuLabel);
+ menuItem.addSelectionListener(new WidgetSelectionListener(selectedNode, childClass, specimenType));
+ }
+
private class WidgetSelectionListener implements SelectionListener{
private final TreeNode selectedNode;
private DerivateLabelProvider labelProvider;
+ private Set<SingleRead> multiLinkSingleReads;
+
/* (non-Javadoc)
* @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
*/
Menu menu = menuManager.createContextMenu(control);
control.setMenu(menu);
- labelProvider.setMultiLinkSingleReads(getMultiLinkSingleReads());
+ generateMultiLinkSingleReads();
+ labelProvider.setMultiLinkSingleReads(multiLinkSingleReads);
IEditorInput editorInput = getEditorInput();
viewer.setInput(editorInput);
if(editorInput instanceof DerivateViewEditorInput){
* Updates the derivate hierarchy tree
*/
public void update(){
- labelProvider.setMultiLinkSingleReads(getMultiLinkSingleReads());
+ generateMultiLinkSingleReads();
+ labelProvider.setMultiLinkSingleReads(multiLinkSingleReads);
viewer.setInput(getEditorInput());
}
- /**
- * @return
- */
- private Set<SingleRead> getMultiLinkSingleReads() {
+ private void generateMultiLinkSingleReads() {
Set<SingleRead> multiLinkSingleReads = new HashSet<SingleRead>();
for(Entry<SingleRead, Collection<Sequence>> entry:CdmStore.getService(ISequenceService.class).getSingleReadSequencesMap().entrySet()){
if(entry.getValue().size()>1){
multiLinkSingleReads.add(entry.getKey());
}
}
- return multiLinkSingleReads;
+ this.multiLinkSingleReads = multiLinkSingleReads;
+ }
+
+ /**
+ * @return
+ */
+ public Set<SingleRead> getMultiLinkSingleReads() {
+ return this.multiLinkSingleReads;
}
}
--- /dev/null
+package eu.etaxonomy.taxeditor.editor.view.derivate;
+
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.ui.actions.CompoundContributionItem;
+import org.eclipse.ui.menus.IWorkbenchContribution;
+import org.eclipse.ui.services.IServiceLocator;
+
+public class DerivateViewContextMenu extends CompoundContributionItem implements IWorkbenchContribution {
+
+ private IServiceLocator serviceLocator;
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.actions.CompoundContributionItem#getContributionItems()
+ */
+ @Override
+ protected IContributionItem[] getContributionItems() {
+ IContributionItem[] contributionItems = new IContributionItem[] {
+ new CreateDerivateContextMenu(),
+ new SingleReadSequenceContextMenu()
+ };
+ return contributionItems;
+// Collection<IContributionItem> contributionItems = new ArrayList<IContributionItem>();
+// // build a couple of command-based contribution parameters
+// CommandContributionItemParameter pAA = new CommandContributionItemParameter(
+// serviceLocator,
+// null,
+// "eu.etaxonomy.taxeditor.editor.view.derivate.unlinkSingleRead",
+// SWT.PUSH);
+// pAA.label = "Remove from Sequence";
+//
+// // create actual contribution items and add them to the given additions reference
+// CommandContributionItem itemAA = new CommandContributionItem(pAA);
+// itemAA.setVisible(true);
+// contributionItems.add(itemAA);
+// IContributionItem[] contributionItemsArray = new IContributionItem[contributionItems.size()];
+// return contributionItems.toArray(contributionItemsArray);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.menus.IWorkbenchContribution#initialize(org.eclipse.ui.services.IServiceLocator)
+ */
+ @Override
+ public void initialize(IServiceLocator serviceLocator) {
+ this.serviceLocator = serviceLocator;
+
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.actions.CompoundContributionItem#dispose()
+ */
+ @Override
+ public void dispose() {
+ super.dispose();
+ this.serviceLocator = null;
+ }
+
+
+}
else if(property.equals("isSingleRead") && treeNode.getValue() instanceof SingleRead){
return true;
}
+ else if(property.equals("isMultiLinkedSingleRead") && treeNode.getValue() instanceof SingleRead){
+ return true;
+ }
}
}
return false;
--- /dev/null
+package eu.etaxonomy.taxeditor.editor.view.derivate;
+
+import org.eclipse.jface.action.ContributionItem;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.util.LocalSelectionTransfer;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.TreeNode;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.MenuItem;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.actions.CompoundContributionItem;
+
+import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeCacheStrategy;
+import eu.etaxonomy.cdm.model.media.Media;
+import eu.etaxonomy.cdm.model.molecular.DnaSample;
+import eu.etaxonomy.cdm.model.molecular.Sequence;
+import eu.etaxonomy.cdm.model.molecular.SingleRead;
+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.MediaSpecimen;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
+
+/**
+ * Context menu for the creation of derivates in the derivate hierarchy.
+ *
+ */
+public class SingleReadSequenceContextMenu extends CompoundContributionItem {
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.actions.CompoundContributionItem#getContributionItems()
+ */
+ @Override
+ protected IContributionItem[] getContributionItems() {
+ IContributionItem[] contributionItems = new IContributionItem[] {
+ new ContributionItem() {
+ @Override
+ public void fill(Menu menu, int index) {
+ final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+ final IEditorPart activeEditor = window.getActivePage().getActiveEditor();
+ final ISelection selection = window.getActivePage().getSelection();
+ TreeNode selectedTreeNode = EditorUtil.getTreeNodeValueOfSelection(selection);
+ TreeNode clipboardNode = EditorUtil.getTreeNodeValueOfSelection(LocalSelectionTransfer.getTransfer().getSelection());
+ if(selectedTreeNode!=null){
+ //context menu for Sequence
+ if(selectedTreeNode.getValue() instanceof Sequence
+ && clipboardNode!=null && clipboardNode.getValue() instanceof SingleRead){
+ MenuItem item = new MenuItem(menu, SWT.NONE);
+ item.setText("Reuse SingleRead here");
+ }
+ else if(selectedTreeNode.getValue() instanceof SingleRead){
+ MenuItem item = new MenuItem(menu, SWT.NONE);
+ item.setText("Reuse for other Sequence");
+ if(activeEditor instanceof DerivateView
+ && ((DerivateView) activeEditor).getMultiLinkSingleReads().contains(selectedTreeNode.getValue())){
+ MenuItem unlinkItem = new MenuItem(menu, SWT.NONE);
+ unlinkItem.setText("Remove from this Sequence");
+ }
+ }
+ }
+ }
+ }
+ };
+ return contributionItems;
+ }
+
+ private class WidgetSelectionListener implements SelectionListener{
+
+ private final TreeNode selectedNode;
+ //TODO: we need a common interface for the generic like e.g. "IDerivateHierarchyNode"
+ private final Class<?> childClass;
+ private final SpecimenOrObservationType specimenType;
+
+ /**
+ * @param selectedNode
+ * @param specimenType
+ */
+ public WidgetSelectionListener(TreeNode selectedNode, Class<?> childClass, SpecimenOrObservationType specimenType) {
+ this.selectedNode = selectedNode;
+ this.childClass = childClass;
+ this.specimenType = specimenType;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
+ */
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ Object selectedDerivate = selectedNode.getValue();
+ if(selectedDerivate instanceof DnaSample){
+ DnaSample dnaSample = (DnaSample)selectedDerivate;
+ if(childClass.equals(Sequence.class)){
+ dnaSample.addSequence(Sequence.NewInstance(""));//why does this not have DnaSample as constructor parameter?
+ }
+ }
+ else if(selectedDerivate instanceof Sequence){
+ ((Sequence) selectedDerivate).addSingleRead(SingleRead.NewInstance());
+ }
+ else if(selectedDerivate instanceof SpecimenOrObservationBase && DerivedUnit.class.isAssignableFrom(childClass)){
+ SpecimenOrObservationBase<?> specimenOrObservationBase = (SpecimenOrObservationBase<?>)selectedDerivate;
+ DerivedUnit derivedUnit;
+ if(childClass.equals(DnaSample.class)){
+ derivedUnit = DnaSample.NewInstance();
+ }
+ else if(childClass.equals(MediaSpecimen.class)){
+ derivedUnit = MediaSpecimen.NewInstance(specimenType);
+ //a MediaSpecimen with no media attached does not make sense. Hence we add one
+ ((MediaSpecimen)derivedUnit).setMediaSpecimen(Media.NewInstance());
+ }
+ else{
+ derivedUnit = DerivedUnit.NewInstance(specimenType);
+ }
+ specimenOrObservationBase.addDerivationEvent(DerivationEvent.NewSimpleInstance(specimenOrObservationBase, derivedUnit, DerivationEventType.GATHERING_IN_SITU()));
+ derivedUnit.setCacheStrategy(new DerivedUnitFacadeCacheStrategy());
+ derivedUnit.getTitleCache(); //update title cache
+ }
+
+ //refresh view
+ IWorkbenchPart activePart = AbstractUtility.getActivePart();
+ if(activePart instanceof DerivateView){
+ DerivateView derivateView = (DerivateView)activePart;
+ derivateView.changed(null);
+ derivateView.getViewer().refresh();
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent)
+ */
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ // TODO Auto-generated method stub
+
+ }
+ }
+
+}
-package eu.etaxonomy.taxeditor.editor.view.derivate;
+package eu.etaxonomy.taxeditor.editor.view.derivate.command;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
-package eu.etaxonomy.taxeditor.editor.view.derivate;
+package eu.etaxonomy.taxeditor.editor.view.derivate.command;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import eu.etaxonomy.cdm.model.molecular.Sequence;
import eu.etaxonomy.cdm.model.molecular.SingleRead;
import eu.etaxonomy.taxeditor.editor.EditorUtil;
+import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView;
import eu.etaxonomy.taxeditor.model.AbstractUtility;
import eu.etaxonomy.taxeditor.store.CdmStore;
-public class PasteDerivateCommand extends AbstractHandler {
+public class PasteSingleReadCommand extends AbstractHandler {
@Override
--- /dev/null
+package eu.etaxonomy.taxeditor.editor.view.derivate.command;
+
+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.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.editor.EditorUtil;
+import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+public class UnlinkSingleReadCommand extends AbstractHandler {
+
+ /* (non-Javadoc)
+ * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+ */
+ @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();
+
+ TreeNode clipBoardTreeNode = EditorUtil.getTreeNodeValueOfSelection(clipBoardSelection);
+ TreeNode pasteTreeNode = EditorUtil.getTreeNodeValueOfSelection(pasteSelection);
+ if(clipBoardTreeNode!=null && clipBoardTreeNode.getValue() instanceof SingleRead
+ && pasteTreeNode!=null && 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 derivateView = (DerivateView)activeEditor;
+ derivateView.update();
+ LocalSelectionTransfer.getTransfer().setSelection(null);
+ }
+ }
+ return null;
+ }
+
+}
*/
package eu.etaxonomy.taxeditor.view.derivateSearch;
-import java.util.HashSet;
import java.util.Set;
import org.eclipse.jface.viewers.ColumnLabelProvider;
*/
public class DerivateLabelProvider extends ColumnLabelProvider {
- private Set<SingleRead> multiLinkSingleReads = new HashSet<SingleRead>();
+ private Set<SingleRead> multiLinkSingleReads;
/** {@inheritDoc} */
@Override
@Override
public Image getImage(Object element) {
if(element instanceof TreeNode){
- TreeNode treeNode = (TreeNode)element;
- Object nodeValue = treeNode.getValue();
- if(nodeValue instanceof FieldUnit){
+ element = ((TreeNode) element).getValue();
+ }
+ if(element instanceof FieldUnit){
+ return ImageResources.getImage(ImageResources.FIELD_UNIT);
+ }
+ else if(element instanceof DerivedUnit){
+ DerivedUnit derivedUnit = (DerivedUnit)element;
+ if(derivedUnit.getRecordBasis()==SpecimenOrObservationType.FieldUnit){
return ImageResources.getImage(ImageResources.FIELD_UNIT);
}
- else if(nodeValue instanceof DerivedUnit){
- DerivedUnit derivedUnit = (DerivedUnit)nodeValue;
- if(derivedUnit.getRecordBasis()==SpecimenOrObservationType.FieldUnit){
- return ImageResources.getImage(ImageResources.FIELD_UNIT);
- }
- else if(derivedUnit.getRecordBasis()==SpecimenOrObservationType.DnaSample){
- return ImageResources.getImage(ImageResources.DNA_SAMPLE_DERIVATE);
- }
- else if(derivedUnit.getRecordBasis()==SpecimenOrObservationType.TissueSample){
- return ImageResources.getImage(ImageResources.TISSUE_SAMPLE_DERIVATE);
- }
- else if(derivedUnit.getRecordBasis()==SpecimenOrObservationType.PreservedSpecimen){
- return ImageResources.getImage(ImageResources.SPECIMEN_DERIVATE);
- }
- else if(derivedUnit.getRecordBasis()==SpecimenOrObservationType.StillImage){
- return ImageResources.getImage(ImageResources.ARTWORK_DERIVATE);
- }
+ else if(derivedUnit.getRecordBasis()==SpecimenOrObservationType.DnaSample){
+ return ImageResources.getImage(ImageResources.DNA_SAMPLE_DERIVATE);
+ }
+ else if(derivedUnit.getRecordBasis()==SpecimenOrObservationType.TissueSample){
+ return ImageResources.getImage(ImageResources.TISSUE_SAMPLE_DERIVATE);
+ }
+ else if(derivedUnit.getRecordBasis()==SpecimenOrObservationType.PreservedSpecimen){
+ return ImageResources.getImage(ImageResources.SPECIMEN_DERIVATE);
}
- else if(nodeValue instanceof Sequence){
- return ImageResources.getImage(ImageResources.SEQUENCE_DERIVATE);
+ else if(derivedUnit.getRecordBasis()==SpecimenOrObservationType.StillImage){
+ return ImageResources.getImage(ImageResources.ARTWORK_DERIVATE);
+ }
+ }
+ else if(element instanceof Sequence){
+ return ImageResources.getImage(ImageResources.SEQUENCE_DERIVATE);
+ }
+
+ else if(element instanceof SingleRead){
+ if(multiLinkSingleReads.contains(element)){
+ return ImageResources.getImage(ImageResources.SINGLE_READ_DERIVATE_MULTILINK);
}
- else if(nodeValue instanceof SingleRead){
- if(multiLinkSingleReads.contains(nodeValue)){
- return ImageResources.getImage(ImageResources.SINGLE_READ_DERIVATE_MULTILINK);
- }
- else{
- return ImageResources.getImage(ImageResources.SINGLE_READ_DERIVATE);
- }
+ else{
+ return ImageResources.getImage(ImageResources.SINGLE_READ_DERIVATE);
}
}
return super.getImage(element);
}
/**
- * @param multiLinkSingleReads the multiLinkSingleReads to set
+ * @param multiLinkSingleReads2
*/
public void setMultiLinkSingleReads(Set<SingleRead> multiLinkSingleReads) {
this.multiLinkSingleReads = multiLinkSingleReads;