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