From: Patric Plitzner Date: Mon, 8 Jun 2015 11:46:40 +0000 (+0000) Subject: merge-update from trunk X-Git-Tag: 3.8.0^2~59^2~63 X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/commitdiff_plain/91a93eb28d457a498a8c388d0fab8fae732740fc?hp=eb582aa53860a55e1de305db5735cdfe3b862a0e merge-update from trunk --- diff --git a/.gitattributes b/.gitattributes index e84077c20..1f8c325ff 100644 --- a/.gitattributes +++ b/.gitattributes @@ -82,11 +82,14 @@ eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkedito eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorViewerConfiguration.java -text eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/IBulkEditorConstants.java -text eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/IBulkEditorSortProvider.java -text +eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/BulkEditorMenuPropertyTester.java -text eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/BulkEditorPropertyTester.java -text eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/DeleteObjectContributionItem.java -text eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/DynamicMarkerTypeEditingMenu.java -text eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/DynamicNewObjectMenu.java -text eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/OpenBulkEditorContributionItem.java -text +eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/ConvertPerson2TeamHandler.java -text +eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/ConvertTeam2PersonHandler.java -text eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/DeleteHandler.java -text eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/MergeGroupHandler.java -text eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/OpenBulkEditorHandler.java -text @@ -355,6 +358,7 @@ eu.etaxonomy.taxeditor.editor/.project -text eu.etaxonomy.taxeditor.editor/META-INF/MANIFEST.MF -text eu.etaxonomy.taxeditor.editor/OSGI-INF/l10n/plugin.properties -text eu.etaxonomy.taxeditor.editor/OSGI-INF/l10n/plugin_de.properties -text +eu.etaxonomy.taxeditor.editor/OSGI-INF/l10n/plugin_en.properties -text eu.etaxonomy.taxeditor.editor/build.properties -text eu.etaxonomy.taxeditor.editor/icons/address-book-new.png -text eu.etaxonomy.taxeditor.editor/icons/camera-photo.png -text @@ -485,6 +489,7 @@ eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/h eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/DeleteAllEmptyNamesHandler.java -text eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/DeleteTaxonBaseHandler.java -text eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/GroupBasionymContributionItem.java -text +eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/MoveSynonymToAnotherAcceptedTaxonHandler.java -text eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/NameEditorMenuPropertyTester.java -text eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/RemoveBasionymHandler.java -text eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/SetBasionymHandler.java -text @@ -1384,6 +1389,7 @@ eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/operation/IPos eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/parser/MatchStrategyConfigurator.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/parser/ParseHandler.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/CdmPreferences.java -text +eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/CdmStorePropertyTester.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/ChecklistEditorGeneralPreference.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/DefaultFeatureTreePreferenecs.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/DescriptionPreferences.java -text @@ -1396,6 +1402,7 @@ eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/Mat eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/MediaPreferences.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/MobotOpenUrlPreferences.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/NomenclaturalCodePreferences.java -text +eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/OrderPreferences.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencePropertyTester.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencesUtil.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/Resources.java -text @@ -1482,6 +1489,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/SpecimenOrObservationTypeSelectionDialog.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/TaxonBaseSelectionDialog.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/TaxonNodeSelectionDialog.java -text +eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/TaxonNodeSelectionNaturalOrderDialog.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/TeamSelectionDialog.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/UserSelectionDialog.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/AbstractCdmEntityWizardPage.java -text diff --git a/eu.etaxonomy.taxeditor.application/OSGI-INF/l10n/plugin.properties b/eu.etaxonomy.taxeditor.application/OSGI-INF/l10n/plugin.properties index 8db829129..37beb7b7d 100644 --- a/eu.etaxonomy.taxeditor.application/OSGI-INF/l10n/plugin.properties +++ b/eu.etaxonomy.taxeditor.application/OSGI-INF/l10n/plugin.properties @@ -13,7 +13,7 @@ extension.name = Taxonomic Editor perspective.name = Taxonomic perspective.name.0 = Polytomous Key perspective.name.1 = Uses -perspective.name.2 = Derivates +perspective.name.2 = Derivatives menu.label = General menu.label.0 = Edit menu.label.1 = Window diff --git a/eu.etaxonomy.taxeditor.bulkeditor/OSGI-INF/l10n/bundle.properties b/eu.etaxonomy.taxeditor.bulkeditor/OSGI-INF/l10n/bundle.properties index 99cd6fa5b..8858bb121 100644 --- a/eu.etaxonomy.taxeditor.bulkeditor/OSGI-INF/l10n/bundle.properties +++ b/eu.etaxonomy.taxeditor.bulkeditor/OSGI-INF/l10n/bundle.properties @@ -14,4 +14,21 @@ command.label.0 = Set Current Line as Target for Duplicate Removal command.label.1 = Set as Candidate(s) for Duplicate Removal command.label.2 = Remove as Candidate(s) for Duplicate Removal command.label.3 = De-Duplicate Group -command.label.4 = Delete \ No newline at end of file +command.label.4 = Delete +command.label.5 = Convert Team to Person +command.name = Merge Group +command.name.0 = Set as Target for Group Merge +command.name.1 = Dynamic Open Bulk Editor +commandParameter.name = Bulk Editor Class +command.name.2 = Dynamic New Object +command.name.3 = Dynamic Delete Object +command.name.4 = Set as Candidate for Group Merge +command.name.5 = Remove as Candidate for Group Merge +command.name.6 = Set Marker Flag +command.name.7 = delete +command.name.8 = convert Team to Person +command.name.9 = convert Person to Team +specification.label = Merge Candidate Annotation +specification.label.0 = Merge Target Annotation +command.label.6 = Convert Person to Team +command.name.10 = convert Person to Team \ No newline at end of file diff --git a/eu.etaxonomy.taxeditor.bulkeditor/plugin.xml b/eu.etaxonomy.taxeditor.bulkeditor/plugin.xml index 0b1fdeab6..f408f10ff 100644 --- a/eu.etaxonomy.taxeditor.bulkeditor/plugin.xml +++ b/eu.etaxonomy.taxeditor.bulkeditor/plugin.xml @@ -128,6 +128,7 @@ + + + + + + + + + + + + + > + + + + + + + + @@ -199,51 +232,59 @@ + name="%command.name"> + name="%command.name.0"> + name="%command.name.1"> + name="%command.name.2"> + name="%command.name.3"> + name="%command.name.4"> + name="%command.name.5"> + name="%command.name.6"> + name="%command.name.7"> + + + + + + - - + defaultHandler="eu.etaxonomy.taxeditor.editor.view.descriptive.handler.DeleteHandler" + id="eu.etaxonomy.taxeditor.editor.view.descriptive.command.delete" + name="%command.name.48"> + + + id="eu.etaxonomy.taxeditor.editor.use.command.delete" + name="%command.name.47"> + + + + @@ -1545,7 +1551,7 @@ name="%command.name.42"> @@ -1565,6 +1571,18 @@ id="eu.etaxonomy.taxeditor.editor.derivate.deepDelete" name="%command.name.44"> + + + + getAllChildDerivatives(SpecimenOrObservationBase specimen) { + return defaultService.getAllChildDerivatives(specimen); + } + + /** + * {@inheritDoc} + */ + @Override + public List> getAllHierarchyDerivatives(SpecimenOrObservationBase specimen) { + return defaultService.getAllHierarchyDerivatives(specimen); + } + } diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java index 8dc0e35a4..7548960d9 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java @@ -166,7 +166,7 @@ public class DerivateView extends EditorPart implements IPartContentHasFactualDa DerivateViewEditorInput derivateViewEditorInput = (DerivateViewEditorInput) getEditorInput(); return derivateViewEditorInput.getName(); } - return "Derivate View"; + return "Derivative View"; } /* (non-Javadoc) diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/handler/OpenDerivateEditorForTaxonHandler.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/handler/OpenDerivateEditorForTaxonHandler.java index ab74d55aa..5f2922765 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/handler/OpenDerivateEditorForTaxonHandler.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/handler/OpenDerivateEditorForTaxonHandler.java @@ -61,16 +61,16 @@ public class OpenDerivateEditorForTaxonHandler extends AbstractHandler { } } if(derivateUuids.isEmpty()){ - MessagingUtils.warningDialog("Could not open Derivate Editor", this, "No Derivates found"); + MessagingUtils.warningDialog("Could not open Derivative Editor", this, "No Derivatives found"); return null; } DerivateViewEditorInput input = new DerivateViewEditorInput(derivateUuids); try { EditorUtil.open(input); } catch (PartInitException e) { - MessagingUtils.error(OpenDerivateViewHandler.class, "Could not open Derivate Editor", e); + MessagingUtils.error(OpenDerivateViewHandler.class, "Could not open Derivative Editor", e); } catch (NullPointerException npe){ - MessagingUtils.messageDialog("Failed to open Editor", OpenDerivateViewHandler.class, "Could not open Derivate Editor. The derivate hierarchy is corrupted!", npe); + MessagingUtils.messageDialog("Failed to open Editor", OpenDerivateViewHandler.class, "Could not open Derivative Editor. The derivative hierarchy is corrupted!", npe); } } return null; diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/operation/MoveDerivateOperation.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/operation/MoveDerivateOperation.java index 960548975..b863dcbe2 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/operation/MoveDerivateOperation.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/operation/MoveDerivateOperation.java @@ -63,7 +63,7 @@ public class MoveDerivateOperation extends AbstractPostOperation { derivateView = (DerivateView) getPostOperationEnabled(); } if(derivateView==null){ - MessagingUtils.operationDialog(this, new NullPointerException("DerivateView was null"), TaxeditorEditorPlugin.PLUGIN_ID, this.getLabel(), getLabel()); + MessagingUtils.operationDialog(this, new NullPointerException("DerivativeView was null"), TaxeditorEditorPlugin.PLUGIN_ID, this.getLabel(), getLabel()); return Status.CANCEL_STATUS; } if(derivateView.isDirty()){ @@ -79,7 +79,7 @@ public class MoveDerivateOperation extends AbstractPostOperation { return postExecute(null); } else{ - MessagingUtils.warningDialog("Moving derivate not possible!", derivateView, "Moving \""+derivateView.getLabelProvider().getDerivateText(draggedNode)+"\" to \""+derivateView.getLabelProvider().getDerivateText(targetNode)+"\" is not possible!"); + MessagingUtils.warningDialog("Moving derivatives not possible!", derivateView, "Moving \""+derivateView.getLabelProvider().getDerivateText(draggedNode)+"\" to \""+derivateView.getLabelProvider().getDerivateText(targetNode)+"\" is not possible!"); } return Status.CANCEL_STATUS; } diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/DescriptiveLabelProvider.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/DescriptiveLabelProvider.java index a8ea15156..f9ce58ed0 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/DescriptiveLabelProvider.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/DescriptiveLabelProvider.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,17 +21,19 @@ import eu.etaxonomy.taxeditor.model.DescriptionHelper; * @version $Id: $ */ public class DescriptiveLabelProvider extends ColumnLabelProvider implements IStyledLabelProvider { - + /** {@inheritDoc} */ - public String getText(Object element) { + @Override + public String getText(Object element) { return DescriptionHelper.getLabel(element); - } + } /* (non-Javadoc) * @see org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider#getStyledText(java.lang.Object) */ /** {@inheritDoc} */ - public StyledString getStyledText(Object element) { + @Override + public StyledString getStyledText(Object element) { return new StyledString(getText(element), StyledString.QUALIFIER_STYLER); } } diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/DescriptiveViewPart.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/DescriptiveViewPart.java index f9541aa3e..7556a73d2 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/DescriptiveViewPart.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/DescriptiveViewPart.java @@ -150,7 +150,7 @@ public class DescriptiveViewPart extends AbstractCdmEditorViewPart implements IP EditorUtil.open(new DerivateViewEditorInput(specimenUuids)); } } catch (PartInitException e) { - MessagingUtils.error(DescriptiveViewPart.class, "Could not open Derivate Editor", e); + MessagingUtils.error(DescriptiveViewPart.class, "Could not open Derivative Editor", e); } diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/CreateDescriptionElementOperation.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/CreateDescriptionElementOperation.java index 76c4d76a9..a16125b36 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/CreateDescriptionElementOperation.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/CreateDescriptionElementOperation.java @@ -40,7 +40,7 @@ import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled; public class CreateDescriptionElementOperation extends AbstractPostTaxonOperation { /** Constant ID="eu.etaxonomy.taxeditor.editor.descripti"{trunked} */ - public static final String ID = "eu.etaxonomy.taxeditor.editor.description.createDescriptionElement"; + public static final String ID = "eu.etaxonomy.taxeditor.editor.view.descriptive.command.createDescriptionElement"; private final DescriptionBase description; private final Feature feature; diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/DeleteTaxonDescriptionOperation.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/DeleteTaxonDescriptionOperation.java index 5324d4e40..5a6cebd41 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/DeleteTaxonDescriptionOperation.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/DeleteTaxonDescriptionOperation.java @@ -9,6 +9,9 @@ package eu.etaxonomy.taxeditor.editor.view.descriptive.operation; +import java.util.ArrayList; +import java.util.List; + import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.commands.operations.IUndoContext; import org.eclipse.core.runtime.IAdaptable; @@ -59,7 +62,10 @@ public class DeleteTaxonDescriptionOperation extends AbstractPostTaxonOperation monitor.worked(20); if (description != null){ - CdmStore.getService(IDescriptionService.class).deleteDescription(description); + List propertyPaths = new ArrayList(); + propertyPaths.add("taxon"); + TaxonDescription loadedDescription = (TaxonDescription) CdmStore.getService(IDescriptionService.class).load(description.getUuid(), propertyPaths); + CdmStore.getService(IDescriptionService.class).deleteDescription(loadedDescription); return postExecute(description); } return null; diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/MediaContentProvider.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/MediaContentProvider.java index 0e4a26105..cf5aa8cc7 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/MediaContentProvider.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/MediaContentProvider.java @@ -72,7 +72,12 @@ public class MediaContentProvider implements ITreeContentProvider{ } else if (parentElement instanceof DescriptionBase) { if (((DescriptionBase) parentElement).isImageGallery()) { - return getImages((DescriptionBase) parentElement).toArray(); + List images = getImages((DescriptionBase) parentElement); + if (images != null){ + return images.toArray(); + } + return null; + } } else if (parentElement instanceof DerivedUnit){ @@ -111,6 +116,9 @@ public class MediaContentProvider implements ITreeContentProvider{ /** {@inheritDoc} */ @Override public boolean hasChildren(Object element) { + if (getChildren(element)== null) { + return false; + } return (getChildren(element).length > 0); } @@ -139,10 +147,12 @@ public class MediaContentProvider implements ITreeContentProvider{ if(elements.size() > 1){ MessagingUtils.error(this.getClass(), "There should be one and only one description element to hold the images. Found: " + elements.size() + " InDescription ID: " + description.getUuid(), null); } + if (!elements.isEmpty()){ + DescriptionElementBase element = elements.iterator().next(); + return element.getMedia(); + } - DescriptionElementBase element = elements.iterator().next(); - - return element.getMedia(); + } return null; } diff --git a/eu.etaxonomy.taxeditor.feature/feature.xml b/eu.etaxonomy.taxeditor.feature/feature.xml index 30ed8dda9..ebaea0fbc 100644 --- a/eu.etaxonomy.taxeditor.feature/feature.xml +++ b/eu.etaxonomy.taxeditor.feature/feature.xml @@ -55,6 +55,8 @@ + + - - + + + + + @@ -348,7 +352,7 @@ visible="true"> @@ -422,12 +426,17 @@ id="eu.etaxonomy.taxeditor.navigation.navigator.handler.OpenFixClassificationHierarchyHandler" name="%command.name.10"> + + + commandId="eu.etaxonomy.taxeditor.navigation.navigator.command.delete"> @@ -439,7 +448,7 @@ + commandId="eu.etaxonomy.taxeditor.navigation.key.polytomous.command.delete"> @@ -681,9 +690,16 @@ class="eu.etaxonomy.taxeditor.preference.PreferencePropertyTester" id="eu.etaxonomy.taxeditor.preferences.propertyTester" namespace="eu.etaxonomy.taxeditor.preferences.propertyTester" - properties="isCdmStoreConnected, isShowExperimentalFeatures, isChecklistEditorEnabled" + properties="isShowExperimentalFeatures, isChecklistEditorEnabled" type="org.eclipse.jface.viewers.IStructuredSelection"> + + @@ -734,12 +750,9 @@ - - - - + + diff --git a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/TaxonNavigator.java b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/TaxonNavigator.java index e10a6488e..3913e0a29 100644 --- a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/TaxonNavigator.java +++ b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/TaxonNavigator.java @@ -11,6 +11,7 @@ package eu.etaxonomy.taxeditor.navigation.navigator; import java.util.ArrayList; +import java.util.Comparator; import java.util.HashSet; import java.util.List; import java.util.Observable; @@ -32,12 +33,14 @@ import eu.etaxonomy.cdm.api.conversation.IConversationEnabled; import eu.etaxonomy.cdm.api.service.IClassificationService; import eu.etaxonomy.cdm.model.common.CdmBase; import eu.etaxonomy.cdm.model.taxon.TaxonComparatorSearch; +import eu.etaxonomy.cdm.model.taxon.TaxonNaturalComparator; import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap; import eu.etaxonomy.taxeditor.model.DataChangeBridge; import eu.etaxonomy.taxeditor.model.IDataChangeBehavior; import eu.etaxonomy.taxeditor.model.MessagingUtils; import eu.etaxonomy.taxeditor.navigation.NavigationUtil; import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled; +import eu.etaxonomy.taxeditor.preference.PreferencesUtil; import eu.etaxonomy.taxeditor.store.CdmStore; import eu.etaxonomy.taxeditor.store.LoginManager; @@ -76,8 +79,12 @@ public class TaxonNavigator extends CommonNavigator implements /** {@inheritDoc} */ @Override protected IAdaptable getInitialInput() { - - TaxonComparatorSearch comparator = new TaxonComparatorSearch(); + Comparator comparator; + if (PreferencesUtil.getSortNodesNaturally()){ + comparator = new TaxonNaturalComparator(); + } else{ + comparator = new TaxonComparatorSearch(); + } TaxonNodeComparator viewerComparator = new TaxonNodeComparator(comparator); this.getCommonViewer().setComparator(viewerComparator); setLinkingEnabled(true); diff --git a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/TaxonNodeComparator.java b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/TaxonNodeComparator.java index b049f86c0..67c826f0d 100644 --- a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/TaxonNodeComparator.java +++ b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/TaxonNodeComparator.java @@ -12,13 +12,14 @@ import eu.etaxonomy.cdm.model.common.IdentifiableEntity; import eu.etaxonomy.cdm.model.taxon.Classification; import eu.etaxonomy.cdm.model.taxon.TaxonBase; import eu.etaxonomy.cdm.model.taxon.TaxonComparatorSearch; +import eu.etaxonomy.cdm.model.taxon.TaxonNaturalComparator; import eu.etaxonomy.cdm.model.taxon.TaxonNode; import eu.etaxonomy.taxeditor.ui.section.supplemental.IdentifiableSourceElement; public class TaxonNodeComparator extends ViewerComparator{ - public TaxonNodeComparator(TaxonComparatorSearch comparator) { + public TaxonNodeComparator(Comparator comparator){ super(comparator); } @@ -29,7 +30,11 @@ public class TaxonNodeComparator extends ViewerComparator{ if (e1 instanceof Classification && e2 instanceof Classification){ return ((Classification)e1).getTitleCache().compareTo(((Classification)e2).getTitleCache()); } else{ - return this.getComparator().compare(((TaxonNode)e1).getTaxon(),((TaxonNode)e2).getTaxon()); + if (this.getComparator() instanceof TaxonNaturalComparator){ + return this.getComparator().compare((TaxonNode)e1, (TaxonNode)e2); + }else{ + return this.getComparator().compare(((TaxonNode)e1).getTaxon(),((TaxonNode)e2).getTaxon()); + } } } } diff --git a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/TreeNodeDropAdapterAssistant.java b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/TreeNodeDropAdapterAssistant.java index fbf20ea45..86eb9506f 100644 --- a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/TreeNodeDropAdapterAssistant.java +++ b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/TreeNodeDropAdapterAssistant.java @@ -19,12 +19,15 @@ import org.apache.log4j.Logger; import org.eclipse.core.commands.operations.IUndoContext; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; +import org.eclipse.jface.dialogs.IconAndMessageDialog; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.util.LocalSelectionTransfer; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.TreeSelection; import org.eclipse.swt.dnd.DropTargetEvent; import org.eclipse.swt.dnd.TransferData; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.handlers.HandlerUtil; import org.eclipse.ui.navigator.CommonDropAdapter; import org.eclipse.ui.navigator.CommonDropAdapterAssistant; @@ -39,6 +42,7 @@ import eu.etaxonomy.taxeditor.navigation.NavigationUtil; import eu.etaxonomy.taxeditor.navigation.navigator.operation.MoveTaxonOperation; import eu.etaxonomy.taxeditor.operation.AbstractPostOperation; import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled; +import eu.etaxonomy.taxeditor.preference.PreferencesUtil; import eu.etaxonomy.taxeditor.store.CdmStore; /** @@ -65,6 +69,7 @@ public class TreeNodeDropAdapterAssistant extends CommonDropAdapterAssistant imp public IStatus handleDrop(CommonDropAdapter dropAdapter, DropTargetEvent dropTargetEvent, Object target) { + if (target instanceof ITaxonTreeNode) { Set taxonNodes = getSelectedTaxa(); ITaxonTreeNode targetTreeNode = (ITaxonTreeNode) target; @@ -82,7 +87,7 @@ public class TreeNodeDropAdapterAssistant extends CommonDropAdapterAssistant imp } } } - + return Status.CANCEL_STATUS; } @@ -171,51 +176,64 @@ public class TreeNodeDropAdapterAssistant extends CommonDropAdapterAssistant imp if(targetITaxonTreeNode instanceof TaxonNode){ TaxonNode targetTaxonNode = (TaxonNode) targetITaxonTreeNode; - -// for(TaxonNode taxonNode : taxonNodes){ -// if (taxonNode.equals(targetTaxonNode)) { -// return Status.CANCEL_STATUS; -// } -// } - - // Make sure parent taxon does not have unsaved changes + // Make sure parent taxon does not have unsaved changes if (NavigationUtil.isDirty(targetTaxonNode)){ MessageDialog.openWarning(NavigationUtil.getShell(), "Unsaved Parent Taxon", "There are unsaved " + "changes in the parent taxon. Pleas save first."); return Status.CANCEL_STATUS; } - - /*if (((TaxonNode) targetITaxonTreeNode).isTopmostNode()) { - MessageDialog.openConfirm(null, "Taxonnode can not be moved", "A taxonnode can not be moved to the classification"); - }*/ - - // Make sure parentTaxon is not the drop target -// if (!childTaxonNode.isTopmostNode() && childTaxonNode.getParent().equals(targetTaxonNode)){ -// return Status.CANCEL_STATUS; -// } - - // Make sure taxon is not being dropped onto itself -// if (childTaxonNode.equals(targetTaxonNode)) { -// return Status.CANCEL_STATUS; -// } - - - } - - IUndoContext workspaceUndoContext = NavigationUtil.getWorkbenchUndoContext(); - if (workspaceUndoContext == null) { - logger.error("Workspace undo context is null. DND operation cancelled"); - return Status.CANCEL_STATUS; - } - - AbstractPostOperation operation = new MoveTaxonOperation - ("Move Taxon", workspaceUndoContext, taxonNode, targetITaxonTreeNode, this, taxonNavigator); - NavigationUtil.executeOperation(operation); + if (!PreferencesUtil.getSortNodesNaturally()){ + IUndoContext workspaceUndoContext = NavigationUtil.getWorkbenchUndoContext(); + if (workspaceUndoContext == null) { + logger.error("Workspace undo context is null. DND operation cancelled"); + return Status.CANCEL_STATUS; + } + + AbstractPostOperation operation = new MoveTaxonOperation + ("Move Taxon", workspaceUndoContext, taxonNode, targetITaxonTreeNode, this, taxonNavigator, true); + NavigationUtil.executeOperation(operation); + + logger.info("Moved taxa to new parent " + targetITaxonTreeNode); + return Status.OK_STATUS; + }else{ + String[] buttonLables = {"Parent", "Predecessor", "Cancel"}; + MessageDialog dialog = new MessageDialog(null, "Target node", null, "Do you want to use the target node as parent or do you want to move the taxon below the target.", MessageDialog.QUESTION_WITH_CANCEL, buttonLables, 0); + dialog.open(); + int returnCode = dialog.getReturnCode(); + if (returnCode == 0){ + IUndoContext workspaceUndoContext = NavigationUtil.getWorkbenchUndoContext(); + if (workspaceUndoContext == null) { + logger.error("Workspace undo context is null. DND operation cancelled"); + return Status.CANCEL_STATUS; + } + + AbstractPostOperation operation = new MoveTaxonOperation + ("Move Taxon", workspaceUndoContext, taxonNode, targetITaxonTreeNode, this, taxonNavigator, true); + NavigationUtil.executeOperation(operation); + + logger.info("Moved taxa to new parent " + targetITaxonTreeNode); + return Status.OK_STATUS; + }else if (returnCode == 1){ + IUndoContext workspaceUndoContext = NavigationUtil.getWorkbenchUndoContext(); + if (workspaceUndoContext == null) { + logger.error("Workspace undo context is null. DND operation cancelled"); + return Status.CANCEL_STATUS; + } - logger.info("Moved taxa to new parent " + targetITaxonTreeNode); - return Status.OK_STATUS; + AbstractPostOperation operation = new MoveTaxonOperation + ("Move Taxon", workspaceUndoContext, taxonNode, targetITaxonTreeNode, this, taxonNavigator, false); + NavigationUtil.executeOperation(operation); + + logger.info("Moved taxa to new parent " + targetITaxonTreeNode); + return Status.OK_STATUS; + } else{ + return Status.CANCEL_STATUS; + } + + + } } /* (non-Javadoc) diff --git a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/handler/MoveTaxonHandler.java b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/handler/MoveTaxonHandler.java index ba681d70c..4c84b0197 100644 --- a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/handler/MoveTaxonHandler.java +++ b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/handler/MoveTaxonHandler.java @@ -41,8 +41,10 @@ import eu.etaxonomy.taxeditor.navigation.navigator.TaxonNavigator; import eu.etaxonomy.taxeditor.navigation.navigator.operation.MoveTaxonOperation; import eu.etaxonomy.taxeditor.operation.AbstractPostOperation; import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled; +import eu.etaxonomy.taxeditor.preference.PreferencesUtil; import eu.etaxonomy.taxeditor.store.CdmStore; import eu.etaxonomy.taxeditor.ui.dialog.selection.TaxonNodeSelectionDialog; +import eu.etaxonomy.taxeditor.ui.dialog.selection.TaxonNodeSelectionNaturalOrderDialog; /** *

MoveTaxonHandler class.

@@ -87,8 +89,15 @@ public class MoveTaxonHandler extends AbstractHandler implements IPostOperationE // TaxonNode taxonNode = (TaxonNode) selection.getFirstElement(); if (taxonNode != null){ - parentTaxonNode = TaxonNodeSelectionDialog.select(HandlerUtil.getActiveShell(event), taxonNavigator.getConversationHolder(), "Choose new parent", excludeTaxa, null, null); - + boolean moveToNewParent = true; + if (PreferencesUtil.getSortNodesNaturally()){ + if(!MessageDialog.openQuestion(null, "Target node", "The choosen target node should be the parent?")){ + moveToNewParent = false; + } + parentTaxonNode = TaxonNodeSelectionDialog.select(HandlerUtil.getActiveShell(event), taxonNavigator.getConversationHolder(), "Choose the taxon above the moved taxon.", excludeTaxa, null, null); + }else{ + parentTaxonNode = TaxonNodeSelectionDialog.select(HandlerUtil.getActiveShell(event), taxonNavigator.getConversationHolder(), "Choose new parent", excludeTaxa, null, null); + } if(parentTaxonNode != null){ if(NavigationUtil.isDirty(parentTaxonNode)){ MessageDialog.openWarning(HandlerUtil.getActiveShell(event), "Unsaved Parent Taxon", "There are unsaved " + @@ -98,7 +107,7 @@ public class MoveTaxonHandler extends AbstractHandler implements IPostOperationE AbstractPostOperation operation = new MoveTaxonOperation ("Move taxon to new parent", NavigationUtil.getUndoContext(), - taxonNode, parentTaxonNode, taxonNavigator, taxonNavigator); //$NON-NLS-1$ + taxonNode, parentTaxonNode, taxonNavigator, taxonNavigator, moveToNewParent); //$NON-NLS-1$ NavigationUtil.executeOperation(operation); taxonNavigator.refresh(); diff --git a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/MoveTaxonOperation.java b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/MoveTaxonOperation.java index 16011b6cb..bd2b57db5 100644 --- a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/MoveTaxonOperation.java +++ b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/MoveTaxonOperation.java @@ -53,7 +53,7 @@ public class MoveTaxonOperation extends AbstractPersistentPostOperation { //private Map oldParentTreeNodes; private TaxonNode taxonNode; - + private boolean moveToParentNode; /** *

Constructor for MoveTaxonOperation.

* @@ -65,7 +65,7 @@ public class MoveTaxonOperation extends AbstractPersistentPostOperation { * @param conversationEnabled a {@link eu.etaxonomy.cdm.api.conversation.IConversationEnabled} object. */ public MoveTaxonOperation(String label, IUndoContext undoContext, - TaxonNode taxonNodeToMove, ITaxonTreeNode newParentTreeNode, IPostOperationEnabled postOperationEnabled, IConversationEnabled conversationEnabled) { + TaxonNode taxonNodeToMove, ITaxonTreeNode newParentTreeNode, IPostOperationEnabled postOperationEnabled, IConversationEnabled conversationEnabled, boolean moveToParentNode) { super(label, undoContext, postOperationEnabled, conversationEnabled); this.taxonNode = taxonNodeToMove; @@ -74,7 +74,7 @@ public class MoveTaxonOperation extends AbstractPersistentPostOperation { }*/ this.newParentTreeNode = newParentTreeNode; - + this.moveToParentNode = moveToParentNode; // Save old parent ITaxonTreeNodes for undo //this.parentNode = taxonNode.getParent(); @@ -90,7 +90,7 @@ public class MoveTaxonOperation extends AbstractPersistentPostOperation { bind(); monitor.worked(20); - UpdateResult result = CdmStore.getService(ITaxonNodeService.class).moveTaxonNode(this.taxonNode.getUuid(),newParentTreeNode.getUuid()); + UpdateResult result = CdmStore.getService(ITaxonNodeService.class).moveTaxonNode(this.taxonNode.getUuid(),newParentTreeNode.getUuid(), moveToParentNode); // try { // for (TaxonNode taxonNode : taxonNodes){ // TaxonNode newTaxonNode = newParentTreeNode.addChildNode(taxonNode, diff --git a/eu.etaxonomy.taxeditor.store/OSGI-INF/l10n/bundle.properties b/eu.etaxonomy.taxeditor.store/OSGI-INF/l10n/bundle.properties index d2e8b5c5c..a13d96793 100644 --- a/eu.etaxonomy.taxeditor.store/OSGI-INF/l10n/bundle.properties +++ b/eu.etaxonomy.taxeditor.store/OSGI-INF/l10n/bundle.properties @@ -33,10 +33,10 @@ view.name.2 = Reporting view.name.3 = Supplemental Data view.name.4 = Details view.name.5 = Use Records -view.name.6 = Derivate Search +view.name.6 = Derivative Search editor.name = Defined Term Editor menu.label = Show View -command.label = Derivate Search +command.label = Derivative Search command.label.0 = Details command.label.1 = Supplemental command.label.2 = Datasource @@ -130,4 +130,29 @@ page.name.28 = Checklist Editor page.name.29 = Editor Profile page.name.30 = Language command.label.clone = Clone -command.label.openInSpecimenEditor = Open in Specimen Editor \ No newline at end of file +command.label.openInSpecimenEditor = Open in Specimen Editor +page.name.31 = Order of Taxonnodes +extension.name.0 = Popup Menu Commands +command.name.8 = Clone Datasource +command.name.9 = Open Feature Tree Editor Wizard +command.name.10 = Open Password Wizzard +command.name.11 = Open Distribution Editor Wizard +command.name.12 = Connect +wizard.name.18 = CSV +wizard.name.19 = CSV_NAME +wizard.name.20 = CSV_PRINT +activity.description = DELETE permission dependent ui contributions +activity.name = Delete +activity.description.0 = UPDATE permission dependent ui contributions +activity.name.0 = Update +activity.description.1 = CREATE permission dependent ui contributions +activity.name.1 = Delete +activity.description.2 = ROLE_USER_MANAGER dependent ui contributions +activity.name.2 = UserManagement +activity.description.3 = ROLE_PROJECT_MANAGER dependent ui contributions +activity.name.3 = ProjectManagement +extension-point.name = Cdm Viewer +Bundle-Vendor = EDIT +Bundle-Name = DataStore Bundle +command.name.13 = delete +command.name.14 = delete \ No newline at end of file diff --git a/eu.etaxonomy.taxeditor.store/OSGI-INF/l10n/messages.properties b/eu.etaxonomy.taxeditor.store/OSGI-INF/l10n/messages.properties index bad7e8f54..9d02cb1d2 100644 --- a/eu.etaxonomy.taxeditor.store/OSGI-INF/l10n/messages.properties +++ b/eu.etaxonomy.taxeditor.store/OSGI-INF/l10n/messages.properties @@ -14,3 +14,5 @@ LanguageEditorPreferencePage_ChooseDefaultLanguage=Please choose your default la LanguageEditorPreferencePage_EditorHasToRestart=The application has to be restarted, in order to complete the language switch.\nDo you want to restart now? LanguageEditorPreferencePage_PleaseRestart=Please Restart LanguageEditorPreferencePage_RestartRequired=After changing the default language, a restart is required,\nin order for the new settings to take effect. +OrderPreferencePage_NewNavigatorWindowRequired=After changing the order of the taxon nodes, closing and reopen of the taxon navigator is required. +OrderPreferencePage_PleaseReopenNavigator=Please close and reopen the taxon navigator. \ No newline at end of file diff --git a/eu.etaxonomy.taxeditor.store/OSGI-INF/l10n/messages_de.properties b/eu.etaxonomy.taxeditor.store/OSGI-INF/l10n/messages_de.properties index fcbc5af1d..3c18fec10 100644 --- a/eu.etaxonomy.taxeditor.store/OSGI-INF/l10n/messages_de.properties +++ b/eu.etaxonomy.taxeditor.store/OSGI-INF/l10n/messages_de.properties @@ -13,4 +13,5 @@ CdmDataSourceViewPart_9=Verf\u00FCgbar LanguageEditorPreferencePage_ChooseDefaultLanguage=Bitte wählen Sie die Standardsprache für den Taxonomischen Editor aus. LanguageEditorPreferencePage_EditorHasToRestart=Der Anwendung muss neu gestartet werden, um die Sprache zu wechseln.\nWollen Sie jetzt neu starten? LanguageEditorPreferencePage_PleaseRestart=Bitte neu starten -LanguageEditorPreferencePage_RestartRequired=Nach dem Wechsel der Standardsprache ist ein Neustart erforderlich. \ No newline at end of file +LanguageEditorPreferencePage_RestartRequired=Nach dem Wechsel der Standardsprache ist ein Neustart erforderlich. +OrderPreferencePage_NewNavigatorWindowRequired=Nach dem Ändern der Taxon Sortierung, ist das Schließen und erneute Öffnen des taxon Navigators erforderlich. \ No newline at end of file diff --git a/eu.etaxonomy.taxeditor.store/plugin.xml b/eu.etaxonomy.taxeditor.store/plugin.xml index 5bfa3d750..37c33cdfe 100644 --- a/eu.etaxonomy.taxeditor.store/plugin.xml +++ b/eu.etaxonomy.taxeditor.store/plugin.xml @@ -1,7 +1,7 @@ - + + + @@ -437,7 +443,7 @@ visible="true"> @@ -516,7 +522,7 @@ + commandId="eu.etaxonomy.taxeditor.view.datasource.delete"> @@ -562,7 +568,7 @@ + commandId="eu.etaxonomy.taxeditor.editor.definedTerms.delete"> @@ -608,7 +614,7 @@ + name="%command.name.8"> + + + name="%command.name.9"> + name="%command.name.10"> + name="%command.name.11"> + name="%command.name.12"> + + + name="%wizard.name.18"> + id="eu.etaxonomy.taxeditor.io.export.csv_name" + name="%wizard.name.19"> + + + name="%activity.name"> @@ -1204,9 +1226,9 @@ pattern="eu\.etaxonomy\.taxeditor\..*/.*.delete"> + name="%activity.name.0"> @@ -1218,9 +1240,9 @@ pattern="eu\.etaxonomy\.taxeditor\..*/.*.command\.update\..*"> + name="%activity.name.1"> @@ -1232,9 +1254,9 @@ pattern="eu\.etaxonomy\.taxeditor\..*/.*.command\.create\..*"> + name="%activity.name.2"> @@ -1250,9 +1272,9 @@ pattern="eu\.etaxonomy\.taxeditor\..*/bulkeditor\.input\.group"> + name="%activity.name.3"> diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/Messages.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/Messages.java index dcbf087ed..9757c60b1 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/Messages.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/Messages.java @@ -22,6 +22,8 @@ public class Messages extends NLS { public static String LanguageEditorPreferencePage_EditorHasToRestart; public static String LanguageEditorPreferencePage_PleaseRestart; public static String LanguageEditorPreferencePage_RestartRequired; + public static String OrderPreferencePage_NewNavigatorWindowRequired; + public static String OrderPreferencePage_PleaseReopenNavigator; public static String CdmDataSourceViewPart_1; public static String CdmDataSourceViewPart_10; public static String CdmDataSourceViewPart_11; diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/DescriptionHelper.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/DescriptionHelper.java index 8b913c614..658b72c31 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/DescriptionHelper.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/DescriptionHelper.java @@ -413,6 +413,7 @@ public class DescriptionHelper { * @return a {@link java.lang.String} object. */ public static String getLabel(Object element){ + String noLabelString = "[no label]"; if (element instanceof FeatureNodeContainer){ return getFeatureNodeContainerText((FeatureNodeContainer) element); } @@ -420,7 +421,11 @@ public class DescriptionHelper { return getDescriptionText((DescriptionBase) element); } else if(element instanceof CategoricalData){ - return getCategoricalDataText((CategoricalData) element); + String categoricalDataText = getCategoricalDataText((CategoricalData) element); + if(categoricalDataText.isEmpty()){ + categoricalDataText = noLabelString; + } + return categoricalDataText; } else if (element instanceof CommonTaxonName) { return getCommonNameText((CommonTaxonName) element); @@ -432,7 +437,11 @@ public class DescriptionHelper { return getIndividualsAssociationText((IndividualsAssociation) element); } else if (element instanceof QuantitativeData) { - return getQuantitativeDataText((QuantitativeData) element); + String quantitativeDataText = getQuantitativeDataText((QuantitativeData) element); + if(quantitativeDataText.isEmpty()){ + quantitativeDataText = noLabelString; + } + return quantitativeDataText; } else if (element instanceof TaxonInteraction) { return getTaxonInteractionText((TaxonInteraction) element); diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/CdmStorePropertyTester.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/CdmStorePropertyTester.java new file mode 100644 index 000000000..b28e46d61 --- /dev/null +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/CdmStorePropertyTester.java @@ -0,0 +1,40 @@ +// $Id$ +/** +* Copyright (C) 2007 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.preference; + +import org.eclipse.core.expressions.PropertyTester; + +import eu.etaxonomy.taxeditor.store.CdmStore; + +/** + * @author n.hoffmann + * @created Jan 26, 2011 + * @version 1.0 + */ +public class CdmStorePropertyTester extends PropertyTester { + + private static final String EDITOR_IS_CONNECTED_TO_DB = "isCdmStoreConnected"; + + @Override + public boolean test(Object receiver, String property, Object[] args, + Object expectedValue) { + + if(EDITOR_IS_CONNECTED_TO_DB.equals(property)){ + return isCdmStoreConnected(); + } + return false; + } + + private boolean isCdmStoreConnected(){ + boolean active = CdmStore.isActive(); + return active; + } +} diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/IPreferenceKeys.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/IPreferenceKeys.java index a748e14c6..c34d4b7e0 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/IPreferenceKeys.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/IPreferenceKeys.java @@ -89,7 +89,9 @@ public interface IPreferenceKeys { /** Constant SORT_RANKS_HIERARCHICHALLY="eu.etaxonomy.taxeditor.menus.sortRanksH"{trunked} */ public static final String SORT_RANKS_HIERARCHICHALLY = "eu.etaxonomy.taxeditor.menus.sortRanksHierarchichally"; - + /** Constant SORT_NODES_NATURALL="eu.etaxonomy.taxeditor.menus.sortNodesN"{trunked} */ + public static final String SORT_NODES_NATURALLY = "eu.etaxonomy.taxeditor.menus.sortNodesNaturally"; + /** * Whether multilanguage text fields should be editable in multiple languages. */ diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/OrderPreferences.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/OrderPreferences.java new file mode 100644 index 000000000..3e434a9d5 --- /dev/null +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/OrderPreferences.java @@ -0,0 +1,86 @@ +package eu.etaxonomy.taxeditor.preference; + +import java.io.IOException; + +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.preference.PreferencePage; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Label; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchPreferencePage; +import org.eclipse.ui.PlatformUI; + +import eu.etaxonomy.taxeditor.Messages; + +public class OrderPreferences extends PreferencePage implements IWorkbenchPreferencePage { + + + boolean isNaturalOrderActivated; + boolean isSelectionChanged = false; + /* + * (non-Javadoc) + * + * @see + * org.eclipse.jface.preference.FieldEditorPreferencePage#createFieldEditors + * () + */ + @Override + protected Control createContents(Composite parent) { + + Composite composite = new Composite(parent, SWT.NULL); + composite.setLayout(new GridLayout()); + final Label description = new Label(parent, SWT.NONE); + description.setText(Messages.OrderPreferencePage_NewNavigatorWindowRequired); + isNaturalOrderActivated = PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.SORT_NODES_NATURALLY); + final Button activateCheckButton = new Button(composite, SWT.CHECK); + activateCheckButton.setText("Enable Natural Order"); + activateCheckButton.setSelection(isNaturalOrderActivated); + activateCheckButton.addSelectionListener(new SelectionAdapter(){ + @Override + public void widgetSelected(SelectionEvent e) { + if(isNaturalOrderActivated != activateCheckButton.getSelection()) { + isNaturalOrderActivated = activateCheckButton.getSelection(); + PreferencesUtil.getPreferenceStore().setValue(IPreferenceKeys.SORT_NODES_NATURALLY, isNaturalOrderActivated); + isSelectionChanged = true; + }else{ + isSelectionChanged = false; + } + + } + }); + + + + return composite; + } + + + @Override + public void init(IWorkbench workbench) { + // TODO Auto-generated method stub + + } + + /* (non-Javadoc) + * @see org.eclipse.jface.preference.PreferencePage#performOk() + */ + @Override + public boolean performOk() { + if(isSelectionChanged){ + MessageDialog.openInformation(getShell(), null, Messages.OrderPreferencePage_PleaseReopenNavigator); + return super.performOk(); + } + return true; + } + + +} diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencePropertyTester.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencePropertyTester.java index 62c31c919..5b1a935da 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencePropertyTester.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencePropertyTester.java @@ -12,8 +12,6 @@ package eu.etaxonomy.taxeditor.preference; import org.eclipse.core.expressions.PropertyTester; -import eu.etaxonomy.taxeditor.store.CdmStore; - /** * @author n.hoffmann * @created Jan 26, 2011 @@ -26,25 +24,15 @@ public class PreferencePropertyTester extends PropertyTester { private static final String SHOW_CHECKLIST_EDITOR = "isChecklistEditorEnabled"; - private static final String EDITOR_IS_CONNECTED_TO_DB = "isCdmStoreConnected"; - - /* (non-Javadoc) - * @see org.eclipse.core.expressions.IPropertyTester#test(java.lang.Object, java.lang.String, java.lang.Object[], java.lang.Object) - */ @Override public boolean test(Object receiver, String property, Object[] args, Object expectedValue) { - if(SHOW_EXPERIMENTAL_FEATURES.equals(property)){ return isShowExperimentalFeatures(); } if(SHOW_CHECKLIST_EDITOR.equals(property)){ return isChecklistEditorEnabled(); } - if(EDITOR_IS_CONNECTED_TO_DB.equals(property)){ - return isCdmStoreConnected(); - } - return false; } @@ -59,8 +47,4 @@ public class PreferencePropertyTester extends PropertyTester { return PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.DISTRIBUTION_AREA_PREFRENCES_ACTIVE); } - private boolean isCdmStoreConnected(){ - boolean active = CdmStore.isActive(); - return active; - } } diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencesUtil.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencesUtil.java index bbca40e5a..83e6756fc 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencesUtil.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencesUtil.java @@ -751,4 +751,27 @@ public class PreferencesUtil implements IPreferenceKeys { ctrl.setEnabled(enabled); } } + + /** + *

+ * getSortRanksNaturally + *

+ * + * @return a boolean. + */ + public static boolean getSortNodesNaturally() { + return getPreferenceStore().getBoolean(SORT_NODES_NATURALLY); + } + + /** + *

+ * setSortRanksNaturally + *

+ * + * @param selection + * a boolean. + */ + public static void setSortNodesNaturally(boolean selection) { + getPreferenceStore().setValue(SORT_NODES_NATURALLY, selection); + } } diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/SearchManager.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/SearchManager.java index 1f24d4521..e9968f0b3 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/SearchManager.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/SearchManager.java @@ -138,9 +138,10 @@ public class SearchManager { * @param configurator a {@link eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator} object. * @return a {@link java.util.List} object. */ - public List findTeamOrPersons(IIdentifiableEntityServiceConfigurator configurator){ + @SuppressWarnings("unchecked") + public List findTeamOrPersons(IIdentifiableEntityServiceConfigurator configurator){ configurator.setClazz(TeamOrPersonBase.class); - return findAgents(configurator); + return (List)findAgents(configurator); } /** diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/TaxonNodeSelectionNaturalOrderDialog.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/TaxonNodeSelectionNaturalOrderDialog.java new file mode 100644 index 000000000..275a5d56d --- /dev/null +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/TaxonNodeSelectionNaturalOrderDialog.java @@ -0,0 +1,25 @@ +package eu.etaxonomy.taxeditor.ui.dialog.selection; + +import java.util.List; +import java.util.UUID; + +import org.eclipse.swt.widgets.Shell; + +import eu.etaxonomy.cdm.api.conversation.ConversationHolder; +import eu.etaxonomy.cdm.model.taxon.Classification; +import eu.etaxonomy.cdm.model.taxon.TaxonNode; + +public class TaxonNodeSelectionNaturalOrderDialog extends + TaxonNodeSelectionDialog { + + protected TaxonNodeSelectionNaturalOrderDialog(Shell shell, + ConversationHolder conversation, String title, + List excludeTaxa, boolean multi, TaxonNode node, + Classification classification) { + super(shell, conversation, title, excludeTaxa, multi, node, classification); + // TODO Auto-generated constructor stub + } + + + +} diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/NumberWithLabelElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/NumberWithLabelElement.java index 4b425cf5e..72cc267f3 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/NumberWithLabelElement.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/NumberWithLabelElement.java @@ -64,7 +64,7 @@ public class NumberWithLabelElement extends TextWithLabelElement { if(super.getText()!=null){ String text = super.getText().trim(); try { - return text.equals("") ? 0 : new Integer(text); + return StringUtils.isBlank(text) ? 0 : new Integer(text); } catch (NumberFormatException e) { exception = e; } @@ -79,7 +79,7 @@ public class NumberWithLabelElement extends TextWithLabelElement { public Float getFloat(){ String text = super.getText(); try { - return new Float(text); + return StringUtils.isBlank(text) ? 0 : new Float(text); } catch (NumberFormatException e) { exception = e; } diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/AbstractCdmDetailSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/AbstractCdmDetailSection.java index c9ddfffb8..07f08c704 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/AbstractCdmDetailSection.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/AbstractCdmDetailSection.java @@ -22,6 +22,7 @@ import org.eclipse.ui.forms.widgets.TableWrapLayout; import eu.etaxonomy.cdm.api.conversation.ConversationHolder; import eu.etaxonomy.cdm.model.common.IdentifiableEntity; +import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase; import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection; import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory; import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement; @@ -192,7 +193,7 @@ public abstract class AbstractCdmDetailSection extends AbstractFormSecti */ protected void setSectionTitle() { String title = ""; - if (getEntity() != null && (getEntity() instanceof IdentifiableEntity)) { + if (getEntity() != null && (getEntity() instanceof IdentifiableEntity) && !(getEntity() instanceof SpecimenOrObservationBase)) { title = ": " + ((IdentifiableEntity) getEntity()).getTitleCache(); } this.setText(String.format("%s%s", getHeading(), title)); diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/classification/TaxonNodeDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/classification/TaxonNodeDetailElement.java index 298080f40..fde5720fc 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/classification/TaxonNodeDetailElement.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/classification/TaxonNodeDetailElement.java @@ -10,8 +10,13 @@ package eu.etaxonomy.taxeditor.ui.section.classification; +import org.apache.commons.lang.StringUtils; +import org.eclipse.swt.widgets.Text; + import eu.etaxonomy.cdm.common.CdmUtils; import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper; +import eu.etaxonomy.cdm.model.name.NonViralName; +import eu.etaxonomy.cdm.model.name.Rank; import eu.etaxonomy.cdm.model.name.TaxonNameBase; import eu.etaxonomy.cdm.model.reference.Reference; import eu.etaxonomy.cdm.model.taxon.Classification; @@ -111,6 +116,7 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement name = HibernateProxyHelper.deproxy(node.getTaxon().getName(), NonViralName.class); + if( ! name.isSupraGeneric() && name.getRank() != null){ + String taxonName = ""; + if(name.isGenus() || name.isInfraGeneric()|| name.isSpeciesAggregate() ){ + taxonName = name.getGenusOrUninomial(); + } + else if(name.isSpecies() || name.isInfraSpecific() ){ + taxonName = CdmUtils.concat(" ", name.getGenusOrUninomial(),name.getSpecificEpithet()); + } + if (StringUtils.isNotBlank(taxonName)){ + text_newTaxonName.setText(taxonName + " "); + if(text_newTaxonName.getMainControl() instanceof Text){ + Text text = (Text)text_newTaxonName.getMainControl(); + text.setSelection(text_newTaxonName.getText().length()); + } + } + } + } + } + } + } + + /* * (non-Javadoc) * * @see diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/HybridDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/HybridDetailElement.java index 1dfab3c0f..3d6b22a8d 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/HybridDetailElement.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/HybridDetailElement.java @@ -1,9 +1,9 @@ // $Id$ /** * 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,12 +21,13 @@ import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement; * @created Jan 5, 2011 * @version 1.0 */ -public class HybridDetailElement extends AbstractCdmDetailElement { +public class HybridDetailElement extends AbstractCdmDetailElement> { + + private CheckboxElement checkboxMonomHybrid; + private CheckboxElement checkboxBinomHybrid; + private CheckboxElement checkboxTrinomHybrid; + private CheckboxElement checkboxHybridFormula; - private CheckboxElement checkbox_monomHybrid; - private CheckboxElement checkbox_binomHybrid; - private CheckboxElement checkbox_trinomHybrid; - /** * @param formFactory * @param formElement @@ -36,30 +37,26 @@ public class HybridDetailElement extends AbstractCdmDetailElement super(formFactory, formElement); } - /* (non-Javadoc) - * @see eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#createControls(eu.etaxonomy.taxeditor.forms.ICdmFormElement, java.lang.Object, int) - */ @Override - protected void createControls(ICdmFormElement formElement, NonViralName entity, + protected void createControls(ICdmFormElement formElement, NonViralName entity, int style) { - checkbox_monomHybrid = formFactory.createCheckbox(formElement, "Monom Hybrid", entity.isMonomHybrid(), style); - checkbox_binomHybrid = formFactory.createCheckbox(formElement, "Binom Hybrid", entity.isBinomHybrid(), style); - checkbox_trinomHybrid = formFactory.createCheckbox(formElement, "Trinom Hybrid", entity.isTrinomHybrid(), style); + checkboxMonomHybrid = formFactory.createCheckbox(formElement, "Monom hybrid", entity.isMonomHybrid(), style); + checkboxBinomHybrid = formFactory.createCheckbox(formElement, "Binom hybrid", entity.isBinomHybrid(), style); + checkboxTrinomHybrid = formFactory.createCheckbox(formElement, "Trinom hybrid", entity.isTrinomHybrid(), style); + checkboxHybridFormula = formFactory.createCheckbox(formElement, "Hybrid formula", entity.isHybridFormula(), style); + checkboxHybridFormula.setEnabled(false);//read-only } - /* (non-Javadoc) - * @see eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#handleEvent(java.lang.Object) - */ @Override public void handleEvent(Object eventSource) { - if(eventSource == checkbox_monomHybrid){ - getEntity().setMonomHybrid(checkbox_monomHybrid.getSelection()); + if(eventSource == checkboxMonomHybrid){ + getEntity().setMonomHybrid(checkboxMonomHybrid.getSelection()); } - else if(eventSource == checkbox_binomHybrid){ - getEntity().setBinomHybrid(checkbox_binomHybrid.getSelection()); + else if(eventSource == checkboxBinomHybrid){ + getEntity().setBinomHybrid(checkboxBinomHybrid.getSelection()); } - else if(eventSource == checkbox_trinomHybrid){ - getEntity().setTrinomHybrid(checkbox_trinomHybrid.getSelection()); + else if(eventSource == checkboxTrinomHybrid){ + getEntity().setTrinomHybrid(checkboxTrinomHybrid.getSelection()); } } diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/DnaSampleGeneralDetailSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/DnaSampleGeneralDetailSection.java index c4df98d16..f9b48e178 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/DnaSampleGeneralDetailSection.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/DnaSampleGeneralDetailSection.java @@ -44,7 +44,7 @@ public class DnaSampleGeneralDetailSection extends AbstractCdmDetailSection { + private final TermVocabulary plantKindOfUnitVocabulary = CdmStore.getService(IVocabularyService.class).find(VocabularyEnum.PlantKindOfUnit.getUuid()); + static private final Logger logger = Logger.getLogger(TissueSampleGeneralDetailElement.class); private TermComboElement comboKindOfTissue; @@ -65,7 +71,7 @@ public class TissueSampleGeneralDetailElement extends AbstractCdmDetailElement staff = null; 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 f8b342089..16894a55b 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 @@ -22,7 +22,6 @@ 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 @@ -52,7 +51,7 @@ public class MediaSpecimenGeneralDetailSection extends AbstractCdmDetailSection */ @Override public String getHeading() { - return "General Media Specimen"; + return "General"; } /* (non-Javadoc) @@ -60,27 +59,27 @@ public class MediaSpecimenGeneralDetailSection extends AbstractCdmDetailSection */ @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"; - } - else if(getEntity().getKindOfUnit().equals(DerivateLabelProvider.getDetailImageTerm())){ - text = "Detail Image"; - } - } - if(text!=null){ - super.setText(text); - } - else{ +// 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"; +// } +// else if(getEntity().getKindOfUnit().equals(DerivateLabelProvider.getDetailImageTerm())){ +// text = "Detail Image"; +// } +// } +// if(text!=null){ +// super.setText(text); +// } +// else{ super.setText(title); - } +// } } @Override 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 10405b6da..1b47155db 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 @@ -155,7 +155,7 @@ public class DerivateLabelProvider extends ColumnLabelProvider { conversation.bind(); final String emptyString = ""; - final String separator = ", "; + final String separator = " "; String label = emptyString; @@ -232,8 +232,7 @@ public class DerivateLabelProvider extends ColumnLabelProvider { } eu.etaxonomy.cdm.model.occurrence.Collection collection = derivedUnit.getCollection(); if(collection!=null){ - label += collection.getName()!=null?collection.getName()+" ":emptyString; - label += collection.getCode()!=null?"("+collection.getCode()+"), ":emptyString; + label += collection.getCode()!=null?"("+collection.getCode()+")"+separator:emptyString; } String mostSignificantIdentifier = CdmStore.getService(IOccurrenceService.class).getMostSignificantIdentifier(derivedUnit); label += mostSignificantIdentifier!=null?mostSignificantIdentifier+separator:emptyString; diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateSearchComposite.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateSearchComposite.java index 0db71df83..b101a2298 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateSearchComposite.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateSearchComposite.java @@ -68,7 +68,7 @@ public class DerivateSearchComposite extends Composite { btnClearTaxon.setImage(ResourceManager.getPluginImage("eu.etaxonomy.taxeditor.store", "icons/trash.gif")); lblDerivateType = new Label(this, SWT.NULL); - lblDerivateType.setText("Derivate Type"); + lblDerivateType.setText("Derivative Type"); comboDerivateType = new Combo(this, SWT.READ_ONLY); comboDerivateType.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1)); diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateSearchCompositeController.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateSearchCompositeController.java index 2715d4c65..a161ed4a8 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateSearchCompositeController.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateSearchCompositeController.java @@ -114,12 +114,28 @@ public class DerivateSearchCompositeController implements Listener{ FindOccurrencesConfigurator config = new FindOccurrencesConfigurator(); config.setAssociatedTaxonUuid(selectedTaxon!=null?selectedTaxon.getUuid():null); - config.setSpecimenType(specimenType==SpecimenOrObservationType.Unknown?null:specimenType);//unknown := all types + config.setSpecimenType(specimenType.equals(SpecimenOrObservationType.Unknown)?null:specimenType);//unknown := all types config.setTitleSearchString(queryString); + if(selectedTaxon!=null){ + config.setRetrieveIndirectlyAssociatedSpecimens(true); + config.setSpecimenType(null); + } SearchManager searchManager = new SearchManager(); List occurrences = searchManager.findOccurrences(config); + //filter out specimens of wrong type (only if an associated taxon was selected) + if(selectedTaxon!=null && !specimenType.equals(SpecimenOrObservationType.Unknown)){ + List specimensOfCorrectType = new ArrayList(); + for(SpecimenOrObservationBase occurrence:occurrences){ + if(occurrence.getRecordBasis().equals(specimenType) + || occurrence.getRecordBasis().isKindOf(specimenType)){ + specimensOfCorrectType.add(occurrence); + } + } + occurrences = specimensOfCorrectType; + } + //filter out assigned specimens if(derivateSearchComposite.getBtnFilterUndeterminedSpecimen().getSelection()){ List specimensWithNoDetermination = new ArrayList(); diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/detail/DetailsViewPart.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/detail/DetailsViewPart.java index cd780fc68..d3f200924 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/detail/DetailsViewPart.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/detail/DetailsViewPart.java @@ -12,13 +12,16 @@ package eu.etaxonomy.taxeditor.view.detail; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.TreeNode; import org.eclipse.jface.viewers.Viewer; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IWorkbenchPart; +import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper; import eu.etaxonomy.cdm.model.common.CdmBase; import eu.etaxonomy.cdm.model.description.Feature; +import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase; import eu.etaxonomy.taxeditor.model.AbstractUtility; import eu.etaxonomy.taxeditor.model.FeatureNodeContainer; import eu.etaxonomy.taxeditor.model.IPartContentHasDetails; @@ -42,7 +45,6 @@ public class DetailsViewPart extends AbstractCdmEditorViewPart implements IPartC /** {@inheritDoc} */ @Override public void createViewer(Composite parent) { - //selectionService.addPostSelectionListener(this); viewer = new DetailsViewer(parent, this); getSite().setSelectionProvider(viewer); @@ -67,6 +69,7 @@ public class DetailsViewPart extends AbstractCdmEditorViewPart implements IPartC if((part instanceof IEditorPart) || (part instanceof IPartContentHasDetails)) { if(structuredSelection.size() != 1){ + setPartName(createPartTitle(null)); showEmptyPage(); return; } @@ -76,20 +79,41 @@ public class DetailsViewPart extends AbstractCdmEditorViewPart implements IPartC // do show the map for distributions Feature feature = ((FeatureNodeContainer) ((IStructuredSelection) selection).getFirstElement()).getFeature(); if(!feature.equals(Feature.DISTRIBUTION())){ + setPartName(createPartTitle(null)); showEmptyPage(); return; } } + + setPartName(createPartTitle(((IStructuredSelection) selection).getFirstElement())); showViewer(part, structuredSelection); }else{ + setPartName(createPartTitle(null)); showEmptyPage(); } } - /* (non-Javadoc) - * @see eu.etaxonomy.taxeditor.view.AbstractCdmViewPart#showEmptyPage() - */ + private String getViewName(){ + return "Details"; + } + + private String createPartTitle(Object selectedObject){ + if(selectedObject!=null){ + if(selectedObject instanceof TreeNode){ + selectedObject = ((TreeNode) selectedObject).getValue(); + } + if(selectedObject instanceof SpecimenOrObservationBase){ + return getViewName()+": "+HibernateProxyHelper.deproxy(selectedObject, SpecimenOrObservationBase.class).getRecordBasis(); + } + if(selectedObject instanceof CdmBase){ + return getViewName()+": "+HibernateProxyHelper.deproxy(selectedObject, CdmBase.class).getClass().getSimpleName(); + } + return getViewName()+": "+selectedObject.getClass().getSimpleName(); + } + return getViewName(); + } + @Override public void showEmptyPage() { viewer.setSelection(null); @@ -118,14 +142,9 @@ public class DetailsViewPart extends AbstractCdmEditorViewPart implements IPartC public void dispose() { selectionService.removePostSelectionListener(this); super.dispose(); - + } - /** - *

onComplete

- * - * @return a boolean. - */ @Override public boolean onComplete() { return true; diff --git a/eu.etaxonomy.taxeditor.test/.classpath b/eu.etaxonomy.taxeditor.test/.classpath index 4deb39a8f..12d3a7cdd 100644 --- a/eu.etaxonomy.taxeditor.test/.classpath +++ b/eu.etaxonomy.taxeditor.test/.classpath @@ -1,8 +1,8 @@ - - - - - - - - + + + + + + + + diff --git a/eu.etaxonomy.taxeditor/rcp.target b/eu.etaxonomy.taxeditor/rcp.target index c929cd0de..7f4ff50a2 100644 --- a/eu.etaxonomy.taxeditor/rcp.target +++ b/eu.etaxonomy.taxeditor/rcp.target @@ -1,5 +1,5 @@ - + @@ -9,21 +9,21 @@ - - - - - - - - - - - + + + + + + + + + + + - +