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