1 package eu
.etaxonomy
.taxeditor
.ui
.dialog
.selection
;
3 import java
.text
.Collator
;
4 import java
.util
.Comparator
;
6 import org
.eclipse
.jface
.viewers
.ILabelProvider
;
7 import org
.eclipse
.jface
.viewers
.LabelProvider
;
8 import org
.eclipse
.swt
.widgets
.Control
;
9 import org
.eclipse
.swt
.widgets
.Shell
;
10 import org
.eclipse
.swt
.widgets
.Text
;
12 import eu
.etaxonomy
.cdm
.api
.conversation
.ConversationHolder
;
13 import eu
.etaxonomy
.cdm
.api
.service
.IReferenceService
;
14 import eu
.etaxonomy
.cdm
.model
.reference
.Reference
;
15 import eu
.etaxonomy
.cdm
.persistence
.dto
.UuidAndTitleCache
;
16 import eu
.etaxonomy
.taxeditor
.preference
.IPreferenceKeys
;
17 import eu
.etaxonomy
.taxeditor
.preference
.PreferencesUtil
;
18 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
20 public class NomenclaturalReferenceSelectionDialog
extends
21 ReferenceSelectionDialog
{
23 protected NomenclaturalReferenceSelectionDialog(Shell shell
,
24 ConversationHolder conversation
, String title
, boolean multi
,
25 Reference reference
, boolean inReference
) {
26 super(shell
, conversation
, title
, multi
, reference
);
27 // TODO Auto-generated constructor stub
31 * @see eu.etaxonomy.taxeditor.dialogs.AbstractFilteredCdmResourceSelectionDialog#initModel()
35 protected void initModel() {
36 Control control
= getPatternControl();
37 String pattern
= null;
39 pattern
= ((Text
)control
).getText();
42 if (pattern
== null || pattern
.equals("?")){
43 model
= CdmStore
.getService(IReferenceService
.class).getUuidAndAbbrevTitleCache(null, null);
45 model
= CdmStore
.getService(IReferenceService
.class).getUuidAndAbbrevTitleCache(limitOfInitialElements
, pattern
);
54 protected ILabelProvider
createListLabelProvider() {
55 return new FilteredCdmResourceAbbrevLabelProvider();
61 * @param reference a {@link eu.etaxonomy.cdm.model.reference.ReferenceBase} object.
62 * @param shell a {@link org.eclipse.swt.widgets.Shell} object.
63 * @param conversation a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
64 * @return a {@link eu.etaxonomy.cdm.model.reference.ReferenceBase} object.
67 public static Reference
select(Shell shell
, ConversationHolder conversation
, Reference reference
) {
68 NomenclaturalReferenceSelectionDialog dialog
= new NomenclaturalReferenceSelectionDialog(shell
, conversation
,
69 "Choose a reference", isInReference
, reference
, false);
70 return getSelectionFromDialog(dialog
);
74 * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#createFilter()
78 protected ItemsFilter
createFilter() {
79 return new ItemsFilter() {
82 * Always returns false to enforce refiltering even if the pattern is equal
85 public boolean equalsFilter(ItemsFilter filter
) {
90 public boolean isConsistentItem(Object item
) {
95 public boolean matchItem(Object item
) {
97 // String text = null;
98 // if(item instanceof UuidAndTitleCache){
99 // if (((UuidAndTitleCache) item).getAbbrevTitleCache() != null){
100 // text = ((UuidAndTitleCache) item).getAbbrevTitleCache();
102 // text = ((UuidAndTitleCache) item).getTitleCache();
104 // }else if(item instanceof String){
105 // text = (String) item;
107 // return text != null ? matches(text) : false;
115 public class FilteredCdmResourceAbbrevLabelProvider
extends LabelProvider
{
117 public String
getText(Object element
) {
118 if (element
== null) {
121 UuidAndTitleCache uuidAndTitleCache
= (UuidAndTitleCache
) element
;
122 String titleCache
= uuidAndTitleCache
.getTitleCache();
123 String abbrevTitleCache
= uuidAndTitleCache
.getAbbrevTitleCache();
124 if (!abbrevTitleCache
.equals(titleCache
)){
125 abbrevTitleCache
+= " - " + titleCache
;
127 if(PreferencesUtil
.getPreferenceStore().getBoolean(IPreferenceKeys
.SHOW_ID_IN_ENTITY_SELECTION_DIAOLOG
)){
128 abbrevTitleCache
+= " ["+uuidAndTitleCache
.getId()+"]";
130 return abbrevTitleCache
;
135 protected Comparator
getItemsComparator() {
136 return new Comparator
<UuidAndTitleCache
>() {
138 public int compare(UuidAndTitleCache entity1
,
139 UuidAndTitleCache entity2
) {
141 if (entity1
.getUuid().equals(entity2
.getUuid())){
144 Collator collator
= Collator
.getInstance();
145 String compareString1
= "";
146 if (entity1
.getAbbrevTitleCache() != null){
147 compareString1
= entity1
.getAbbrevTitleCache();
149 if (entity1
.getTitleCache() != null){
150 compareString1
+= entity1
.getTitleCache();
154 String compareString2
= "";
155 if (entity2
.getAbbrevTitleCache() != null){
156 compareString2
= entity2
.getAbbrevTitleCache();
158 if (entity2
.getTitleCache() != null){
159 compareString2
+= entity2
.getTitleCache();
163 int result
=collator
.compare(compareString1
, compareString2
);
165 result
= entity1
.getUuid().compareTo(entity2
.getUuid());
172 protected String
getTitle(Reference cdmObject
) {
173 if(cdmObject
== null){
176 if (cdmObject
.getAbbrevTitle() != null){
177 return cdmObject
.getAbbrevTitleCache();
179 return cdmObject
.getTitleCache();