ref #5828 abbrevTitle and titlecache are displayed in nomenclatural selectionDialogs
[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 org.eclipse.core.runtime.Assert;
4 import org.eclipse.core.runtime.ListenerList;
5 import org.eclipse.jface.viewers.IColorProvider;
6 import org.eclipse.jface.viewers.IFontProvider;
7 import org.eclipse.jface.viewers.ILabelDecorator;
8 import org.eclipse.jface.viewers.ILabelProvider;
9 import org.eclipse.jface.viewers.ILabelProviderListener;
10 import org.eclipse.jface.viewers.LabelProvider;
11 import org.eclipse.jface.viewers.LabelProviderChangedEvent;
12 import org.eclipse.jface.viewers.StyledCellLabelProvider;
13 import org.eclipse.jface.viewers.StyledString;
14 import org.eclipse.jface.viewers.ViewerCell;
15 import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider;
16 import org.eclipse.swt.SWT;
17 import org.eclipse.swt.graphics.Color;
18 import org.eclipse.swt.graphics.Font;
19 import org.eclipse.swt.graphics.GC;
20 import org.eclipse.swt.graphics.Image;
21 import org.eclipse.swt.graphics.Rectangle;
22 import org.eclipse.swt.widgets.Control;
23 import org.eclipse.swt.widgets.Display;
24 import org.eclipse.swt.widgets.Shell;
25 import org.eclipse.swt.widgets.Text;
26 import org.eclipse.ui.internal.IWorkbenchGraphicConstants;
27 import org.eclipse.ui.internal.WorkbenchImages;
28
29 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
30 import eu.etaxonomy.cdm.api.service.IReferenceService;
31 import eu.etaxonomy.cdm.model.reference.Reference;
32 import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
33 import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
34 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
35 import eu.etaxonomy.taxeditor.store.CdmStore;
36 import eu.etaxonomy.taxeditor.ui.dialog.selection.CdmFilteredItemsSelectionDialog.ItemsFilter;
37 import eu.etaxonomy.taxeditor.ui.dialog.selection.CdmFilteredItemsSelectionDialog.ItemsListSeparator;
38
39 public class NomenclaturalReferenceSelectionDialog extends
40 ReferenceSelectionDialog {
41
42 protected NomenclaturalReferenceSelectionDialog(Shell shell,
43 ConversationHolder conversation, String title, boolean multi,
44 Reference reference) {
45 super(shell, conversation, title, multi, reference);
46 // TODO Auto-generated constructor stub
47 }
48
49 /* (non-Javadoc)
50 * @see eu.etaxonomy.taxeditor.dialogs.AbstractFilteredCdmResourceSelectionDialog#initModel()
51 */
52 /** {@inheritDoc} */
53 @Override
54 protected void initModel() {
55 Control control = getPatternControl();
56 String pattern = null;
57 if (control != null){
58 pattern = ((Text)control).getText();
59 }
60
61
62 model = CdmStore.getService(IReferenceService.class).getUuidAndAbbrevTitleCache(limitOfInitialElements, pattern);
63 }
64
65 /**
66 *
67 * @return
68 */
69 @Override
70 protected ILabelProvider createListLabelProvider() {
71 return new FilteredCdmResourceAbbrevLabelProvider();
72 }
73
74 /**
75 * <p>select</p>
76 *
77 * @param reference a {@link eu.etaxonomy.cdm.model.reference.ReferenceBase} object.
78 * @param shell a {@link org.eclipse.swt.widgets.Shell} object.
79 * @param conversation a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
80 * @return a {@link eu.etaxonomy.cdm.model.reference.ReferenceBase} object.
81 */
82
83 public static Reference select(Shell shell, ConversationHolder conversation, Reference reference) {
84 NomenclaturalReferenceSelectionDialog dialog = new NomenclaturalReferenceSelectionDialog(shell, conversation,
85 "Choose a reference", false, reference);
86 return getSelectionFromDialog(dialog);
87 }
88
89 /* (non-Javadoc)
90 * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#createFilter()
91 */
92 /** {@inheritDoc} */
93 @Override
94 protected ItemsFilter createFilter() {
95 return new ItemsFilter() {
96
97 /**
98 * Always returns false to enforce refiltering even if the pattern is equal
99 */
100 @Override
101 public boolean equalsFilter(ItemsFilter filter) {
102 return false;
103 }
104
105 @Override
106 public boolean isConsistentItem(Object item) {
107 return false;
108 }
109
110 @Override
111 public boolean matchItem(Object item) {
112 String text = null;
113 if(item instanceof UuidAndTitleCache){
114 text = ((UuidAndTitleCache) item).getAbbrevTitleCache();
115 }else if(item instanceof String){
116 text = (String) item;
117 }
118 return text != null ? matches(text) : false;
119 }
120
121 };
122 }
123
124
125
126 public class FilteredCdmResourceAbbrevLabelProvider extends LabelProvider {
127 @Override
128 public String getText(Object element) {
129 if (element == null) {
130 return null;
131 }
132 UuidAndTitleCache uuidAndTitleCache = (UuidAndTitleCache) element;
133 String titleCache = uuidAndTitleCache.getTitleCache();
134 String abbrevTitleCache = uuidAndTitleCache.getAbbrevTitleCache();
135 abbrevTitleCache += " - " + titleCache;
136 if(PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_ID_IN_ENTITY_SELECTION_DIAOLOG)){
137 abbrevTitleCache += " ["+uuidAndTitleCache.getId()+"]";
138 }
139 return abbrevTitleCache;
140 }
141 };
142
143
144
145 }