ref #7775 Add option "Create new factual data set with sources"
authorPatrick Plitzner <p.plitzner@bgbm.org>
Thu, 20 Sep 2018 12:36:45 +0000 (14:36 +0200)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Thu, 20 Sep 2018 13:03:21 +0000 (15:03 +0200)
eu.etaxonomy.taxeditor.editor/OSGI-INF/l10n/plugin.properties
eu.etaxonomy.taxeditor.editor/fragment.e4xmi
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/e4/handler/CreateDescriptionHandlerE4.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/e4/handler/CreateDescriptionWithSourceHandler.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/CreateSpecimenDescriptionOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/CreateTaxonDescriptionOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/handler/AddImageGalleryHandler.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/operation/CreateTaxonUseOperation.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/operation/AbstractDescriptionPostOperation.java

index 8e7bc66f4d6fcf587afd65a20fde1484011de345..4dace35da14ff90d3b35edcc23fbf8b0a266291d 100755 (executable)
@@ -249,3 +249,10 @@ handledmenuitem.label.16 = Character Editor
 handledmenuitem.tooltip.4 = Character Editor
 handledmenuitem.label.17 = Remove Taxon
 command.commandname.21 = Remove taxon
+
+handledmenuitem.label.18 = New Factual Data Set with source
+handledmenuitem.label.19 = Create default description
+handledmenuitem.label.20 = Create literature description
+command.commandname.22 = Create default taxon description
+command.commandname.23 = Create literature taxon description
+command.commandname.24 = New description with source
index 6254cafc27dead58766cc9c117993f0fc6edffe8..ee0c9c36a7298584327e7f2516a8c295791d0b4b 100644 (file)
       <handlers xmi:id="_xJ3XUIy0EeeQaL4TL8oz7Q" elementId="eu.etaxonomy.taxeditor.editor.view.descriptive.e4.handler.ToggleShowOnlyIndividualAssociationsHandlerE4" contributionURI="bundleclass://eu.etaxonomy.taxeditor.editor/eu.etaxonomy.taxeditor.editor.view.descriptive.e4.handler.ToggleShowOnlyIndividualAssociationsHandlerE4" command="_4eDWoIy0EeeQaL4TL8oz7Q"/>
       <handlers xmi:id="_Te6qAIy3EeeQaL4TL8oz7Q" elementId="eu.etaxonomy.taxeditor.editor.factualData.saveHandler" contributionURI="bundleclass://eu.etaxonomy.taxeditor.workbench/eu.etaxonomy.taxeditor.workbench.SaveHandler" command="_majwMEaQEeeXMc6kSYO7Xg"/>
       <handlers xmi:id="_Epa7oJMpEeeR4YRjNqCKeA" elementId="eu.etaxonomy.taxeditor.editor.view.derivate.handler.OpenDerivativeEditorForDescriptionElement" contributionURI="bundleclass://eu.etaxonomy.taxeditor.editor/eu.etaxonomy.taxeditor.editor.view.derivate.handler.OpenDerivativeEditorForDescriptionElement" command="_j2cfsJMmEeeR4YRjNqCKeA"/>
+      <handlers xmi:id="_tc-7wLy2EeioE565ihOF2g" elementId="eu.etaxonomy.taxeditor.editor.view.descriptive.e4.handler.CreateDescriptionWithSourceHandler" contributionURI="bundleclass://eu.etaxonomy.taxeditor.editor/eu.etaxonomy.taxeditor.editor.view.descriptive.e4.handler.CreateDescriptionWithSourceHandler" command="_Z51sQLy2EeioE565ihOF2g"/>
       <menus xsi:type="menu:PopupMenu" xmi:id="_HxxDt4GxEeehlNPrK_b5JA" elementId="eu.etaxonomy.taxeditor.editor.popupmenu.factualDataView">
         <visibleWhen xsi:type="ui:CoreExpression" xmi:id="_bMfdYIG5EeehlNPrK_b5JA" coreExpressionId="isCdmStoreConnected"/>
         <children xsi:type="menu:HandledMenuItem" xmi:id="_jvmnkIGxEeehlNPrK_b5JA" elementId="eu.etaxonomy.taxeditor.editor.handledmenuitem.factualData.addDescription" label="%command.label.27" command="_gE3lwIGyEeehlNPrK_b5JA"/>
-        <children xsi:type="menu:DynamicMenuContribution" xmi:id="_2t3BgIHWEeehlNPrK_b5JA" elementId="eu.etaxonomy.taxeditor.editor.view.descriptive.e4.handler.DynamicFeatureMenuE4" contributionURI="bundleclass://eu.etaxonomy.taxeditor.editor/eu.etaxonomy.taxeditor.editor.view.descriptive.e4.handler.DynamicFeatureMenuE4"/>
+        <children xsi:type="menu:HandledMenuItem" xmi:id="_Im49wLy2EeioE565ihOF2g" elementId="eu.etaxonomy.taxeditor.editor.handledmenuitem.newfactualdatasetwithsource" label="%handledmenuitem.label.18" command="_Z51sQLy2EeioE565ihOF2g"/>
         <children xsi:type="menu:MenuSeparator" xmi:id="_ij_wEIGxEeehlNPrK_b5JA" elementId="eu.etaxonomy.taxeditor.editor.menuseparator.8"/>
+        <children xsi:type="menu:HandledMenuItem" xmi:id="_m00sEIGxEeehlNPrK_b5JA" elementId="eu.etaxonomy.taxeditor.editor.factualData.moveDescriptionElement" label="%command.label.29" command="_QJzBcIG4EeehlNPrK_b5JA"/>
         <children xsi:type="menu:HandledMenuItem" xmi:id="_mgmvkIGxEeehlNPrK_b5JA" elementId="eu.etaxonomy.taxeditor.editor.factualData.moveDescriptionToTaxon" label="%command.label.28" command="_Al6c0IG4EeehlNPrK_b5JA">
           <visibleWhen xsi:type="ui:CoreExpression" xmi:id="_BZrDwIGyEeehlNPrK_b5JA" coreExpressionId="isDescription"/>
         </children>
-        <children xsi:type="menu:HandledMenuItem" xmi:id="_m00sEIGxEeehlNPrK_b5JA" elementId="eu.etaxonomy.taxeditor.editor.factualData.moveDescriptionElement" label="%command.label.29" command="_QJzBcIG4EeehlNPrK_b5JA"/>
+        <children xsi:type="menu:DynamicMenuContribution" xmi:id="_2t3BgIHWEeehlNPrK_b5JA" elementId="eu.etaxonomy.taxeditor.editor.view.descriptive.e4.handler.DynamicFeatureMenuE4" contributionURI="bundleclass://eu.etaxonomy.taxeditor.editor/eu.etaxonomy.taxeditor.editor.view.descriptive.e4.handler.DynamicFeatureMenuE4"/>
         <children xsi:type="menu:MenuSeparator" xmi:id="_nRINkIGxEeehlNPrK_b5JA" elementId="eu.etaxonomy.taxeditor.editor.menuseparator.9"/>
         <children xsi:type="menu:DynamicMenuContribution" xmi:id="_4KNqkIGxEeehlNPrK_b5JA" elementId="eu.etaxonomy.taxeditor.editor.factual.dynamicmenucontribution.cdmViewer" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.view.CdmViewerContextMenuE4"/>
         <children xsi:type="menu:MenuSeparator" xmi:id="_pOAxAIGxEeehlNPrK_b5JA" elementId="eu.etaxonomy.taxeditor.editor.menuseparator.10"/>
         <children xsi:type="menu:HandledMenuItem" xmi:id="_TGK04OPBEeeIH8IplZ0cuA" elementId="eu.etaxonomy.taxeditor.editor.handledmenuitem.characterMatrix.export" label="%handledmenuitem.label.12" iconURI="platform:/plugin/eu.etaxonomy.taxeditor.store/icons/export.gif" command="_YeWagOPBEeeIH8IplZ0cuA"/>
       </menus>
       <menus xsi:type="menu:PopupMenu" xmi:id="__10yYLKREeikjKoOnLFm2w" elementId="eu.etaxonomy.taxeditor.editor.popupmenu.charactermatrix">
-        <children xsi:type="menu:HandledMenuItem" xmi:id="_AyHbgLKSEeikjKoOnLFm2w" elementId="eu.etaxonomy.taxeditor.editor.handledmenuitem.createdefaultdescription" label="Create default description" command="_ZHC3oLKVEeikjKoOnLFm2w"/>
-        <children xsi:type="menu:HandledMenuItem" xmi:id="_DYlHcLKSEeikjKoOnLFm2w" elementId="eu.etaxonomy.taxeditor.editor.handledmenuitem.createliteraturedescription" label="Create literature description" command="_fkPkkLKVEeikjKoOnLFm2w"/>
+        <children xsi:type="menu:HandledMenuItem" xmi:id="_AyHbgLKSEeikjKoOnLFm2w" elementId="eu.etaxonomy.taxeditor.editor.handledmenuitem.createdefaultdescription" label="%handledmenuitem.label.19" command="_ZHC3oLKVEeikjKoOnLFm2w"/>
+        <children xsi:type="menu:HandledMenuItem" xmi:id="_DYlHcLKSEeikjKoOnLFm2w" elementId="eu.etaxonomy.taxeditor.editor.handledmenuitem.createliteraturedescription" label="%handledmenuitem.label.20" command="_fkPkkLKVEeikjKoOnLFm2w"/>
       </menus>
     </elements>
     <elements xsi:type="basic:PartDescriptor" xmi:id="_XcQMEN8mEee9zP45RW4C3A" elementId="eu.etaxonomy.taxeditor.editor.descriptiveDataSet.DescriptiveDataSetNavigator" label="%partdescriptor.label.5" closeable="true" contributionURI="bundleclass://eu.etaxonomy.taxeditor.editor/eu.etaxonomy.taxeditor.editor.descriptiveDataSet.DescriptiveDataSetNavigator">
     <elements xsi:type="commands:Command" xmi:id="_c3wW8FeBEeiJAP3GTkE0aQ" elementId="eu.etaxonomy.taxeditor.editor.command.descriptivedataseteditor.removeTaxon" commandName="%command.commandname.21"/>
     <elements xsi:type="commands:Command" xmi:id="_HSKdYFgXEeiQk_eTMvMviQ" elementId="eu.etaxonomy.taxeditor.editor.name.createProParteSynonym" commandName="%command.name.60"/>
     <elements xsi:type="commands:Command" xmi:id="_BgX6gFj_EeiQk_eTMvMviQ" elementId="eu.etaxonomy.taxeditor.editor.command.changeToProParteSynonym" commandName="%command.name.61"/>
-    <elements xsi:type="commands:Command" xmi:id="_ZHC3oLKVEeikjKoOnLFm2w" elementId="eu.etaxonomy.taxeditor.editor.charactermatrix.command.createDefaultTaxonDescription" commandName="Create default taxon description"/>
-    <elements xsi:type="commands:Command" xmi:id="_fkPkkLKVEeikjKoOnLFm2w" elementId="eu.etaxonomy.taxeditor.editor.charactermatrix.command.createLiteratureTaxonDescription" commandName="Create literature taxon description"/>
+    <elements xsi:type="commands:Command" xmi:id="_ZHC3oLKVEeikjKoOnLFm2w" elementId="eu.etaxonomy.taxeditor.editor.charactermatrix.command.createDefaultTaxonDescription" commandName="%command.commandname.22"/>
+    <elements xsi:type="commands:Command" xmi:id="_fkPkkLKVEeikjKoOnLFm2w" elementId="eu.etaxonomy.taxeditor.editor.charactermatrix.command.createLiteratureTaxonDescription" commandName="%command.commandname.23"/>
+    <elements xsi:type="commands:Command" xmi:id="_Z51sQLy2EeioE565ihOF2g" elementId="eu.etaxonomy.taxeditor.editor.view.descriptive.command.adddescriptionWithSource" commandName="%command.commandname.24"/>
   </fragments>
   <fragments xsi:type="fragment:StringModelFragment" xmi:id="_pZmusEalEeeXMc6kSYO7Xg" featurename="children" parentElementId="eu.etaxonomy.taxeditor.menu.showView" positionInList="after:eu.etaxonomy.taxeditor.workbench.menuseparator.navigation">
     <elements xsi:type="menu:HandledMenuItem" xmi:id="_FPIHQKNwEeebGZ23ERGMGw" elementId="eu.etaxonomy.taxeditor.editor.showViewMenu.conceptGraph" label="%view.name.3" iconURI="" tooltip="%view.name.3" command="_WPjpoDSnEeek0dKsFNy--Q">
index b9920165cc9b022e633c632cadf8fd6dc7c15d28..89b05491bbdcb8677a86f37976431990e8c7e058 100644 (file)
@@ -58,9 +58,8 @@ public class CreateDescriptionHandlerE4 {
         }
        }
 
-          /** {@inheritDoc} */
     protected CreateTaxonDescriptionOperation createTaxonOperation(String eventLabel, Taxon taxon, IPostOperationEnabled postOperationEnabled) {
-        return new CreateTaxonDescriptionOperation(eventLabel, EditorUtil.getUndoContext(), taxon, postOperationEnabled);
+        return new CreateTaxonDescriptionOperation(eventLabel, EditorUtil.getUndoContext(), taxon, null, postOperationEnabled);
     }
 
 }
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/e4/handler/CreateDescriptionWithSourceHandler.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/e4/handler/CreateDescriptionWithSourceHandler.java
new file mode 100644 (file)
index 0000000..195bd45
--- /dev/null
@@ -0,0 +1,66 @@
+/**
+* Copyright (C) 2018 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.editor.view.descriptive.e4.handler;
+
+import javax.inject.Named;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.di.UISynchronize;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuItem;
+import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.jface.viewers.TreeNode;
+import org.eclipse.swt.widgets.Shell;
+
+import eu.etaxonomy.cdm.model.common.IdentifiableSource;
+import eu.etaxonomy.cdm.model.common.OriginalSourceType;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
+import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
+import eu.etaxonomy.taxeditor.editor.view.descriptive.e4.FactualDataPartE4;
+import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.CreateSpecimenDescriptionOperation;
+import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.CreateTaxonDescriptionOperation;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.operation.AbstractDescriptionPostOperation;
+import eu.etaxonomy.taxeditor.ui.dialog.selection.ReferenceSelectionDialog;
+
+/**
+ * @author pplitzner
+ * @since Sep 20, 2018
+ *
+ */
+public class CreateDescriptionWithSourceHandler {
+    @Execute
+    public void execute(@Named(IServiceConstants.ACTIVE_PART) MPart activePart, MMenuItem menuItem,
+            UISynchronize sync, @Named(IServiceConstants.ACTIVE_SHELL) Shell shell) {
+
+        Reference reference = ReferenceSelectionDialog.select(shell, null);
+
+        FactualDataPartE4 factualDataPart = (FactualDataPartE4) activePart.getObject();
+
+        AbstractDescriptionPostOperation operation = null;
+        Object viewerInput = factualDataPart.getViewer().getInput();
+        if (viewerInput instanceof TreeNode) {
+            viewerInput = ((TreeNode) viewerInput).getValue();
+        }
+        if (viewerInput instanceof SpecimenOrObservationBase<?>) {
+            operation = new CreateSpecimenDescriptionOperation(menuItem.getLocalizedLabel(),
+                    EditorUtil.getUndoContext(), (SpecimenOrObservationBase<?>) viewerInput, factualDataPart);
+            AbstractUtility.executeOperation(operation, sync);
+        }
+        if (viewerInput instanceof TaxonBase) {
+            operation = new CreateTaxonDescriptionOperation(menuItem.getLocalizedLabel(), EditorUtil.getUndoContext(),
+                    (Taxon) viewerInput,
+                    IdentifiableSource.NewInstance(OriginalSourceType.Unknown, null, null, reference, null), factualDataPart);
+            AbstractUtility.executeOperation(operation, sync);
+        }
+    }
+}
index cf8e10e2012e1f471e5d61a10218fa89310785be..1433b75c23e689bc37c259ffd568c95c1a0c0cf0 100644 (file)
@@ -23,19 +23,10 @@ import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
  */
 public class CreateSpecimenDescriptionOperation extends AbstractDescriptionPostOperation<SpecimenOrObservationBase, DescriptionBase> {
 
-    /**
-     * @param label
-     * @param undoContext
-     * @param describable
-     * @param postOperationEnabled
-     */
     public CreateSpecimenDescriptionOperation(String label, IUndoContext undoContext, SpecimenOrObservationBase<?> describable, IPostOperationEnabled postOperationEnabled) {
-        super(label, undoContext, describable, postOperationEnabled);
+        super(label, undoContext, describable, null, postOperationEnabled);
     }
 
-    /* (non-Javadoc)
-     * @see eu.etaxonomy.taxeditor.operation.AbstractDescriptionPostOperation#initDescription()
-     */
     @Override
     protected void initDescription() {
         description = SpecimenDescription.NewInstance(element);
index 45e6fe8c9ee331a3a2e84890f7940ca4ffcd6848..b869d3470897e82072413d9c2b966f85fa50f3d8 100644 (file)
@@ -10,6 +10,7 @@ package eu.etaxonomy.taxeditor.editor.view.descriptive.operation;
 
 import org.eclipse.core.commands.operations.IUndoContext;
 
+import eu.etaxonomy.cdm.model.common.IdentifiableSource;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.taxeditor.operation.AbstractDescriptionPostOperation;
@@ -22,26 +23,14 @@ import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
  */
 public class CreateTaxonDescriptionOperation extends AbstractDescriptionPostOperation<Taxon, TaxonDescription> {
 
-    /**
-     * @param label
-     * @param undoContext
-     * @param describable
-     * @param postOperationEnabled
-     * @param isImageGallery
-     */
-    public CreateTaxonDescriptionOperation(String label, IUndoContext undoContext, Taxon describable, IPostOperationEnabled postOperationEnabled) {
-        super(label, undoContext, describable, postOperationEnabled, false);
+    public CreateTaxonDescriptionOperation(String label, IUndoContext undoContext, Taxon describable,
+            IdentifiableSource source, IPostOperationEnabled postOperationEnabled) {
+        super(label, undoContext, describable, source, postOperationEnabled, false);
     }
 
-    /**
-     * @param label
-     * @param undoContext
-     * @param describable
-     * @param postOperationEnabled
-     * @param isImageGallery
-     */
-    public CreateTaxonDescriptionOperation(String label, IUndoContext undoContext, Taxon describable, IPostOperationEnabled postOperationEnabled, boolean isImageGallery) {
-        super(label, undoContext, describable, postOperationEnabled, isImageGallery);
+    public CreateTaxonDescriptionOperation(String label, IUndoContext undoContext, Taxon describable,
+            IdentifiableSource source, IPostOperationEnabled postOperationEnabled, boolean isImageGallery) {
+        super(label, undoContext, describable, source, postOperationEnabled, isImageGallery);
     }
 
     @Override
index d7f07cc47d2c3907eff33afde082c78e4b436160..c7e720062c909bec4de163d6c5c6c9c2c1165c30 100644 (file)
@@ -44,7 +44,7 @@ public class AddImageGalleryHandler {
                 Taxon taxon = HibernateProxyHelper.deproxy(viewerInput, Taxon.class);
 
                 AbstractPostOperation<?> operation = new CreateTaxonDescriptionOperation(menuItem.getLocalizedLabel(),
-                        EditorUtil.getUndoContext(), taxon, mediaView, true);
+                        EditorUtil.getUndoContext(), taxon, null, mediaView, true);
 
                 AbstractUtility.executeOperation(operation, sync);
             }
index 2fd4499540533e2bab0e1f547271486ea35add04..3f9b5828f3e11f2b10736e7b0f3ad505c71f8c3c 100644 (file)
@@ -55,7 +55,7 @@ public class CreateTaxonUseOperation extends CreateTaxonDescriptionOperation {
         */\r
        public CreateTaxonUseOperation(String label, IUndoContext undoContext,\r
                        Taxon taxon, IPostOperationEnabled postOperationEnabled, boolean isImageGallery) {\r
-               super(label, undoContext, taxon, postOperationEnabled);\r
+               super(label, undoContext, taxon, null, postOperationEnabled);\r
        }\r
 \r
 \r
index e156a433ede679f44d11b1d302649dfbf23ddce6..aa3c2b82ced1343c347a2f75ee0ff33c3dec628b 100644 (file)
@@ -14,6 +14,7 @@ import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 
+import eu.etaxonomy.cdm.model.common.IdentifiableSource;
 import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.description.Feature;
 import eu.etaxonomy.cdm.model.description.IDescribable;
@@ -28,32 +29,30 @@ import eu.etaxonomy.cdm.model.media.Media;
 public abstract class AbstractDescriptionPostOperation<T extends IDescribable, D extends DescriptionBase> extends AbstractPostOperation<T> {
 
     protected D description;
+    protected IdentifiableSource source;
 
     private final boolean isImageGallery;
 
-    /**
-     *
-     */
     public AbstractDescriptionPostOperation(String label, IUndoContext undoContext,
-            T describable, IPostOperationEnabled postOperationEnabled) {
-        this(label, undoContext, describable, postOperationEnabled, false);
+            T describable, IdentifiableSource source, IPostOperationEnabled postOperationEnabled) {
+        this(label, undoContext, describable, source, postOperationEnabled, false);
     }
 
-    /**
-     *
-     */
     public AbstractDescriptionPostOperation(String label, IUndoContext undoContext,
-            T describable, IPostOperationEnabled postOperationEnabled,  boolean isImageGallery) {
+            T describable, IdentifiableSource source, IPostOperationEnabled postOperationEnabled,  boolean isImageGallery) {
         super(label, undoContext, describable, postOperationEnabled);
         this.isImageGallery = isImageGallery;
+        this.source = source;
     }
 
-    /** {@inheritDoc} */
     @Override
     public IStatus execute(IProgressMonitor monitor, IAdaptable info)
             throws ExecutionException {
 
         initDescription();
+        if(source!=null){
+            description.addSource(source);
+        }
         monitor.worked(20);
 
         if(isImageGallery){
@@ -73,7 +72,6 @@ public abstract class AbstractDescriptionPostOperation<T extends IDescribable, D
      */
     protected abstract void initDescription();
 
-    /** {@inheritDoc} */
     @Override
     public IStatus redo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
 
@@ -82,7 +80,6 @@ public abstract class AbstractDescriptionPostOperation<T extends IDescribable, D
        return postExecute(description);
     }
 
-    /** {@inheritDoc} */
     @Override
     public IStatus undo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {