From 0a3099553ab2f28102a1c690231664a093d482fe Mon Sep 17 00:00:00 2001
From: Patric Plitzner
Date: Wed, 4 Jun 2014 09:35:29 +0000
Subject: [PATCH] - implemented differentiation of the three image types
(Artwork, Living Plant Photo, Specimen Scan) in the DerivateView and
DetailsView
---
.../CreateDerivateContextMenu.java | 31 +++++++---
.../MediaSpecimenGeneralDetailSection.java | 26 +++++++++
.../derivateSearch/DerivateLabelProvider.java | 57 ++++++++++++++++++-
3 files changed, 104 insertions(+), 10 deletions(-)
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/contextMenu/CreateDerivateContextMenu.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/contextMenu/CreateDerivateContextMenu.java
index ea94c9c4f..c21f3696a 100644
--- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/contextMenu/CreateDerivateContextMenu.java
+++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/contextMenu/CreateDerivateContextMenu.java
@@ -15,6 +15,7 @@ import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.actions.CompoundContributionItem;
import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeCacheStrategy;
+import eu.etaxonomy.cdm.model.common.DefinedTerm;
import eu.etaxonomy.cdm.model.media.Media;
import eu.etaxonomy.cdm.model.molecular.DnaSample;
import eu.etaxonomy.cdm.model.molecular.Sequence;
@@ -29,6 +30,7 @@ import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
import eu.etaxonomy.taxeditor.editor.EditorUtil;
import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView;
import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.view.derivateSearch.DerivateLabelProvider;
/**
* Context menu for the creation of derivates in the derivate hierarchy.
@@ -45,6 +47,9 @@ public class CreateDerivateContextMenu extends CompoundContributionItem {
new ContributionItem() {
@Override
public void fill(Menu menu, int index) {
+ DefinedTerm artworkTerm = DerivateLabelProvider.getArtworkTerm();
+ DefinedTerm livingPlantPhotoTerm = DerivateLabelProvider.getLivingPlantPhotoTerm();
+ DefinedTerm specimenScanTerm = DerivateLabelProvider.getSpecimenScanTerm();
MenuItem addItem = new MenuItem(menu, SWT.CASCADE);
addItem.setText("Add...");
Menu addMenu = new Menu(menu);
@@ -59,18 +64,18 @@ public class CreateDerivateContextMenu extends CompoundContributionItem {
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);
+ createMenuItem(addMenu, "Specimen Scan", selectedTreeNode, MediaSpecimen.class, SpecimenOrObservationType.StillImage, specimenScanTerm);
+ createMenuItem(addMenu, "Artwork", selectedTreeNode, MediaSpecimen.class, SpecimenOrObservationType.StillImage, artworkTerm);
+ createMenuItem(addMenu, "Living Plant Photo", selectedTreeNode, MediaSpecimen.class, SpecimenOrObservationType.StillImage, livingPlantPhotoTerm);
}
//context menu for Specimen
else if(selectedTreeNode.getValue() instanceof DerivedUnit && ((DerivedUnit)selectedTreeNode.getValue()).getRecordBasis()==SpecimenOrObservationType.PreservedSpecimen){
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);
+ createMenuItem(addMenu, "Specimen Scan", selectedTreeNode, MediaSpecimen.class, SpecimenOrObservationType.StillImage, specimenScanTerm);
+ createMenuItem(addMenu, "Artwork", selectedTreeNode, MediaSpecimen.class, SpecimenOrObservationType.StillImage, artworkTerm);
+ createMenuItem(addMenu, "Living Plant Photo", selectedTreeNode, MediaSpecimen.class, SpecimenOrObservationType.StillImage, livingPlantPhotoTerm);
}
//context menu for TissueSample
else if(selectedTreeNode.getValue() instanceof DerivedUnit && ((DerivedUnit)selectedTreeNode.getValue()).getRecordBasis()==SpecimenOrObservationType.TissueSample){
@@ -99,10 +104,14 @@ public class CreateDerivateContextMenu extends CompoundContributionItem {
return contributionItems;
}
- private void createMenuItem(Menu menu, String menuLabel, TreeNode selectedNode, Class> childClass, SpecimenOrObservationType specimenType) {
+ private void createMenuItem(Menu menu, String menuLabel, TreeNode selectedNode, Class> childClass, SpecimenOrObservationType specimenType, DefinedTerm kindOfUnit) {
MenuItem menuItem = new MenuItem(menu, SWT.NONE);
menuItem.setText(menuLabel);
- menuItem.addSelectionListener(new WidgetSelectionListener(selectedNode, childClass, specimenType));
+ menuItem.addSelectionListener(new WidgetSelectionListener(selectedNode, childClass, specimenType, kindOfUnit));
+ }
+
+ private void createMenuItem(Menu menu, String menuLabel, TreeNode selectedNode, Class> childClass, SpecimenOrObservationType specimenType) {
+ createMenuItem(menu, menuLabel, selectedNode, childClass, specimenType, null);
}
private class WidgetSelectionListener extends SelectionAdapter{
@@ -111,15 +120,18 @@ public class CreateDerivateContextMenu extends CompoundContributionItem {
//TODO: we need a common interface for the generic like e.g. "IDerivateHierarchyNode"
private final Class> childClass;
private final SpecimenOrObservationType specimenType;
+ private final DefinedTerm kindOfUnit;
/**
* @param selectedNode
* @param specimenType
+ * @param kindOfUnit
*/
- public WidgetSelectionListener(TreeNode selectedNode, Class> childClass, SpecimenOrObservationType specimenType) {
+ public WidgetSelectionListener(TreeNode selectedNode, Class> childClass, SpecimenOrObservationType specimenType, DefinedTerm kindOfUnit) {
this.selectedNode = selectedNode;
this.childClass = childClass;
this.specimenType = specimenType;
+ this.kindOfUnit = kindOfUnit;
}
/* (non-Javadoc)
@@ -147,6 +159,7 @@ public class CreateDerivateContextMenu extends CompoundContributionItem {
derivedUnit = MediaSpecimen.NewInstance(specimenType);
//a MediaSpecimen with no media attached does not make sense. Hence we add one
((MediaSpecimen)derivedUnit).setMediaSpecimen(Media.NewInstance());
+ derivedUnit.setKindOfUnit(kindOfUnit);
}
else{
derivedUnit = DerivedUnit.NewInstance(specimenType);
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/media/MediaSpecimenGeneralDetailSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/media/MediaSpecimenGeneralDetailSection.java
index 58ba06e33..b4da94565 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/media/MediaSpecimenGeneralDetailSection.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/media/MediaSpecimenGeneralDetailSection.java
@@ -17,6 +17,7 @@ import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
+import eu.etaxonomy.taxeditor.view.derivateSearch.DerivateLabelProvider;
/**
* @author pplitzner
@@ -47,6 +48,31 @@ public class MediaSpecimenGeneralDetailSection extends AbstractCdmDetailSection
return "General Media Specimen";
}
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.forms.widgets.ExpandableComposite#setText(java.lang.String)
+ */
+ @Override
+ public void setText(String title) {
+ String text = null;
+ if(getEntity()!=null && getEntity().getKindOfUnit()!=null){
+ if(getEntity().getKindOfUnit().equals(DerivateLabelProvider.getArtworkTerm())){
+ text = "Artwork";
+ }
+ else if(getEntity().getKindOfUnit().equals(DerivateLabelProvider.getLivingPlantPhotoTerm())){
+ text = "Living Plant Photo";
+ }
+ else if(getEntity().getKindOfUnit().equals(DerivateLabelProvider.getSpecimenScanTerm())){
+ text = "Specimen Scan";
+ }
+ }
+ if(text!=null){
+ super.setText(text);
+ }
+ else{
+ super.setText(title);
+ }
+ }
+
/* (non-Javadoc)
* @see eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection#createCdmDetailElement(eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection, int)
*/
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 0ef56d87e..260854f85 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,12 +9,15 @@
*/
package eu.etaxonomy.taxeditor.view.derivateSearch;
+import java.util.List;
import java.util.Set;
+import java.util.UUID;
import org.eclipse.jface.viewers.ColumnLabelProvider;
import org.eclipse.jface.viewers.TreeNode;
import org.eclipse.swt.graphics.Image;
+import eu.etaxonomy.cdm.model.common.DefinedTerm;
import eu.etaxonomy.cdm.model.molecular.DnaSample;
import eu.etaxonomy.cdm.model.molecular.Sequence;
import eu.etaxonomy.cdm.model.molecular.SingleRead;
@@ -26,6 +29,7 @@ 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.model.ImageResources;
+import eu.etaxonomy.taxeditor.store.CdmStore;
/**
* Label provider for the views to show {@link SpecimenOrObservationBase}s.
@@ -34,6 +38,47 @@ public class DerivateLabelProvider extends ColumnLabelProvider {
private Set multiLinkSingleReads;
+ private static DefinedTerm photoTerm = null;
+ private static DefinedTerm drawingTerm = null;
+ private static DefinedTerm specimenScanTerm = null;
+
+ private static void initializeTerms() {
+ List preferredTerms = CdmStore.getTermManager().getPreferredTerms(DefinedTerm.class);
+ for (DefinedTerm definedTerm : preferredTerms) {
+ if(definedTerm.getUuid().equals(UUID.fromString("04673952-dab1-42ff-b47a-5e847c350eaf"))){//photo
+ photoTerm = definedTerm;
+ }
+ else if(definedTerm.getUuid().equals(UUID.fromString("76204a15-098f-4afe-9e8f-fa344ee3fdbb"))){//drawing
+ drawingTerm = definedTerm;
+ }
+ else if(definedTerm.getUuid().equals(UUID.fromString("c0b127d6-c849-48f9-bbc3-29e3337c1d03"))){//cover TODO temporary until new term is created
+ specimenScanTerm = definedTerm;
+ }
+ }
+ }
+
+ public static DefinedTerm getLivingPlantPhotoTerm(){
+ if(photoTerm==null){
+ initializeTerms();
+ }
+ return photoTerm;
+ }
+
+ public static DefinedTerm getArtworkTerm(){
+ if(drawingTerm==null){
+ initializeTerms();
+ }
+ return drawingTerm;
+ }
+
+ public static DefinedTerm getSpecimenScanTerm(){
+ if(specimenScanTerm==null){
+ initializeTerms();
+ }
+ return specimenScanTerm;
+ }
+
+
/** {@inheritDoc} */
@Override
public String getText(Object element) {
@@ -156,7 +201,17 @@ public class DerivateLabelProvider extends ColumnLabelProvider {
return ImageResources.getImage(ImageResources.SPECIMEN_DERIVATE);
}
else if(derivedUnit.getRecordBasis()==SpecimenOrObservationType.StillImage){
- return ImageResources.getImage(ImageResources.ARTWORK_DERIVATE);
+ if(derivedUnit.getKindOfUnit()!=null){
+ if(derivedUnit.getKindOfUnit().equals(getArtworkTerm())){
+ return ImageResources.getImage(ImageResources.ARTWORK_DERIVATE);
+ }
+ else if(derivedUnit.getKindOfUnit().equals(getLivingPlantPhotoTerm())){
+ return ImageResources.getImage(ImageResources.LIVING_PLANT_PHOTO_DERIVATE);
+ }
+ else if(derivedUnit.getKindOfUnit().equals(getSpecimenScanTerm())){
+ return ImageResources.getImage(ImageResources.SPECIMEN_SCAN_DERIVATE);
+ }
+ }
}
}
else if(element instanceof Sequence){
--
2.34.1