X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/blobdiff_plain/27cc4c061a2f620524803ed62cb08a7dffa1fdd6..cd63800b16f4379c7915a15698a55da14fe3a0f6:/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateSearchCompositeController.java 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 877391038..ea5a9ccf9 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 @@ -9,6 +9,7 @@ */ package eu.etaxonomy.taxeditor.view.derivateSearch; +import java.util.ArrayList; import java.util.Arrays; import java.util.LinkedHashMap; import java.util.List; @@ -28,12 +29,15 @@ import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Widget; import org.eclipse.ui.handlers.IHandlerService; +import eu.etaxonomy.cdm.api.conversation.ConversationHolder; import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeCacheStrategy; +import eu.etaxonomy.cdm.api.service.IOccurrenceService; import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator; import eu.etaxonomy.cdm.api.service.config.IdentifiableServiceConfiguratorImpl; import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase; import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType; import eu.etaxonomy.taxeditor.model.AbstractUtility; +import eu.etaxonomy.taxeditor.model.MessagingUtils; import eu.etaxonomy.taxeditor.store.CdmStore; import eu.etaxonomy.taxeditor.ui.mvc.combo.EnumTermComboController; @@ -48,12 +52,15 @@ public class DerivateSearchCompositeController implements Listener{ private final DerivateSearchComposite derivateSearchComposite; private IIdentifiableEntityServiceConfigurator> configurator; private EnumTermComboController enumTermComboController; - + private final DerivateSearchView derivateSearchView; + private DerivateLabelProvider labelProvider; /** * @param parent + * @param derivateSearchView */ - public DerivateSearchCompositeController(Composite parent) { + public DerivateSearchCompositeController(Composite parent, DerivateSearchView derivateSearchView) { this.derivateSearchComposite = new DerivateSearchComposite(parent, SWT.NONE); + this.derivateSearchView = derivateSearchView; init(); } @@ -67,13 +74,15 @@ public class DerivateSearchCompositeController implements Listener{ } enumTermComboController = new EnumTermComboController(derivateSearchComposite.getComboDerivateType(), null, null, SpecimenOrObservationType.class, 0); + enumTermComboController.setSelection(SpecimenOrObservationType.Unknown); derivateSearchComposite.getSearchField().addListener(SWT.KeyDown, this); derivateSearchComposite.getButtonSearch().addListener(SWT.Selection, this); TableViewer resultViewer = derivateSearchComposite.getResultViewer(); resultViewer.setContentProvider(new ArrayContentProvider()); - resultViewer.setLabelProvider(new DerivateLabelProvider()); + labelProvider = new DerivateLabelProvider(); + resultViewer.setLabelProvider(labelProvider); resultViewer.addDoubleClickListener(new IDoubleClickListener() { @Override public void doubleClick(DoubleClickEvent event) { @@ -83,13 +92,13 @@ public class DerivateSearchCompositeController implements Listener{ try { handlerService.executeCommand(commandId, null); } catch (ExecutionException e) { - AbstractUtility.error(DerivateSearchCompositeController.class, e); + MessagingUtils.error(DerivateSearchCompositeController.class, e); } catch (NotDefinedException e) { - AbstractUtility.error(DerivateSearchCompositeController.class, e); + MessagingUtils.error(DerivateSearchCompositeController.class, e); } catch (NotEnabledException e) { - AbstractUtility.error(DerivateSearchCompositeController.class, e); + MessagingUtils.error(DerivateSearchCompositeController.class, e); } catch (NotHandledException e) { - AbstractUtility.error(DerivateSearchCompositeController.class, e); + MessagingUtils.error(DerivateSearchCompositeController.class, e); } } @@ -99,9 +108,24 @@ public class DerivateSearchCompositeController implements Listener{ } private void searchDerivates(){ + if(!derivateSearchView.getConversationHolder().isBound()){ + derivateSearchView.setFocus(); //rebind the conversation + } + configurator.setTitleSearchString(derivateSearchComposite.getSearchField().getText()); SpecimenOrObservationType type = enumTermComboController.getSelection(); + //filter by specimen type List results = CdmStore.getSearchManager().findOccurrencesByType(configurator, type); + //filter out assigned specimens + if(derivateSearchComposite.getBtnFilterUndeterminedSpecimen().getSelection()){ + List specimensWithNoDetermination = new ArrayList(); + for(SpecimenOrObservationBase result:results){ + if(CdmStore.getService(IOccurrenceService.class).countDeterminations(result, null)==0){ + specimensWithNoDetermination.add(result); + } + } + results = specimensWithNoDetermination; + } derivateSearchComposite.getResultViewer().setInput(results); } @@ -133,6 +157,7 @@ public class DerivateSearchCompositeController implements Listener{ public void reset(){ derivateSearchComposite.getResultViewer().setInput(null); derivateSearchComposite.getSearchField().setText(""); + enumTermComboController.setSelection(SpecimenOrObservationType.Unknown); derivateSearchComposite.getComboDerivateType().deselectAll(); } @@ -144,4 +169,11 @@ public class DerivateSearchCompositeController implements Listener{ derivateSearchComposite.getResultViewer().getControl().setFocus(); } + /** + * @param conversationHolder + */ + public void setConversation(ConversationHolder conversationHolder) { + labelProvider.setConversation(conversationHolder); + } + }