merge-update from trunk
authorPatric Plitzner <p.plitzner@bgbm.org>
Tue, 31 Mar 2015 08:10:50 +0000 (08:10 +0000)
committerPatric Plitzner <p.plitzner@bgbm.org>
Tue, 31 Mar 2015 08:10:50 +0000 (08:10 +0000)
eu.etaxonomy.taxeditor.cdmlib/META-INF/MANIFEST.MF
eu.etaxonomy.taxeditor.editor/plugin.xml
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/OpenDerivateViewHandler.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientDescriptionService.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/DescriptiveViewPart.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/handler/DescriptionsMenuPropertyTester.java

index fb798ac7535d7455a7cb6a0b0aa1aa1ec87936ea..25285cae4349901f3f3beb6a58e0ebcc5641ffa2 100644 (file)
@@ -120,6 +120,7 @@ Export-Package: com.google.api,
  eu.etaxonomy.cdm.persistence.dao.reference,
  eu.etaxonomy.cdm.persistence.dao.taxon,
  eu.etaxonomy.cdm.persistence.dao.validation,
+ eu.etaxonomy.cdm.persistence.dto,
  eu.etaxonomy.cdm.persistence.fetch,
  eu.etaxonomy.cdm.persistence.hibernate,
  eu.etaxonomy.cdm.persistence.hibernate.permission,
index abf1ecd2120db6273a242c3830ba70ffede8ff4e..9c398be754c0b4ca8125ac9de555399e92a7312e 100644 (file)
                style="push">
             <visibleWhen
                   checkEnabled="true">
+               <and>
                <with
                      variable="selection">
                   <count
                         value="+">
                   </count>
                </with>
+                  <reference
+                        definitionId="isIndividualsAssociation">
+                  </reference>
+               </and>
             </visibleWhen>
          </command>
          <command
             </test>
          </with>
       </definition>
+      <definition
+            id="isIndividualsAssociation">
+         <with
+               variable="selection">
+            <test
+                  property="eu.etaxonomy.taxeditor.descriptions.propertyTester.isIndividualsAssociation">
+            </test>
+         </with>
+      </definition>
       <definition
             id="isSequence">
          <with
             class="eu.etaxonomy.taxeditor.editor.view.descriptive.handler.DescriptionsMenuPropertyTester"
             id="eu.etaxonomy.taxeditor.descriptions.PropertyTester"
             namespace="eu.etaxonomy.taxeditor.descriptions.propertyTester"
-            properties="isMedia,isDescription,isDescriptionElement,isDeletable,isFeatureNodeContainer,isImageGallery,isTaxonEditor,isBulkEditor,isDerivateEditor"
+            properties="isMedia,isDescription,isDescriptionElement,isDeletable,isFeatureNodeContainer,isImageGallery,isTaxonEditor,isBulkEditor,isDerivateEditor, isIndividualsAssociation"
             type="org.eclipse.jface.viewers.TreeSelection">
       </propertyTester>
       <propertyTester
index 33fc69beefa6f36b5780c6c924695bef7a918e67..412cabedd6d2856c44bc4ff79b8d2a5a089f1b51 100644 (file)
@@ -42,13 +42,18 @@ public class OpenDerivateViewHandler extends AbstractHandler {
                     }
                 }
             }
-            DerivateViewEditorInput input = new DerivateViewEditorInput(selectedElementUUIDs);
-            try {
-                EditorUtil.open(input);
-            } catch (PartInitException e) {
-                MessagingUtils.error(OpenDerivateViewHandler.class, "Could not open Derivate Editor", e);
-            } catch (NullPointerException npe){
-                MessagingUtils.messageDialog("Failed to open Editor", OpenDerivateViewHandler.class, "Could not open Derivate Editor. The derivate hierarchy is corrupted!", npe);
+            if(!selectedElementUUIDs.isEmpty()){
+                DerivateViewEditorInput input = new DerivateViewEditorInput(selectedElementUUIDs);
+                try {
+                    EditorUtil.open(input);
+                } catch (PartInitException e) {
+                    MessagingUtils.error(OpenDerivateViewHandler.class, "Could not open Derivate Editor", e);
+                } catch (NullPointerException npe){
+                    MessagingUtils.messageDialog("Failed to open Editor", OpenDerivateViewHandler.class, "Could not open Derivate Editor. The derivate hierarchy is corrupted!", npe);
+                }
+            }
+            else{
+                MessagingUtils.informationDialog("Empty selection", "No Specimen selected.");
             }
         }
         return null;
index 0304e35d5b24cd4e6e9bf02aba85cce1aaef8986..b418af0a21501343e63e9c93214d2ca6099682c1 100644 (file)
@@ -28,7 +28,6 @@ import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurato
 import eu.etaxonomy.cdm.api.service.dto.FindByIdentifierDTO;
 import eu.etaxonomy.cdm.api.service.pager.Pager;
 import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
-import eu.etaxonomy.cdm.model.agent.AgentBase;
 import eu.etaxonomy.cdm.model.common.Annotation;
 import eu.etaxonomy.cdm.model.common.DefinedTerm;
 import eu.etaxonomy.cdm.model.common.ISourceable;
@@ -55,6 +54,7 @@ import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.view.AuditEvent;
 import eu.etaxonomy.cdm.model.view.AuditEventRecord;
 import eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort;
+import eu.etaxonomy.cdm.persistence.dto.TermDto;
 import eu.etaxonomy.cdm.persistence.query.Grouping;
 import eu.etaxonomy.cdm.persistence.query.MatchMode;
 import eu.etaxonomy.cdm.persistence.query.OrderHint;
@@ -1081,14 +1081,6 @@ public class TransientDescriptionService implements IDescriptionService {
         defaultService.moveDescriptionElementsToDescription(descriptionElements, targetDescription, isPaste);
     }
 
-    /* (non-Javadoc)
-     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#pageNamedAreasInUse(java.lang.Integer, java.lang.Integer, java.util.List)
-     */
-    @Override
-    public Pager<NamedArea> pageNamedAreasInUse(Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
-        return defaultService.pageNamedAreasInUse(pageSize, pageNumber, propertyPaths);
-    }
-
     /* (non-Javadoc)
      * @see eu.etaxonomy.cdm.api.service.IDescriptionService#getOrderedDistributions(java.util.Set, boolean, boolean, java.util.Set, java.util.Set, java.util.List)
      */
@@ -1108,7 +1100,7 @@ public class TransientDescriptionService implements IDescriptionService {
        public DescriptionBase findWithoutFlush(UUID uuid) {
                return defaultService.findWithoutFlush(uuid);
        }
-       
+
        @Override
        public <S extends DescriptionBase>  Pager<FindByIdentifierDTO<S>> findByIdentifier(Class<S> clazz, String identifier, DefinedTerm identifierType, MatchMode matchmode, boolean includeEntity, Integer pageSize, Integer pageNumber, List<String> propertyPaths){
                return defaultService.findByIdentifier(clazz, identifier, identifierType, matchmode, includeEntity, pageSize, pageNumber, propertyPaths);
@@ -1118,4 +1110,12 @@ public class TransientDescriptionService implements IDescriptionService {
        public UUID deleteDescription(DescriptionBase description) {
                return defaultService.deleteDescription(description);
        }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.cdm.api.service.IDescriptionService#pageNamedAreasInUse(boolean, java.lang.Integer, java.lang.Integer)
+        */
+       @Override
+       public Pager<TermDto> pageNamedAreasInUse(boolean includeAllParents, Integer pageSize, Integer pageNumber) {
+           return defaultService.pageNamedAreasInUse(includeAllParents, pageSize, pageNumber);
+       }
 }
index eafaa0b0812d5b0cae958e4c9c7b92f00dc2c172..c51d856584b6f0b6fd9764d49a25e07704cdcbd2 100644 (file)
@@ -146,7 +146,9 @@ public class DescriptiveViewPart extends AbstractCdmEditorViewPart implements IP
                     }
                 }
                 try {
-                    EditorUtil.open(new DerivateViewEditorInput(specimenUuids));
+                    if(!specimenUuids.isEmpty()){
+                        EditorUtil.open(new DerivateViewEditorInput(specimenUuids));
+                    }
                 } catch (PartInitException e) {
                     MessagingUtils.error(DescriptiveViewPart.class, "Could not open Derivate Editor", e);
                 }
@@ -213,6 +215,7 @@ public class DescriptiveViewPart extends AbstractCdmEditorViewPart implements IP
        @Override
     protected void selectionChanged_internal(IWorkbenchPart part, ISelection selection) {
                if(AbstractUtility.getActiveEditor() == null){
+                   setPartName("Factual Data");
                        showEmptyPage();
                        return;
                }
@@ -241,10 +244,12 @@ public class DescriptiveViewPart extends AbstractCdmEditorViewPart implements IP
                        && ((IStructuredSelection) selection).getFirstElement() instanceof IDescribable<?>
                        && part instanceof IPartContentHasFactualData  && !(((IStructuredSelection) selection).getFirstElement() instanceof SpecimenOrObservationBase && part instanceof BulkEditor)){
                    featureNodeContainerCache.clear();
+               setPartName("Factual Data: " + ((IStructuredSelection) selection).getFirstElement());
                    showViewer(part, (IStructuredSelection) selection);
                    return;
                }
                else{
+            setPartName("Factual Data");
                    showEmptyPage();
                }
        }
index 1e0ad222c922106be512f45ab8d5f531177e7a94..3030ef4a3c1f33e295c00e5a8000bdb0a67c33f5 100644 (file)
@@ -8,6 +8,7 @@ import org.eclipse.jface.viewers.IStructuredSelection;
 
 import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
+import eu.etaxonomy.cdm.model.description.IndividualsAssociation;
 import eu.etaxonomy.cdm.model.media.Media;
 import eu.etaxonomy.taxeditor.bulkeditor.BulkEditor;
 import eu.etaxonomy.taxeditor.editor.MultiPageTaxonEditor;
@@ -27,6 +28,7 @@ public class DescriptionsMenuPropertyTester extends PropertyTester {
        private static final String MEDIA = "isMedia";
        private static final String FEATURE_NODE_CONTAINER = "isFeatureNodeContainer";
        private static final String DESCRIPTION = "isDescription";
+       private static final String INDIVIDUALS_ASSOCIATION = "isIndividualsAssociation";
        private static final String DESCRIPTION_ELEMENT = "isDescriptionElement";
        private static final String DELETABLE = "isDeletable";
        private static final String IMAGE_GALLERY = "isImageGallery";
@@ -68,6 +70,9 @@ public class DescriptionsMenuPropertyTester extends PropertyTester {
                else if(DESCRIPTION.equals(property)){
                        return isDescription(selectedElements);
                }
+               else if(INDIVIDUALS_ASSOCIATION.equals(property)){
+                   return isIndividualsAssociation(selectedElements);
+               }
                else if(DESCRIPTION_ELEMENT.equals(property)){
                        return isDescriptionElement(selectedElements);
                }
@@ -84,7 +89,7 @@ public class DescriptionsMenuPropertyTester extends PropertyTester {
 
        private boolean isImageGallery(Object[] selectedElements) {
                for (Object object : selectedElements){
-                       if(!(object instanceof DescriptionBase) || !((DescriptionBase) object).isImageGallery()){
+                       if(!(object instanceof DescriptionBase) || !((DescriptionBase<?>) object).isImageGallery()){
                                return false;
                        }
                }
@@ -136,6 +141,15 @@ public class DescriptionsMenuPropertyTester extends PropertyTester {
                return true;
        }
 
+       private boolean isIndividualsAssociation(Object[] selectedElements) {
+           for (Object object : selectedElements){
+               if(!(object instanceof IndividualsAssociation)){
+                   return false;
+               }
+           }
+           return true;
+       }
+
        private boolean isMedia(Object[] selectedElements) {
                for (Object object : selectedElements){
                        if(!(object instanceof Media)){