Project

General

Profile

Download (6.2 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.agent.TeamOrPersonBase;
15
import eu.etaxonomy.cdm.model.reference.Reference;
16
import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
17
import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
18
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
19
import eu.etaxonomy.taxeditor.store.CdmStore;
20

    
21
public class NomenclaturalReferenceSelectionDialog extends
22
		ReferenceSelectionDialog {
23

    
24
    private TeamOrPersonBase author;
25
    private boolean firstCall = true;
26

    
27
	protected NomenclaturalReferenceSelectionDialog(Shell shell,
28
			ConversationHolder conversation, String title, boolean multi,
29
			Reference reference, boolean inReference, TeamOrPersonBase author) {
30
		super(shell, conversation, title, multi, reference);
31
		this.author = author;
32
		firstCall = true;
33

    
34
	}
35

    
36
	/* (non-Javadoc)
37
	 * @see eu.etaxonomy.taxeditor.dialogs.AbstractFilteredCdmResourceSelectionDialog#initModel()
38
	 */
39
	/** {@inheritDoc} */
40
	@Override
41
	protected void initModel() {
42
	    Control control = getPatternControl();
43
        String pattern = null;
44
        if (control != null){
45
            pattern = ((Text)control).getText();
46

    
47
        }
48
        if (firstCall && author != null){
49
            pattern = author.getNomenclaturalTitle();
50
            if (control!= null){
51
                firstCall = false;
52
                ((Text)control).setText(pattern);
53
            }
54

    
55
        }
56

    
57
        if (pattern == null || pattern.equals("?")){
58
            model = CdmStore.getService(IReferenceService.class).getUuidAndAbbrevTitleCache(null, null);
59
        }else{
60
            model = CdmStore.getService(IReferenceService.class).getUuidAndAbbrevTitleCache(limitOfInitialElements, pattern);
61
        }
62
        System.out.println("2");
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, TeamOrPersonBase author) {
84
		NomenclaturalReferenceSelectionDialog dialog = new NomenclaturalReferenceSelectionDialog(shell, conversation,
85
				"Choose a reference", isInReference, reference, false, author);
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
				return true;
113
//				String text = null;
114
//				if(item instanceof UuidAndTitleCache){
115
//					if (((UuidAndTitleCache) item).getAbbrevTitleCache() != null){
116
//						text = ((UuidAndTitleCache) item).getAbbrevTitleCache();
117
//					} else{
118
//						text = ((UuidAndTitleCache) item).getTitleCache();
119
//					}
120
//				}else if(item instanceof String){
121
//					text = (String) item;
122
//				}
123
//				return text != null ? matches(text) : false;
124
			}
125

    
126
		};
127
	}
128

    
129

    
130

    
131
	public class FilteredCdmResourceAbbrevLabelProvider extends LabelProvider {
132
		@Override
133
		public String getText(Object element) {
134
			if (element == null) {
135
				return null;
136
			}
137
			UuidAndTitleCache uuidAndTitleCache = (UuidAndTitleCache) element;
138
			String titleCache = uuidAndTitleCache.getTitleCache();
139
			String abbrevTitleCache = uuidAndTitleCache.getAbbrevTitleCache();
140
			if (!abbrevTitleCache.equals(titleCache)){
141
				abbrevTitleCache += " - " + titleCache;
142
			}
143
			if(PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_ID_IN_ENTITY_SELECTION_DIAOLOG)){
144
				abbrevTitleCache += " ["+uuidAndTitleCache.getId()+"]";
145
			}
146
            return abbrevTitleCache;
147
		}
148
	};
149

    
150
	@Override
151
    protected Comparator getItemsComparator() {
152
        return new Comparator<UuidAndTitleCache>() {
153
            @Override
154
            public int compare(UuidAndTitleCache entity1,
155
                    UuidAndTitleCache entity2) {
156

    
157
                if (entity1.getUuid().equals(entity2.getUuid())){
158
                    return 0;
159
                }
160
                Collator collator = Collator.getInstance();
161
                String compareString1 = "";
162
                if (entity1.getAbbrevTitleCache() != null){
163
                    compareString1 = entity1.getAbbrevTitleCache();
164
                }
165
                if (entity1.getTitleCache() != null){
166
                    compareString1 += entity1.getTitleCache();
167
                }
168

    
169

    
170
                String compareString2 = "";
171
                if (entity2.getAbbrevTitleCache() != null){
172
                    compareString2 = entity2.getAbbrevTitleCache();
173
                }
174
                if (entity2.getTitleCache() != null){
175
                    compareString2 += entity2.getTitleCache();
176
                }
177

    
178

    
179
                int result =collator.compare(compareString1, compareString2);
180
                if (result == 0){
181
                    result = entity1.getUuid().compareTo(entity2.getUuid());
182
                }
183
                return result;
184
            }
185
        };
186
    }
187
	@Override
188
	protected String getTitle(Reference cdmObject) {
189
        if(cdmObject == null){
190
            return "";
191
        }
192
        if (cdmObject.getAbbrevTitle() != null){
193
            return cdmObject.getAbbrevTitleCache();
194
        }else{
195
            return cdmObject.getTitleCache();
196
        }
197

    
198

    
199

    
200
    }
201

    
202

    
203

    
204

    
205
}
(21-21/35)