Project

General

Profile

Download (4.76 KB) Statistics
| Branch: | Tag: | Revision:
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
}
(21-21/34)