the pattern for new created nomenclatural references with nomenclatural title is...
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / dialog / selection / NomenclaturalReferenceSelectionDialog.java
1 package eu.etaxonomy.taxeditor.ui.dialog.selection;
2
3 import java.text.Collator;
4 import java.util.Comparator;
5
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;
11
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;
19
20 public class NomenclaturalReferenceSelectionDialog extends
21 ReferenceSelectionDialog {
22
23 protected NomenclaturalReferenceSelectionDialog(Shell shell,
24 ConversationHolder conversation, String title, boolean multi,
25 Reference reference) {
26 super(shell, conversation, title, multi, reference);
27 // TODO Auto-generated constructor stub
28 }
29
30 /* (non-Javadoc)
31 * @see eu.etaxonomy.taxeditor.dialogs.AbstractFilteredCdmResourceSelectionDialog#initModel()
32 */
33 /** {@inheritDoc} */
34 @Override
35 protected void initModel() {
36 Control control = getPatternControl();
37 String pattern = null;
38 if (control != null){
39 pattern = ((Text)control).getText();
40 }
41
42
43 model = CdmStore.getService(IReferenceService.class).getUuidAndAbbrevTitleCache(limitOfInitialElements, pattern);
44 }
45
46 /**
47 *
48 * @return
49 */
50 @Override
51 protected ILabelProvider createListLabelProvider() {
52 return new FilteredCdmResourceAbbrevLabelProvider();
53 }
54
55 /**
56 * <p>select</p>
57 *
58 * @param reference a {@link eu.etaxonomy.cdm.model.reference.ReferenceBase} object.
59 * @param shell a {@link org.eclipse.swt.widgets.Shell} object.
60 * @param conversation a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
61 * @return a {@link eu.etaxonomy.cdm.model.reference.ReferenceBase} object.
62 */
63
64 public static Reference select(Shell shell, ConversationHolder conversation, Reference reference) {
65 NomenclaturalReferenceSelectionDialog dialog = new NomenclaturalReferenceSelectionDialog(shell, conversation,
66 "Choose a reference", false, reference);
67 return getSelectionFromDialog(dialog);
68 }
69
70 /* (non-Javadoc)
71 * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#createFilter()
72 */
73 /** {@inheritDoc} */
74 @Override
75 protected ItemsFilter createFilter() {
76 return new ItemsFilter() {
77
78 /**
79 * Always returns false to enforce refiltering even if the pattern is equal
80 */
81 @Override
82 public boolean equalsFilter(ItemsFilter filter) {
83 return false;
84 }
85
86 @Override
87 public boolean isConsistentItem(Object item) {
88 return false;
89 }
90
91 @Override
92 public boolean matchItem(Object item) {
93 return true;
94 // String text = null;
95 // if(item instanceof UuidAndTitleCache){
96 // if (((UuidAndTitleCache) item).getAbbrevTitleCache() != null){
97 // text = ((UuidAndTitleCache) item).getAbbrevTitleCache();
98 // } else{
99 // text = ((UuidAndTitleCache) item).getTitleCache();
100 // }
101 // }else if(item instanceof String){
102 // text = (String) item;
103 // }
104 // return text != null ? matches(text) : false;
105 }
106
107 };
108 }
109
110
111
112 public class FilteredCdmResourceAbbrevLabelProvider extends LabelProvider {
113 @Override
114 public String getText(Object element) {
115 if (element == null) {
116 return null;
117 }
118 UuidAndTitleCache uuidAndTitleCache = (UuidAndTitleCache) element;
119 String titleCache = uuidAndTitleCache.getTitleCache();
120 String abbrevTitleCache = uuidAndTitleCache.getAbbrevTitleCache();
121 if (!abbrevTitleCache.equals(titleCache)){
122 abbrevTitleCache += " - " + titleCache;
123 }
124 if(PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_ID_IN_ENTITY_SELECTION_DIAOLOG)){
125 abbrevTitleCache += " ["+uuidAndTitleCache.getId()+"]";
126 }
127 return abbrevTitleCache;
128 }
129 };
130
131 @Override
132 protected Comparator getItemsComparator() {
133 return new Comparator<UuidAndTitleCache>() {
134 @Override
135 public int compare(UuidAndTitleCache entity1,
136 UuidAndTitleCache entity2) {
137 Collator collator = Collator.getInstance();
138 String compareString1 = "";
139 if (entity1.getAbbrevTitleCache() != null){
140 compareString1 = entity1.getAbbrevTitleCache();
141 }
142 if (entity1.getTitleCache() != null){
143 compareString1 += entity1.getTitleCache();
144 }
145 String compareString2 = "";
146 if (entity2.getAbbrevTitleCache() != null){
147 compareString2 = entity2.getAbbrevTitleCache();
148 }
149 if (entity2.getTitleCache() != null){
150 compareString2 += entity2.getTitleCache();
151 }
152 return collator.compare(compareString1, compareString2);
153 }
154 };
155 }
156
157 @Override
158 protected String getTitle(Reference cdmObject) {
159 if(cdmObject == null){
160 return "";
161 }
162 if (cdmObject.getAbbrevTitle() != null){
163 return cdmObject.getAbbrevTitleCache();
164 }else{
165 return cdmObject.getTitleCache();
166 }
167
168
169
170 }
171
172
173
174
175 }