From: Patrick Plitzner
Date: Wed, 30 Mar 2016 09:18:06 +0000 (+0200)
Subject: Set taxon filter when opening derivativwe editor from taxon navigator
X-Git-Tag: 4.0.0^2~64
X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/commitdiff_plain/fe0647c6d89ad477b3e7e262d7b6fd8d4b8c2cdb?hp=bd12f8bff45250e5b210488c0d95f696690fcd91
Set taxon filter when opening derivativwe editor from taxon navigator
#5514
---
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 b319d21fd..632d31530 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
@@ -203,6 +203,8 @@ public class DerivateView extends EditorPart implements IPartContentHasFactualDa
//init tree
updateRootEntities(((DerivateViewEditorInput)getEditorInput()).getDerivativeUuids());
+ //set taxon filter
+ derivateSearchCompositeController.setTaxonFilter(((DerivateViewEditorInput) getEditorInput()).getTaxonUuid());
//reset status bar
getEditorSite().getActionBars().getStatusLineManager().setMessage("");
@@ -276,7 +278,7 @@ public class DerivateView extends EditorPart implements IPartContentHasFactualDa
getEditorSite().getActionBars().getStatusLineManager().setMessage(rootElements.size() +" derivative hierarchies found");
//set selection to derivatives if the filter criteria
- //taxon assignment or or derivative type are set
+ //taxon assignment or derivative type are set
if(derivates!=null && !derivateSearchCompositeController.isDefaultSearch()){
List nodesToSelect = new ArrayList();
for (SpecimenOrObservationBase specimenOrObservationBase : derivates) {
@@ -566,7 +568,9 @@ public class DerivateView extends EditorPart implements IPartContentHasFactualDa
@Override
public void contextStart(IMemento memento, IProgressMonitor monitor) {
derivateSearchCompositeController.setEnabled(!listenToSelectionChange);
- viewer.getTree().setEnabled(true);
+ if(!viewer.getTree().isDisposed()){
+ viewer.getTree().setEnabled(true);
+ }
refreshTree();
}
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateViewEditorInput.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateViewEditorInput.java
index 808ed7421..76358b0c4 100644
--- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateViewEditorInput.java
+++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateViewEditorInput.java
@@ -25,19 +25,29 @@ import org.eclipse.ui.IPersistableElement;
*/
public class DerivateViewEditorInput implements IEditorInput {
- Collection derivativeUuids;
+ private Collection derivativeUuids;
+ private UUID taxonUuid;
public DerivateViewEditorInput() {
}
- public DerivateViewEditorInput(Collection derivativeUuids) {
+ public DerivateViewEditorInput(Collection derivativeUuids, UUID taxonUuid) {
this.derivativeUuids = derivativeUuids;
+ this.taxonUuid = taxonUuid;
+ }
+
+ public DerivateViewEditorInput(Collection derivativeUuids) {
+ this(derivativeUuids, null);
}
public Collection getDerivativeUuids() {
return derivativeUuids;
}
+ public UUID getTaxonUuid() {
+ return taxonUuid;
+ }
+
@Override
public Object getAdapter(Class adapter) {
return null;
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/handler/OpenDerivativeEditorForTaxonNode.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/handler/OpenDerivativeEditorForTaxonNode.java
index 6fdbcd4fe..fbaa4e877 100644
--- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/handler/OpenDerivativeEditorForTaxonNode.java
+++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/handler/OpenDerivativeEditorForTaxonNode.java
@@ -10,6 +10,7 @@ import org.eclipse.ui.PartInitException;
import eu.etaxonomy.cdm.api.service.IOccurrenceService;
import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
+import eu.etaxonomy.cdm.api.service.config.FindOccurrencesConfigurator;
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
import eu.etaxonomy.taxeditor.editor.EditorUtil;
@@ -28,13 +29,16 @@ public class OpenDerivativeEditorForTaxonNode extends DefaultOpenHandlerBase specimens = CdmStore.getService(IOccurrenceService.class).listByAssociatedTaxon(SpecimenOrObservationBase.class, null, entity.getTaxon(), null, null, null, null, null);
+ FindOccurrencesConfigurator config = new FindOccurrencesConfigurator();
+ UUID taxonUuid = entity.getTaxon().getUuid();
+ config.setAssociatedTaxonUuid(taxonUuid);
+ List specimens = CdmStore.getService(IOccurrenceService.class).findByTitle(config).getRecords();
Collection specimenUuids = new ArrayList();
for (SpecimenOrObservationBase specimenOrObservationBase : specimens) {
specimenUuids.add(specimenOrObservationBase.getUuid());
}
try {
- EditorUtil.open(new DerivateViewEditorInput(specimenUuids));
+ EditorUtil.open(new DerivateViewEditorInput(specimenUuids, taxonUuid));
} catch (PartInitException e) {
MessagingUtils.error(OpenDerivateViewHandler.class, "Derivative Editor could not be opened", e);
}
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/searchFilter/DerivateSearchCompositeController.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/searchFilter/DerivateSearchCompositeController.java
index 0cf0191ca..3f07f19c6 100644
--- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/searchFilter/DerivateSearchCompositeController.java
+++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/searchFilter/DerivateSearchCompositeController.java
@@ -10,6 +10,7 @@
package eu.etaxonomy.taxeditor.editor.view.derivate.searchFilter;
import java.util.List;
+import java.util.UUID;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
@@ -19,12 +20,16 @@ import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Widget;
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.api.service.ITaxonService;
import eu.etaxonomy.cdm.api.service.config.FindOccurrencesConfigurator;
import eu.etaxonomy.cdm.api.service.config.FindOccurrencesConfigurator.AssignmentStatus;
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;
import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView;
+import eu.etaxonomy.taxeditor.store.CdmStore;
import eu.etaxonomy.taxeditor.store.SearchManager;
import eu.etaxonomy.taxeditor.ui.dialog.selection.SelectionDialogFactory;
import eu.etaxonomy.taxeditor.ui.mvc.combo.EnumTermComboController;
@@ -137,7 +142,7 @@ public class DerivateSearchCompositeController implements Listener{
/**
* Checks whether or not the search criteria are set to their default value.
- * This does not consider the title search field.
+ * This does not consider the title search field.
* @return true
if search criteria are set to default.
*/
public boolean isDefaultSearch(){
@@ -163,4 +168,15 @@ public class DerivateSearchCompositeController implements Listener{
labelProvider.setConversation(conversationHolder);
}
+ public void setTaxonFilter(UUID taxonUuid) {
+ TaxonBase taxonBase = CdmStore.getService(ITaxonService.class).load(taxonUuid);
+ if(taxonBase!=null && taxonBase.isInstanceOf(Taxon.class)){
+ selectedTaxon = HibernateProxyHelper.deproxy(taxonBase, Taxon.class);
+ derivateSearchComposite.getTextTaxonName().setText(taxonBase.getTitleCache());
+ derivateSearchComposite.getLbltaxonAssignment().setEnabled(false);
+ derivateSearchComposite.getComboTaxonAssignment().select(DerivateSearchComposite.ASSIGNED_SPECIMENS);
+ derivateSearchComposite.getComboTaxonAssignment().setEnabled(false);
+ }
+ }
+
}
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 91ae87e86..e4dab75eb 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
@@ -39,7 +39,6 @@ import eu.etaxonomy.cdm.model.common.User;
import eu.etaxonomy.cdm.model.media.Media;
import eu.etaxonomy.cdm.model.name.NameRelationship;
import eu.etaxonomy.cdm.model.name.TaxonNameBase;
-import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
import eu.etaxonomy.cdm.model.reference.Reference;
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
@@ -179,14 +178,6 @@ public class SearchManager {
"mediaSpecimen"
});
- if(configurator.getClazz()==null){
- if(showFieldUnits){
- configurator.setClazz(SpecimenOrObservationBase.class);
- }
- else{
- configurator.setClazz(DerivedUnit.class);
- }
- }
List occurrencePropertyPaths = new ArrayList();
occurrencePropertyPaths.addAll(BASE_OCCURRENCE_INIT_STRATEGY);
for(String propertyPath:BASE_OCCURRENCE_INIT_STRATEGY) {