From 35a12f14063bcee2ecad992608868ab11d62e21d Mon Sep 17 00:00:00 2001 From: Patric Plitzner Date: Wed, 2 Apr 2014 09:37:31 +0000 Subject: [PATCH] - added update() method to DerivateView - display different icon for SingleReads linked to multiple Sequences --- .gitattributes | 1 + .../derivate/DerivateContentProvider.java | 2 - .../view/derivate/DerivateDropListener.java | 2 +- .../editor/view/derivate/DerivateView.java | 38 ++++++++++- .../view/derivate/PasteDerivateCommand.java | 2 +- ...ingle_read_derivate_multilink-16x16-32.png | Bin 0 -> 1347 bytes .../taxeditor/model/ImageResources.java | 3 + .../derivateSearch/DerivateLabelProvider.java | 64 +++++++++++------- 8 files changed, 83 insertions(+), 29 deletions(-) create mode 100644 eu.etaxonomy.taxeditor.store/icons/single_read_derivate_multilink-16x16-32.png diff --git a/.gitattributes b/.gitattributes index 5ab03daba..d8f5d4f72 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1075,6 +1075,7 @@ eu.etaxonomy.taxeditor.store/icons/search_src.gif -text eu.etaxonomy.taxeditor.store/icons/sequence_derivate-16x16-32.png -text eu.etaxonomy.taxeditor.store/icons/settings.gif -text eu.etaxonomy.taxeditor.store/icons/single_read_derivate-16x16-32.png -text +eu.etaxonomy.taxeditor.store/icons/single_read_derivate_multilink-16x16-32.png -text eu.etaxonomy.taxeditor.store/icons/smartmode_co.gif -text eu.etaxonomy.taxeditor.store/icons/sort.gif -text eu.etaxonomy.taxeditor.store/icons/specimen_derivate-16x16-32.png -text diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateContentProvider.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateContentProvider.java index 027b5d012..3d27e75c8 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateContentProvider.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateContentProvider.java @@ -49,12 +49,10 @@ public class DerivateContentProvider implements ITreeContentProvider { @Override public Object[] getChildren(Object element) { - TreeNode parentNode = null; TreeNode currentnode = null; Object value = null; if(element instanceof TreeNode){ currentnode = (TreeNode) element; - parentNode = ((TreeNode) element).getParent(); value = ((TreeNode) element).getValue(); } Set children = new LinkedHashSet(); diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateDropListener.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateDropListener.java index 403a1576a..6bc403d1b 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateDropListener.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateDropListener.java @@ -58,7 +58,7 @@ public class DerivateDropListener extends ViewerDropAdapter { TreeNode draggednode = EditorUtil.getTreeNodeValueOfSelection((IStructuredSelection) data); if(draggednode!=null){ if(moveTreeNode(draggednode, targetNode)){ - derivateView.getViewer().setInput(derivateView.getEditorInput()); + derivateView.update(); LocalSelectionTransfer.getTransfer().setSelection(null); return true; } diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java index f79098099..5db82aa84 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java @@ -1,5 +1,10 @@ package eu.etaxonomy.taxeditor.editor.view.derivate; +import java.util.Collection; +import java.util.HashSet; +import java.util.Map.Entry; +import java.util.Set; + import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.util.LocalSelectionTransfer; @@ -22,6 +27,9 @@ import org.eclipse.ui.part.EditorPart; import eu.etaxonomy.cdm.api.conversation.ConversationHolder; import eu.etaxonomy.cdm.api.conversation.IConversationEnabled; +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.cdm.model.occurrence.FieldUnit; import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase; import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap; @@ -29,6 +37,7 @@ import eu.etaxonomy.taxeditor.model.IDirtyMarkableSelectionProvider; import eu.etaxonomy.taxeditor.model.IPartContentHasDetails; import eu.etaxonomy.taxeditor.model.IPartContentHasFactualData; import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData; +import eu.etaxonomy.taxeditor.store.CdmStore; import eu.etaxonomy.taxeditor.view.derivateSearch.DerivateLabelProvider; /** @@ -47,6 +56,8 @@ public class DerivateView extends EditorPart implements IPartContentHasFactualDa private final int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK; + private DerivateLabelProvider labelProvider; + /* (non-Javadoc) * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite) */ @@ -54,7 +65,8 @@ public class DerivateView extends EditorPart implements IPartContentHasFactualDa public void createPartControl(Composite parent) { viewer = new TreeViewer(new Tree(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION)); viewer.setContentProvider(new DerivateContentProvider()); - viewer.setLabelProvider(new DerivateLabelProvider()); + labelProvider = new DerivateLabelProvider(); + viewer.setLabelProvider(labelProvider); viewer.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS); // Propagate selection from viewer getSite().setSelectionProvider(viewer); @@ -66,6 +78,7 @@ public class DerivateView extends EditorPart implements IPartContentHasFactualDa Menu menu = menuManager.createContextMenu(control); control.setMenu(menu); + labelProvider.setMultiLinkSingleReads(getMultiLinkSingleReads()); IEditorInput editorInput = getEditorInput(); viewer.setInput(editorInput); if(editorInput instanceof DerivateViewEditorInput){ @@ -100,6 +113,7 @@ public class DerivateView extends EditorPart implements IPartContentHasFactualDa monitor.worked(1); monitor.done(); firePropertyChange(PROP_DIRTY); + update(); } /* (non-Javadoc) @@ -196,9 +210,29 @@ public class DerivateView extends EditorPart implements IPartContentHasFactualDa */ @Override public void changed(Object element) { - viewer.setInput(getEditorInput()); setDirty(true); firePropertyChange(IEditorPart.PROP_DIRTY); } + /** + * Updates the derivate hierarchy tree + */ + public void update(){ + labelProvider.setMultiLinkSingleReads(getMultiLinkSingleReads()); + viewer.setInput(getEditorInput()); + } + + /** + * @return + */ + private Set getMultiLinkSingleReads() { + Set multiLinkSingleReads = new HashSet(); + for(Entry> entry:CdmStore.getService(ISequenceService.class).getSingleReadSequencesMap().entrySet()){ + if(entry.getValue().size()>1){ + multiLinkSingleReads.add(entry.getKey()); + } + } + return multiLinkSingleReads; + } + } diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/PasteDerivateCommand.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/PasteDerivateCommand.java index 03fcb7435..9d847d90a 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/PasteDerivateCommand.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/PasteDerivateCommand.java @@ -39,7 +39,7 @@ public class PasteDerivateCommand extends AbstractHandler { CdmStore.getService(ISequenceService.class).saveOrUpdate(sequence); if(activeEditor instanceof DerivateView) { DerivateView derivateView = (DerivateView)activeEditor; - derivateView.getViewer().setInput(derivateView.getEditorInput()); + derivateView.update(); LocalSelectionTransfer.getTransfer().setSelection(null); } } diff --git a/eu.etaxonomy.taxeditor.store/icons/single_read_derivate_multilink-16x16-32.png b/eu.etaxonomy.taxeditor.store/icons/single_read_derivate_multilink-16x16-32.png new file mode 100644 index 0000000000000000000000000000000000000000..abb3bb9e52a633c7dd8fd901e65e0804ac6dd25e GIT binary patch literal 1347 zcmdT^`%hX27`x+b0#qESlrDCp$_dS^;bH z`e&W3b~bxfEH$2*s>!5{j0}UfH^^E?<0>QQ@!-8+RebzkOuP~~DcrP0Fhl(Vxl zp=QZMX{3qvtV^n+K?j;<=U^#Y-aB~LK0hB-L8_28O-7=Z1Xok`= zuXo6IwQBYAVerIgJ`MWm3545;h=7$NM$8A`pt_z+#o=(7nVDHxS=rgyAPDB<*ryuAGU{DOjl!otF$qN3vB;*ye*($dnhva<5>@`{QI0)bFjSy@$8Rb5?8Bob?C zYHDk1>+0%ABvO5SeM3V7nM|foC{EXnjg3uBP0h{CEiEmrt*vcsZSC#tG#ag=qk~ST zcXoC%7>us2uI}#co}QlG-rl~xJ_v$f81C=y9~c;5GMR&egF{0@EEa2cc$m#*kBp3r zj*gCvjg60wb2yxdiHXU{$*HL+E|<&W@usJzXJ%&je7-;+n4O&!3WXw(Xl`z9etupo z7E2_Og@pyFRJyphxU{siyu7@!vf_+OE|;&at|}CYwY9bN_4SR74W&}Kxw*NuwWU(2 zwzs#{YPCkA+1c6I-QCq{wK|)%S+; zJsbrG{TTI1{&XI6l~shlm|p~7&= zqW3qrkdPHG-=9OupyweWURbYCw~WAxLAP9Al%5BoKe;2vZn=dy-2=hcupq|WSlqvy CL8^lQ literal 0 HcmV?d00001 diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/ImageResources.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/ImageResources.java index f1cc4348a..176628d77 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/ImageResources.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/ImageResources.java @@ -144,6 +144,7 @@ public class ImageResources { public static final String SEQUENCE_DERIVATE = "sequence_derivate"; public static final String AMPLIFICATION_DERIVATE = "amplification_derivate"; public static final String SINGLE_READ_DERIVATE = "single_read_derivate"; + public static final String SINGLE_READ_DERIVATE_MULTILINK = "single_read_derivate_multilink"; @@ -341,6 +342,8 @@ public class ImageResources { "amplification_derivate-16x16-32.png"); registerImage(registry, SINGLE_READ_DERIVATE, "single_read_derivate-16x16-32.png"); + registerImage(registry, SINGLE_READ_DERIVATE_MULTILINK, + "single_read_derivate_multilink-16x16-32.png"); } private void registerImage(ImageRegistry registry, String key, diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateLabelProvider.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateLabelProvider.java index 566610826..48f90614b 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateLabelProvider.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateLabelProvider.java @@ -9,6 +9,9 @@ */ package eu.etaxonomy.taxeditor.view.derivateSearch; +import java.util.HashSet; +import java.util.Set; + import org.eclipse.jface.viewers.ColumnLabelProvider; import org.eclipse.jface.viewers.TreeNode; import org.eclipse.swt.graphics.Image; @@ -26,6 +29,8 @@ import eu.etaxonomy.taxeditor.model.ImageResources; */ public class DerivateLabelProvider extends ColumnLabelProvider { + private Set multiLinkSingleReads = new HashSet(); + /** {@inheritDoc} */ @Override public String getText(Object element) { @@ -56,36 +61,49 @@ public class DerivateLabelProvider extends ColumnLabelProvider { @Override public Image getImage(Object element) { if(element instanceof TreeNode){ - 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){ + TreeNode treeNode = (TreeNode)element; + Object nodeValue = treeNode.getValue(); + if(nodeValue instanceof 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(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.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(nodeValue instanceof SingleRead){ + if(multiLinkSingleReads.contains(nodeValue)){ + return ImageResources.getImage(ImageResources.SINGLE_READ_DERIVATE_MULTILINK); + } + else{ + return ImageResources.getImage(ImageResources.SINGLE_READ_DERIVATE); + } } } - else if(element instanceof Sequence){ - return ImageResources.getImage(ImageResources.SEQUENCE_DERIVATE); - } - else if(element instanceof SingleRead){ - return ImageResources.getImage(ImageResources.SINGLE_READ_DERIVATE); - } return super.getImage(element); } + /** + * @param multiLinkSingleReads the multiLinkSingleReads to set + */ + public void setMultiLinkSingleReads(Set multiLinkSingleReads) { + this.multiLinkSingleReads = multiLinkSingleReads; + } + } -- 2.34.1