From 8b4697e62e92ea32f050931d3021ae389e609ca7 Mon Sep 17 00:00:00 2001 From: Katja Luther Date: Mon, 12 Sep 2016 14:57:11 +0200 Subject: [PATCH] fix #5837: fix the filter of the selection dialog of nomenclatural reference and author --- .../NomenclaturalAuthorSelectionDialog.java | 49 +++++++++++++++++++ ...NomenclaturalReferenceSelectionDialog.java | 36 +++++++++++++- 2 files changed, 84 insertions(+), 1 deletion(-) diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/NomenclaturalAuthorSelectionDialog.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/NomenclaturalAuthorSelectionDialog.java index e47346ab1..cc4c1f049 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/NomenclaturalAuthorSelectionDialog.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/NomenclaturalAuthorSelectionDialog.java @@ -11,6 +11,9 @@ package eu.etaxonomy.taxeditor.ui.dialog.selection; +import java.text.Collator; +import java.util.Comparator; + import org.eclipse.core.runtime.Assert; import org.eclipse.core.runtime.ListenerList; import org.eclipse.jface.viewers.IColorProvider; @@ -49,6 +52,7 @@ import eu.etaxonomy.taxeditor.preference.IPreferenceKeys; import eu.etaxonomy.taxeditor.preference.PreferencesUtil; import eu.etaxonomy.taxeditor.store.CdmStore; import eu.etaxonomy.taxeditor.ui.dialog.selection.AbstractFilteredCdmResourceSelectionDialog.FilteredCdmResourceLabelProvider; +import eu.etaxonomy.taxeditor.ui.dialog.selection.CdmFilteredItemsSelectionDialog.ItemsFilter; import eu.etaxonomy.taxeditor.ui.dialog.selection.CdmFilteredItemsSelectionDialog.ItemsListSeparator; /** @@ -161,5 +165,50 @@ public class NomenclaturalAuthorSelectionDialog extends AgentSelectionDialog { return abbrevTitleCache; } }; + + /** {@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; + } + + }; + } + + @Override + protected Comparator getItemsComparator() { + return new Comparator() { + @Override + public int compare(UuidAndTitleCache entity1, + UuidAndTitleCache entity2) { + Collator collator = Collator.getInstance(); + return collator.compare(entity1.getAbbrevTitleCache(), entity2.getAbbrevTitleCache()); + } + }; + } + } 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 index 797b3c2dd..68cf6fe8b 100755 --- 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 @@ -1,5 +1,8 @@ package eu.etaxonomy.taxeditor.ui.dialog.selection; +import java.text.Collator; +import java.util.Comparator; + import org.eclipse.core.runtime.Assert; import org.eclipse.core.runtime.ListenerList; import org.eclipse.jface.viewers.IColorProvider; @@ -111,7 +114,11 @@ public class NomenclaturalReferenceSelectionDialog extends public boolean matchItem(Object item) { String text = null; if(item instanceof UuidAndTitleCache){ - text = ((UuidAndTitleCache) item).getAbbrevTitleCache(); + if (((UuidAndTitleCache) item).getAbbrevTitleCache() != null){ + text = ((UuidAndTitleCache) item).getAbbrevTitleCache(); + } else{ + text = ((UuidAndTitleCache) item).getTitleCache(); + } }else if(item instanceof String){ text = (String) item; } @@ -132,6 +139,9 @@ public class NomenclaturalReferenceSelectionDialog extends UuidAndTitleCache uuidAndTitleCache = (UuidAndTitleCache) element; String titleCache = uuidAndTitleCache.getTitleCache(); String abbrevTitleCache = uuidAndTitleCache.getAbbrevTitleCache(); + if (abbrevTitleCache == null){ + abbrevTitleCache = "no abbrev title available"; + } abbrevTitleCache += " - " + titleCache; if(PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_ID_IN_ENTITY_SELECTION_DIAOLOG)){ abbrevTitleCache += " ["+uuidAndTitleCache.getId()+"]"; @@ -139,6 +149,30 @@ public class NomenclaturalReferenceSelectionDialog extends return abbrevTitleCache; } }; + + @Override + protected Comparator getItemsComparator() { + return new Comparator() { + @Override + public int compare(UuidAndTitleCache entity1, + UuidAndTitleCache entity2) { + Collator collator = Collator.getInstance(); + String compareString1 = null; + if (entity1.getAbbrevTitleCache() == null){ + compareString1 = entity1.getTitleCache(); + }else{ + compareString1 = entity1.getAbbrevTitleCache(); + } + String compareString2 = null; + if (entity2.getAbbrevTitleCache() == null){ + compareString2 = entity2.getTitleCache(); + }else{ + compareString2 = entity2.getAbbrevTitleCache(); + } + return collator.compare(compareString1, compareString2); + } + }; + } -- 2.34.1