1 package eu
.etaxonomy
.taxeditor
.ui
.dialog
.selection
;
3 import java
.text
.Collator
;
4 import java
.util
.Comparator
;
6 import org
.eclipse
.core
.runtime
.Assert
;
7 import org
.eclipse
.core
.runtime
.ListenerList
;
8 import org
.eclipse
.jface
.viewers
.IColorProvider
;
9 import org
.eclipse
.jface
.viewers
.IFontProvider
;
10 import org
.eclipse
.jface
.viewers
.ILabelDecorator
;
11 import org
.eclipse
.jface
.viewers
.ILabelProvider
;
12 import org
.eclipse
.jface
.viewers
.ILabelProviderListener
;
13 import org
.eclipse
.jface
.viewers
.LabelProvider
;
14 import org
.eclipse
.jface
.viewers
.LabelProviderChangedEvent
;
15 import org
.eclipse
.jface
.viewers
.StyledCellLabelProvider
;
16 import org
.eclipse
.jface
.viewers
.StyledString
;
17 import org
.eclipse
.jface
.viewers
.ViewerCell
;
18 import org
.eclipse
.jface
.viewers
.DelegatingStyledCellLabelProvider
.IStyledLabelProvider
;
19 import org
.eclipse
.swt
.SWT
;
20 import org
.eclipse
.swt
.graphics
.Color
;
21 import org
.eclipse
.swt
.graphics
.Font
;
22 import org
.eclipse
.swt
.graphics
.GC
;
23 import org
.eclipse
.swt
.graphics
.Image
;
24 import org
.eclipse
.swt
.graphics
.Rectangle
;
25 import org
.eclipse
.swt
.widgets
.Control
;
26 import org
.eclipse
.swt
.widgets
.Display
;
27 import org
.eclipse
.swt
.widgets
.Shell
;
28 import org
.eclipse
.swt
.widgets
.Text
;
29 import org
.eclipse
.ui
.internal
.IWorkbenchGraphicConstants
;
30 import org
.eclipse
.ui
.internal
.WorkbenchImages
;
32 import eu
.etaxonomy
.cdm
.api
.conversation
.ConversationHolder
;
33 import eu
.etaxonomy
.cdm
.api
.service
.IReferenceService
;
34 import eu
.etaxonomy
.cdm
.model
.reference
.Reference
;
35 import eu
.etaxonomy
.cdm
.persistence
.dto
.UuidAndTitleCache
;
36 import eu
.etaxonomy
.taxeditor
.preference
.IPreferenceKeys
;
37 import eu
.etaxonomy
.taxeditor
.preference
.PreferencesUtil
;
38 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
39 import eu
.etaxonomy
.taxeditor
.ui
.dialog
.selection
.CdmFilteredItemsSelectionDialog
.ItemsFilter
;
40 import eu
.etaxonomy
.taxeditor
.ui
.dialog
.selection
.CdmFilteredItemsSelectionDialog
.ItemsListSeparator
;
42 public class NomenclaturalReferenceSelectionDialog
extends
43 ReferenceSelectionDialog
{
45 protected NomenclaturalReferenceSelectionDialog(Shell shell
,
46 ConversationHolder conversation
, String title
, boolean multi
,
47 Reference reference
) {
48 super(shell
, conversation
, title
, multi
, reference
);
49 // TODO Auto-generated constructor stub
53 * @see eu.etaxonomy.taxeditor.dialogs.AbstractFilteredCdmResourceSelectionDialog#initModel()
57 protected void initModel() {
58 Control control
= getPatternControl();
59 String pattern
= null;
61 pattern
= ((Text
)control
).getText();
65 model
= CdmStore
.getService(IReferenceService
.class).getUuidAndAbbrevTitleCache(limitOfInitialElements
, pattern
);
73 protected ILabelProvider
createListLabelProvider() {
74 return new FilteredCdmResourceAbbrevLabelProvider();
80 * @param reference a {@link eu.etaxonomy.cdm.model.reference.ReferenceBase} object.
81 * @param shell a {@link org.eclipse.swt.widgets.Shell} object.
82 * @param conversation a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
83 * @return a {@link eu.etaxonomy.cdm.model.reference.ReferenceBase} object.
86 public static Reference
select(Shell shell
, ConversationHolder conversation
, Reference reference
) {
87 NomenclaturalReferenceSelectionDialog dialog
= new NomenclaturalReferenceSelectionDialog(shell
, conversation
,
88 "Choose a reference", false, reference
);
89 return getSelectionFromDialog(dialog
);
93 * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#createFilter()
97 protected ItemsFilter
createFilter() {
98 return new ItemsFilter() {
101 * Always returns false to enforce refiltering even if the pattern is equal
104 public boolean equalsFilter(ItemsFilter filter
) {
109 public boolean isConsistentItem(Object item
) {
114 public boolean matchItem(Object item
) {
116 // String text = null;
117 // if(item instanceof UuidAndTitleCache){
118 // if (((UuidAndTitleCache) item).getAbbrevTitleCache() != null){
119 // text = ((UuidAndTitleCache) item).getAbbrevTitleCache();
121 // text = ((UuidAndTitleCache) item).getTitleCache();
123 // }else if(item instanceof String){
124 // text = (String) item;
126 // return text != null ? matches(text) : false;
134 public class FilteredCdmResourceAbbrevLabelProvider
extends LabelProvider
{
136 public String
getText(Object element
) {
137 if (element
== null) {
140 UuidAndTitleCache uuidAndTitleCache
= (UuidAndTitleCache
) element
;
141 String titleCache
= uuidAndTitleCache
.getTitleCache();
142 String abbrevTitleCache
= uuidAndTitleCache
.getAbbrevTitleCache();
143 if (!abbrevTitleCache
.equals(titleCache
)){
144 abbrevTitleCache
+= " - " + titleCache
;
146 if(PreferencesUtil
.getPreferenceStore().getBoolean(IPreferenceKeys
.SHOW_ID_IN_ENTITY_SELECTION_DIAOLOG
)){
147 abbrevTitleCache
+= " ["+uuidAndTitleCache
.getId()+"]";
149 return abbrevTitleCache
;
154 protected Comparator
getItemsComparator() {
155 return new Comparator
<UuidAndTitleCache
>() {
157 public int compare(UuidAndTitleCache entity1
,
158 UuidAndTitleCache entity2
) {
159 Collator collator
= Collator
.getInstance();
160 String compareString1
= null;
161 if (entity1
.getAbbrevTitleCache() == null){
162 compareString1
= entity1
.getTitleCache();
164 compareString1
= entity1
.getAbbrevTitleCache();
166 String compareString2
= null;
167 if (entity2
.getAbbrevTitleCache() == null){
168 compareString2
= entity2
.getTitleCache();
170 compareString2
= entity2
.getAbbrevTitleCache();
172 return collator
.compare(compareString1
, compareString2
);