Project

General

Profile

Download (5.21 KB) Statistics
| Branch: | Tag: | Revision:
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, boolean inReference) {
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
        if (pattern == null || pattern.equals("?")){
43
            model = CdmStore.getService(IReferenceService.class).getUuidAndAbbrevTitleCache(null, null);
44
        }else{
45
            model = CdmStore.getService(IReferenceService.class).getUuidAndAbbrevTitleCache(limitOfInitialElements, pattern);
46
        }
47
	}
48

    
49
	/**
50
	 *
51
	 * @return
52
	 */
53
   @Override
54
	protected ILabelProvider createListLabelProvider() {
55
		return new FilteredCdmResourceAbbrevLabelProvider();
56
	}
57

    
58
	/**
59
	 * <p>select</p>
60
	 *
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.
65
	 */
66

    
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);
71
	}
72

    
73
	/* (non-Javadoc)
74
	 * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#createFilter()
75
	 */
76
	/** {@inheritDoc} */
77
	@Override
78
	protected ItemsFilter createFilter() {
79
		return new ItemsFilter() {
80

    
81
			/**
82
			 * Always returns false to enforce refiltering even if the pattern is equal
83
			 */
84
			@Override
85
			public boolean equalsFilter(ItemsFilter filter) {
86
				return false;
87
			}
88

    
89
			@Override
90
			public boolean isConsistentItem(Object item) {
91
				return false;
92
			}
93

    
94
			@Override
95
			public boolean matchItem(Object item) {
96
				return true;
97
//				String text = null;
98
//				if(item instanceof UuidAndTitleCache){
99
//					if (((UuidAndTitleCache) item).getAbbrevTitleCache() != null){
100
//						text = ((UuidAndTitleCache) item).getAbbrevTitleCache();
101
//					} else{
102
//						text = ((UuidAndTitleCache) item).getTitleCache();
103
//					}
104
//				}else if(item instanceof String){
105
//					text = (String) item;
106
//				}
107
//				return text != null ? matches(text) : false;
108
			}
109

    
110
		};
111
	}
112

    
113

    
114

    
115
	public class FilteredCdmResourceAbbrevLabelProvider extends LabelProvider {
116
		@Override
117
		public String getText(Object element) {
118
			if (element == null) {
119
				return null;
120
			}
121
			UuidAndTitleCache uuidAndTitleCache = (UuidAndTitleCache) element;
122
			String titleCache = uuidAndTitleCache.getTitleCache();
123
			String abbrevTitleCache = uuidAndTitleCache.getAbbrevTitleCache();
124
			if (!abbrevTitleCache.equals(titleCache)){
125
				abbrevTitleCache += " - " + titleCache;
126
			}
127
			if(PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_ID_IN_ENTITY_SELECTION_DIAOLOG)){
128
				abbrevTitleCache += " ["+uuidAndTitleCache.getId()+"]";
129
			}
130
            return abbrevTitleCache;
131
		}
132
	};
133

    
134
	@Override
135
	protected Comparator getItemsComparator() {
136
		return new Comparator<UuidAndTitleCache>() {
137
			@Override
138
			public int compare(UuidAndTitleCache entity1,
139
					UuidAndTitleCache entity2) {
140
				Collator collator = Collator.getInstance();
141
				String compareString1 = "";
142
				if (entity1.getAbbrevTitleCache() != null){
143
					compareString1 = entity1.getAbbrevTitleCache();
144
				}
145
				if (entity1.getTitleCache() != null){
146
					compareString1 += entity1.getTitleCache();
147
				}
148
				String compareString2 = "";
149
				if (entity2.getAbbrevTitleCache() != null){
150
					compareString2 = entity2.getAbbrevTitleCache();
151
				}
152
				if (entity2.getTitleCache() != null){
153
					compareString2 += entity2.getTitleCache();
154
				}
155
				return collator.compare(compareString1, compareString2);
156
			}
157
		};
158
	}
159

    
160
	@Override
161
	protected String getTitle(Reference cdmObject) {
162
        if(cdmObject == null){
163
            return "";
164
        }
165
        if (cdmObject.getAbbrevTitle() != null){
166
            return cdmObject.getAbbrevTitleCache();
167
        }else{
168
            return cdmObject.getTitleCache();
169
        }
170

    
171

    
172

    
173
    }
174

    
175

    
176

    
177

    
178
}
(21-21/34)