From 729967342c8c70b54a71848f3f5ba08fecfa7ba1 Mon Sep 17 00:00:00 2001 From: Patric Plitzner Date: Mon, 1 Sep 2014 08:49:28 +0000 Subject: [PATCH] - implemented functionality to reuse media in MediaView (#2385) --- .gitattributes | 3 + eu.etaxonomy.taxeditor.editor/plugin.xml | 17 ++++ .../handler/AddExistingMediaHandler.java | 40 +++++++++ .../media/handler/CreateMediaHandler.java | 50 +++++++---- ...dExistingMediaToImageGalleryOperation.java | 32 +++++++ .../AddMediaToImageGalleryOperation.java | 30 ++++--- .../AmplificationSelectionDialog.java | 4 +- .../selection/MediaSelectionDialog.java | 88 +++++++++++++++++++ .../selection/PrimerSelectionDialog.java | 4 +- .../selection/SelectionDialogFactory.java | 44 +++++----- 10 files changed, 255 insertions(+), 57 deletions(-) create mode 100644 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/handler/AddExistingMediaHandler.java create mode 100644 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/operation/AddExistingMediaToImageGalleryOperation.java create mode 100644 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/MediaSelectionDialog.java diff --git a/.gitattributes b/.gitattributes index 5cfc4161e..d1a4e8f89 100644 --- a/.gitattributes +++ b/.gitattributes @@ -560,11 +560,13 @@ eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/d eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/MediaContentProvider.java -text eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/MediaLabelProvider.java -text eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/MediaViewPart.java -text +eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/handler/AddExistingMediaHandler.java -text eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/handler/AddImageGalleryHandler.java -text eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/handler/CreateMediaHandler.java -text eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/handler/DeleteMediaHandler.java -text eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/handler/MoveImageDownInListHandler.java -text eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/handler/MoveImageUpInListHandler.java -text +eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/operation/AddExistingMediaToImageGalleryOperation.java -text eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/operation/AddMediaToImageGalleryOperation.java -text eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/operation/CreateImageOperation.java -text eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/operation/DeleteMediaOperation.java -text @@ -1383,6 +1385,7 @@ eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/sele eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/GrantedAuthoritySelectionDialog.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/GroupSelectionDialog.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/InstitutionSelectionDialog.java -text +eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/MediaSelectionDialog.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/NameSelectionDialog.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/NamedAreaSelectionDialog.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/NomenclaturalAuthorTeamSelectionDialog.java -text diff --git a/eu.etaxonomy.taxeditor.editor/plugin.xml b/eu.etaxonomy.taxeditor.editor/plugin.xml index 63f730a7e..38a6a28bd 100644 --- a/eu.etaxonomy.taxeditor.editor/plugin.xml +++ b/eu.etaxonomy.taxeditor.editor/plugin.xml @@ -710,6 +710,17 @@ + + + + + + + + description, IPostOperationEnabled postOperationEnabled) { + super(media, label, undoContext, description, postOperationEnabled); + + } +} diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/operation/AddMediaToImageGalleryOperation.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/operation/AddMediaToImageGalleryOperation.java index eb8f66380..ed396f0a9 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/operation/AddMediaToImageGalleryOperation.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/operation/AddMediaToImageGalleryOperation.java @@ -1,8 +1,8 @@ /** * Copyright (C) 2007 EDIT -* European Distributed Institute of Taxonomy +* European Distributed Institute of Taxonomy * http://www.e-taxonomy.eu -* +* * The contents of this file are subject to the Mozilla Public License Version 1.1 * See LICENSE.TXT at the top of this package for the full license terms. */ @@ -21,7 +21,7 @@ import eu.etaxonomy.cdm.model.media.Media; import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation; import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled; /** - *

AddMediaToImageGalleryOperation class.

+ * This operation creates a new {@link Media} and adds it to the currently selected {@link DescriptionBase}. * * @author p.ciardelli * @author n.hoffmann @@ -29,8 +29,8 @@ import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled; * @version 1.0 */ public class AddMediaToImageGalleryOperation extends AbstractPostTaxonOperation { - - private DescriptionBase description; + + private final DescriptionBase description; private Media media; /** @@ -43,11 +43,17 @@ public class AddMediaToImageGalleryOperation extends AbstractPostTaxonOperation * @param description a {@link eu.etaxonomy.cdm.model.description.DescriptionBase} object. */ public AddMediaToImageGalleryOperation(String label, - IUndoContext undoContext, DescriptionBase description, IPostOperationEnabled postOperationEnabled) { - super(label, undoContext, postOperationEnabled); + IUndoContext undoContext, DescriptionBase description, IPostOperationEnabled postOperationEnabled) { + this(null, label, undoContext, description, postOperationEnabled); + media = Media.NewInstance(); + } + + protected AddMediaToImageGalleryOperation(Media media, String label, + IUndoContext undoContext, DescriptionBase description, IPostOperationEnabled postOperationEnabled) { + super(label, undoContext, postOperationEnabled); - this.description = description; - media = Media.NewInstance(); + this.description = description; + this.media = media; } /* (non-Javadoc) @@ -59,11 +65,11 @@ public class AddMediaToImageGalleryOperation extends AbstractPostTaxonOperation throws ExecutionException { monitor.worked(20); - + ImagesUtility.addMediaToGallery(description, media); - + monitor.worked(40); - + return postExecute(media); } diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/AmplificationSelectionDialog.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/AmplificationSelectionDialog.java index 4cb133747..f2e1cd211 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/AmplificationSelectionDialog.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/AmplificationSelectionDialog.java @@ -32,7 +32,7 @@ AbstractFilteredCdmResourceSelectionDialog { public static Amplification select(Shell shell, ConversationHolder conversation, Amplification amplification){ AmplificationSelectionDialog dialog = new AmplificationSelectionDialog(shell, conversation, - "Choose Unit", false, AmplificationSelectionDialog.class.getCanonicalName(), amplification); + "Choose Amplification", false, AmplificationSelectionDialog.class.getCanonicalName(), amplification); return getSelectionFromDialog(dialog); } @@ -54,7 +54,7 @@ AbstractFilteredCdmResourceSelectionDialog { if(amplification != null){ return amplification; } - MessagingUtils.error(this.getClass(), "Selected unit is not an amplification", null); + MessagingUtils.error(this.getClass(), "Selected element is not an amplification", null); return null; } diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/MediaSelectionDialog.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/MediaSelectionDialog.java new file mode 100644 index 000000000..a0df66d81 --- /dev/null +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/MediaSelectionDialog.java @@ -0,0 +1,88 @@ +// $Id$ +/** + * Copyright (C) 2014 EDIT + * European Distributed Institute of Taxonomy + * http://www.e-taxonomy.eu + * + * The contents of this file are subject to the Mozilla Public License Version 1.1 + * See LICENSE.TXT at the top of this package for the full license terms. + */ +package eu.etaxonomy.taxeditor.ui.dialog.selection; + +import java.util.UUID; + +import org.eclipse.swt.widgets.Shell; + +import eu.etaxonomy.cdm.api.conversation.ConversationHolder; +import eu.etaxonomy.cdm.api.service.IMediaService; +import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper; +import eu.etaxonomy.cdm.model.media.Media; +import eu.etaxonomy.taxeditor.model.MessagingUtils; +import eu.etaxonomy.taxeditor.newWizard.AbstractNewEntityWizard; +import eu.etaxonomy.taxeditor.store.CdmStore; + +/** + * @author pplitzner + * @date 11.03.2014 + * + */ +public class MediaSelectionDialog extends +AbstractFilteredCdmResourceSelectionDialog { + + public static Media select(Shell shell, ConversationHolder conversation, Media media){ + MediaSelectionDialog dialog = new MediaSelectionDialog(shell, conversation, + "Choose Media", false, MediaSelectionDialog.class.getCanonicalName(), media); + return getSelectionFromDialog(dialog); + } + + /** + *

Constructor for FilteredDerivedUnitSelectionDialog.

+ */ + protected MediaSelectionDialog(Shell shell, ConversationHolder conversation, String title, + boolean multi, String settings, Media cdmObject) { + super(shell, conversation, title, multi, settings, cdmObject); + } + + /** {@inheritDoc} */ + @Override + protected Media getPersistentObject(UUID uuid) { + Object object = CdmStore.getService(IMediaService.class).load(uuid); + + Media media = (Media) HibernateProxyHelper.deproxy(object); + + if(media != null){ + return media; + } + MessagingUtils.error(this.getClass(), "Selected element is not media", null); + return null; + } + + /** {@inheritDoc} */ + @Override + protected void initModel() { + model = CdmStore.getService(IMediaService.class).getUuidAndTitleCache(); + } + + /* (non-Javadoc) + * @see eu.etaxonomy.taxeditor.ui.dialog.selection.AbstractFilteredCdmResourceSelectionDialog#getTitle(eu.etaxonomy.cdm.model.common.ICdmBase) + */ + @Override + protected String getTitle(Media cdmObject) { + if(cdmObject!=null){ + return cdmObject.getTitleCache(); + } + return super.getTitle(cdmObject); + } + + /** {@inheritDoc} */ + @Override + protected AbstractNewEntityWizard getNewEntityWizard(String parameter) { + return null; + } + + /** {@inheritDoc} */ + @Override + protected String getNewWizardLinkText() { + return ""; + } +} diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/PrimerSelectionDialog.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/PrimerSelectionDialog.java index 4ad99c9ff..440919529 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/PrimerSelectionDialog.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/PrimerSelectionDialog.java @@ -32,7 +32,7 @@ AbstractFilteredCdmResourceSelectionDialog { public static Primer select(Shell shell, ConversationHolder conversation, Primer primer){ PrimerSelectionDialog dialog = new PrimerSelectionDialog(shell, conversation, - "Choose Unit", false, PrimerSelectionDialog.class.getCanonicalName(), primer); + "Choose Primer", false, PrimerSelectionDialog.class.getCanonicalName(), primer); return getSelectionFromDialog(dialog); } @@ -54,7 +54,7 @@ AbstractFilteredCdmResourceSelectionDialog { if(primer != null){ return primer; } - MessagingUtils.error(this.getClass(), "Selected unit is not a primer", null); + MessagingUtils.error(this.getClass(), "Selected element is not a primer", null); return null; } diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/SelectionDialogFactory.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/SelectionDialogFactory.java index d33745d88..e728ad0c1 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/SelectionDialogFactory.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/SelectionDialogFactory.java @@ -46,10 +46,10 @@ import eu.etaxonomy.taxeditor.model.MessagingUtils; */ public class SelectionDialogFactory { - public static T getSelectionFromDialog(Class clazz, Shell shell, ConversationHolder conversation, T curentSelection){ + public static T getSelectionFromDialog(Class clazz, Shell shell, ConversationHolder conversation, T currentSelection){ if(clazz.equals(Taxon.class)){ - return (T) TaxonBaseSelectionDialog.selectTaxon(shell, conversation, (Taxon) curentSelection); + return (T) TaxonBaseSelectionDialog.selectTaxon(shell, conversation, (Taxon) currentSelection); } if(clazz.equals(Synonym.class)){ return (T) TaxonBaseSelectionDialog.selectSynonym(shell, conversation); @@ -58,31 +58,31 @@ public class SelectionDialogFactory { return (T) TaxonBaseSelectionDialog.selectTaxonBase(shell, conversation); } if(clazz.equals(Classification.class)){ - return (T) ClassificationSelectionDialog.select(shell, conversation, (Classification) curentSelection); + return (T) ClassificationSelectionDialog.select(shell, conversation, (Classification) currentSelection); } if(clazz.equals(TaxonNode.class)){ - return (T) TaxonNodeSelectionDialog.select(shell, conversation, null, null, (TaxonNode) curentSelection, null); + return (T) TaxonNodeSelectionDialog.select(shell, conversation, null, null, (TaxonNode) currentSelection, null); } if(clazz.equals(Reference.class)){ - return (T) ReferenceSelectionDialog.select(shell, conversation, (Reference) curentSelection); + return (T) ReferenceSelectionDialog.select(shell, conversation, (Reference) currentSelection); } if(clazz.equals(TaxonNameBase.class)){ - return (T) NameSelectionDialog.select(shell, conversation, (TaxonNameBase) curentSelection); + return (T) NameSelectionDialog.select(shell, conversation, (TaxonNameBase) currentSelection); } if(clazz.equals(Team.class)){ - return (T) TeamSelectionDialog.select(shell, conversation, (Team) curentSelection); + return (T) TeamSelectionDialog.select(shell, conversation, (Team) currentSelection); } if(clazz.equals(AgentBase.class)){ - return (T) AgentSelectionDialog.select(shell, conversation, (AgentBase) curentSelection); + return (T) AgentSelectionDialog.select(shell, conversation, (AgentBase) currentSelection); } if(clazz.equals(Feature.class)){ - return (T) FeatureSelectionDialog.select(shell, conversation, (Feature) curentSelection); + return (T) FeatureSelectionDialog.select(shell, conversation, (Feature) currentSelection); } if(clazz.equals(FeatureTree.class)){ - return (T) FeatureTreeSelectionDialog.select(shell, conversation, (FeatureTree) curentSelection); + return (T) FeatureTreeSelectionDialog.select(shell, conversation, (FeatureTree) currentSelection); } if(clazz.equals(PolytomousKey.class)){ - return (T) PolytomousKeySelectionDialog.select(shell, conversation, (PolytomousKey) curentSelection); + return (T) PolytomousKeySelectionDialog.select(shell, conversation, (PolytomousKey) currentSelection); } if(clazz.equals(PolytomousKeyNode.class)){ MessagingUtils.warningDialog("Not implemented yet", SelectionDialogFactory.class, @@ -90,37 +90,37 @@ public class SelectionDialogFactory { return null; } if(clazz.equals(DerivedUnit.class)){ - return (T) DerivedUnitSelectionDialog.select(shell, conversation, (DerivedUnit) curentSelection); + return (T) DerivedUnitSelectionDialog.select(shell, conversation, (DerivedUnit) currentSelection); } if(clazz.equals(FieldUnit.class)){ - return (T) FieldUnitSelectionDialog.select(shell, conversation, (FieldUnit) curentSelection); + return (T) FieldUnitSelectionDialog.select(shell, conversation, (FieldUnit) currentSelection); } if(clazz.equals(NamedArea.class)){ - return (T) NamedAreaSelectionDialog.select(shell, conversation, (NamedArea) curentSelection); + return (T) NamedAreaSelectionDialog.select(shell, conversation, (NamedArea) currentSelection); } if(clazz.equals(Collection.class)){ - return (T) CollectionSelectionDialog.select(shell, conversation, (Collection) curentSelection); + return (T) CollectionSelectionDialog.select(shell, conversation, (Collection) currentSelection); } if(clazz.equals(User.class)){ - return (T) UserSelectionDialog.select(shell, conversation, (User) curentSelection); + return (T) UserSelectionDialog.select(shell, conversation, (User) currentSelection); } if(clazz.equals(GrantedAuthorityImpl.class)){ - return (T) GrantedAuthoritySelectionDialog.select(shell, conversation, (GrantedAuthorityImpl) curentSelection); + return (T) GrantedAuthoritySelectionDialog.select(shell, conversation, (GrantedAuthorityImpl) currentSelection); } if (clazz.equals(Person.class)){ - return (T) PersonSelectionDialog.select(shell, conversation, (Person) curentSelection); + return (T) PersonSelectionDialog.select(shell, conversation, (Person) currentSelection); } if(clazz.equals(Group.class)){ - return (T) GroupSelectionDialog.select(shell, conversation, (Group) curentSelection); + return (T) GroupSelectionDialog.select(shell, conversation, (Group) currentSelection); } if(clazz.equals(Institution.class)){ - return (T) InstitutionSelectionDialog.select(shell, conversation, (Institution) curentSelection); + return (T) InstitutionSelectionDialog.select(shell, conversation, (Institution) currentSelection); } if(clazz.equals(Primer.class)){ - return (T) PrimerSelectionDialog.select(shell, conversation, (Primer) curentSelection); + return (T) PrimerSelectionDialog.select(shell, conversation, (Primer) currentSelection); } if(clazz.equals(Amplification.class)){ - return (T) AmplificationSelectionDialog.select(shell, conversation, (Amplification) curentSelection); + return (T) AmplificationSelectionDialog.select(shell, conversation, (Amplification) currentSelection); } return null; -- 2.34.1