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
@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<Object> children = new LinkedHashSet<Object>();
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;
}
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;
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;
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;
/**
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)
*/
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);
Menu menu = menuManager.createContextMenu(control);
control.setMenu(menu);
+ labelProvider.setMultiLinkSingleReads(getMultiLinkSingleReads());
IEditorInput editorInput = getEditorInput();
viewer.setInput(editorInput);
if(editorInput instanceof DerivateViewEditorInput){
monitor.worked(1);
monitor.done();
firePropertyChange(PROP_DIRTY);
+ update();
}
/* (non-Javadoc)
*/
@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<SingleRead> getMultiLinkSingleReads() {
+ 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;
+ }
+
}
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);
}
}
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";
"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,
*/
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;
*/
public class DerivateLabelProvider extends ColumnLabelProvider {
+ private Set<SingleRead> multiLinkSingleReads = new HashSet<SingleRead>();
+
/** {@inheritDoc} */
@Override
public String getText(Object element) {
@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<SingleRead> multiLinkSingleReads) {
+ this.multiLinkSingleReads = multiLinkSingleReads;
+ }
+
}