From: Katja Luther Date: Thu, 25 Aug 2016 08:22:38 +0000 (+0200) Subject: ref #5837 add new NomenclaturalReferenceSelectionDialog X-Git-Tag: 4.3.0^2~61 X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/commitdiff_plain/752e8a124660f9a69d29d3835296d009f7a487f1 ref #5837 add new NomenclaturalReferenceSelectionDialog --- diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientReferenceService.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientReferenceService.java index 888ae989e..1d8e04cb5 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientReferenceService.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientReferenceService.java @@ -771,4 +771,11 @@ public class TransientReferenceService implements IReferenceService { return defaultService.loadByIds(idSet, propertyPaths); } + @Override + public List> getUuidAndAbbrevTitleCache( + Integer limit, String pattern) { + + return defaultService.getUuidAndAbbrevTitleCache(limit, pattern); + } + } diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/NomenclaturalReferenceSelectionDialog.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/NomenclaturalReferenceSelectionDialog.java new file mode 100755 index 000000000..82bbf3482 --- /dev/null +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/NomenclaturalReferenceSelectionDialog.java @@ -0,0 +1,91 @@ +package eu.etaxonomy.taxeditor.ui.dialog.selection; + +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.swt.widgets.Text; + +import eu.etaxonomy.cdm.api.conversation.ConversationHolder; +import eu.etaxonomy.cdm.api.service.IReferenceService; +import eu.etaxonomy.cdm.model.reference.Reference; +import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache; +import eu.etaxonomy.taxeditor.store.CdmStore; +import eu.etaxonomy.taxeditor.ui.dialog.selection.CdmFilteredItemsSelectionDialog.ItemsFilter; + +public class NomenclaturalReferenceSelectionDialog extends + ReferenceSelectionDialog { + + protected NomenclaturalReferenceSelectionDialog(Shell shell, + ConversationHolder conversation, String title, boolean multi, + Reference reference) { + super(shell, conversation, title, multi, reference); + // TODO Auto-generated constructor stub + } + + /* (non-Javadoc) + * @see eu.etaxonomy.taxeditor.dialogs.AbstractFilteredCdmResourceSelectionDialog#initModel() + */ + /** {@inheritDoc} */ + @Override + protected void initModel() { + Control control = getPatternControl(); + String pattern = null; + if (control != null){ + pattern = ((Text)control).getText(); + } + + + model = CdmStore.getService(IReferenceService.class).getUuidAndAbbrevTitleCache(limitOfInitialElements, pattern); + } + + /** + *

select

+ * + * @param reference a {@link eu.etaxonomy.cdm.model.reference.ReferenceBase} object. + * @param shell a {@link org.eclipse.swt.widgets.Shell} object. + * @param conversation a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object. + * @return a {@link eu.etaxonomy.cdm.model.reference.ReferenceBase} object. + */ + + public static Reference select(Shell shell, ConversationHolder conversation, Reference reference) { + NomenclaturalReferenceSelectionDialog dialog = new NomenclaturalReferenceSelectionDialog(shell, conversation, + "Choose a reference", false, reference); + return getSelectionFromDialog(dialog); + } + + /* (non-Javadoc) + * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#createFilter() + */ + /** {@inheritDoc} */ + @Override + protected ItemsFilter createFilter() { + return new ItemsFilter() { + + /** + * Always returns false to enforce refiltering even if the pattern is equal + */ + @Override + public boolean equalsFilter(ItemsFilter filter) { + return false; + } + + @Override + public boolean isConsistentItem(Object item) { + return false; + } + + @Override + public boolean matchItem(Object item) { + String text = null; + if(item instanceof UuidAndTitleCache){ + text = ((UuidAndTitleCache) item).getAbbrevTitleCache(); + }else if(item instanceof String){ + text = (String) item; + } + return text != null ? matches(text) : false; + } + + }; + } + + +} diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/SelectionDialogFactory.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/SelectionDialogFactory.java index 9d207d153..f45adb155 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/SelectionDialogFactory.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/SelectionDialogFactory.java @@ -47,6 +47,7 @@ import eu.etaxonomy.taxeditor.ui.element.IEntityElement; import eu.etaxonomy.taxeditor.ui.section.agent.TeamMemberElement; import eu.etaxonomy.taxeditor.ui.section.description.detail.DistributionDetailElement; import eu.etaxonomy.taxeditor.ui.section.name.AuthorshipDetailElement; +import eu.etaxonomy.taxeditor.ui.section.reference.NomenclaturalReferenceDetailElement; /** * @author n.hoffmann @@ -76,9 +77,13 @@ public class SelectionDialogFactory { if(clazz.equals(TaxonNode.class)){ return (T) TaxonNodeSelectionDialog.select(shell, conversation, null, null, (TaxonNode) currentSelection, ((TaxonNode) currentSelection).getClassification()); } + if(clazz.equals(Reference.class) && parentElement instanceof NomenclaturalReferenceDetailElement){ + return (T) NomenclaturalReferenceSelectionDialog.select(shell, conversation, (Reference) currentSelection); + } if(clazz.equals(Reference.class)){ return (T) ReferenceSelectionDialog.select(shell, conversation, (Reference) currentSelection); } + if(clazz.equals(TaxonNameBase.class)){ return (T) NameSelectionDialog.select(shell, conversation, (TaxonNameBase) currentSelection); } diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/EntitySelectionElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/EntitySelectionElement.java index b04c73d4d..c86f2c08e 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/EntitySelectionElement.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/EntitySelectionElement.java @@ -8,7 +8,7 @@ import java.util.Observable; import java.util.Observer; import org.eclipse.core.runtime.IStatus; -import org.eclipse.jface.dialogs.MessageDialog; + import org.eclipse.jface.wizard.WizardDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter;