Set taxon filter when opening derivativwe editor from taxon navigator
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / view / derivate / searchFilter / DerivateSearchCompositeController.java
index 0cf0191ca2ef4b1df1689a4a166d08cd873e6948..3f07f19c68af590d105c6fb9649c4f8f10feaa0d 100644 (file)
@@ -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.<br>
-     * This does not consider the title search field. 
+     * This does not consider the title search field.
      * @return <code>true</code> 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);
+        }
+    }
+
 }