changed call to createEmptyComboElement
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / dialogs / filteredSelection / TaxonNodeSelectionDialog.java
1 /**
2 *
3 */
4 package eu.etaxonomy.taxeditor.ui.dialogs.filteredSelection;
5
6 import java.util.List;
7 import java.util.UUID;
8
9 import org.eclipse.jface.viewers.ILabelProvider;
10 import org.eclipse.swt.SWT;
11 import org.eclipse.swt.events.SelectionEvent;
12 import org.eclipse.swt.events.SelectionListener;
13 import org.eclipse.swt.layout.GridData;
14 import org.eclipse.swt.layout.GridLayout;
15 import org.eclipse.swt.widgets.Combo;
16 import org.eclipse.swt.widgets.Composite;
17 import org.eclipse.swt.widgets.Control;
18 import org.eclipse.swt.widgets.Label;
19 import org.eclipse.swt.widgets.Shell;
20
21 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
22 import eu.etaxonomy.cdm.api.service.IClassificationService;
23 import eu.etaxonomy.cdm.model.taxon.Classification;
24 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
25 import eu.etaxonomy.taxeditor.newWizard.AbstractNewEntityWizard;
26 import eu.etaxonomy.taxeditor.store.CdmStore;
27
28 /**
29 * <p>FilteredTaxonNodeSelectionDialog class.</p>
30 *
31 * @author p.ciardelli
32 * @version $Id: $
33 */
34 public class TaxonNodeSelectionDialog extends AbstractFilteredCdmResourceSelectionDialog<TaxonNode> implements SelectionListener{
35
36 /**
37 * <p>select</p>
38 *
39 * @param shell a {@link org.eclipse.swt.widgets.Shell} object.
40 * @param conversation a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
41 * @param title a {@link java.lang.String} object.
42 * @param excludeTaxa a {@link java.util.List} object.
43 * @param node a {@link eu.etaxonomy.cdm.model.taxon.TaxonNode} object.
44 * @return a {@link eu.etaxonomy.cdm.model.taxon.TaxonNode} object.
45 */
46 public static TaxonNode select(Shell shell, ConversationHolder conversation, String title, List<UUID> excludeTaxa, TaxonNode node, Classification classification) {
47 TaxonNodeSelectionDialog dialog = new TaxonNodeSelectionDialog(shell,
48 conversation,
49 title,
50 excludeTaxa,
51 false,
52 node,
53 classification);
54 return getSelectionFromDialog(dialog);
55 }
56
57 private Combo classificationSelectionCombo;
58
59 private List<Classification> classifications;
60
61 private Classification selectedClassification;
62
63 private final Classification defaultClassification;
64
65
66 /**
67 * <p>Constructor for FilteredTaxonNodeSelectionDialog.</p>
68 *
69 * @param shell a {@link org.eclipse.swt.widgets.Shell} object.
70 * @param title a {@link java.lang.String} object.
71 * @param conversation a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
72 * @param excludeTaxa a {@link java.util.List} object.
73 * @param multi a boolean.
74 * @param node a {@link eu.etaxonomy.cdm.model.taxon.TaxonNode} object.
75 */
76 protected TaxonNodeSelectionDialog(Shell shell, ConversationHolder conversation, String title, List<UUID> excludeTaxa, boolean multi, TaxonNode node, Classification classification) {
77 super(shell, conversation, title, multi, TaxonNodeSelectionDialog.class.getCanonicalName(), node);
78
79 ILabelProvider labelProvider = new FilteredCdmResourceLabelProvider();
80
81 setListLabelProvider(labelProvider);
82 setDetailsLabelProvider(labelProvider);
83
84 if(classification != null){
85 selectedClassification = classification;
86 }
87 defaultClassification = classification;
88 }
89
90
91 /* (non-Javadoc)
92 * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#createExtendedContentArea(org.eclipse.swt.widgets.Composite)
93 */
94 /** {@inheritDoc} */
95 @Override
96 protected Control createExtendedContentArea(Composite parent) {
97 return createClassificationSelectionCombo(parent);
98 }
99
100 /*
101 * currently disabled tree selection composite
102 */
103 private Control createClassificationSelectionCombo(Composite parent){
104 // classifications = CdmStore.getTaxonTreeService().list(null, null, null, null, null);
105
106 Composite classificationSelection = new Composite(parent, SWT.NULL);
107 classificationSelection.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
108
109 GridLayout layout = new GridLayout();
110 classificationSelection.setLayout(layout);
111
112 Label label = new Label(classificationSelection, SWT.NULL);
113 // TODO not working is not really true but leave it here to remind everyone that this is under construction
114 label.setText("Select Classification (experimental)");
115 classificationSelectionCombo = new Combo(classificationSelection, SWT.BORDER | SWT.READ_ONLY);
116 classificationSelectionCombo.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, true));
117
118 for(Classification tree : classifications){
119 classificationSelectionCombo.add(tree.getName().getText(), classifications.indexOf(tree));
120 }
121
122 classificationSelectionCombo.select(classifications.indexOf(selectedClassification));
123
124 // TODO remember last selection
125 classificationSelectionCombo.addSelectionListener(this);
126
127
128
129 return classificationSelection;
130 }
131
132 /** {@inheritDoc} */
133 @Override
134 protected String getTitle(TaxonNode taxonNode) {
135 if(taxonNode != null && taxonNode.getTaxon() != null){
136 return taxonNode.getTaxon().getTitleCache();
137 }
138
139 return "";
140 }
141
142 /* (non-Javadoc)
143 * @see eu.etaxonomy.taxeditor.dialogs.AbstractFilteredCdmResourceSelectionDialog#getPersistentObject(java.util.UUID)
144 */
145 /** {@inheritDoc} */
146 @Override
147 protected TaxonNode getPersistentObject(UUID uuid) {
148 return CdmStore.getService(IClassificationService.class).getTaxonNodeByUuid(uuid);
149 }
150
151 /* (non-Javadoc)
152 * @see eu.etaxonomy.taxeditor.dialogs.AbstractFilteredCdmResourceSelectionDialog#initModel()
153 */
154 /** {@inheritDoc} */
155 @Override
156 protected void initModel() {
157 // default to first tree
158 // TODO this will be problematic and can only be seen as workaround
159
160
161 if(classifications == null){
162 classifications = CdmStore.getService(IClassificationService.class).list(null, null, null, null, null);
163 selectedClassification = classifications.iterator().next();
164 }
165
166 model = CdmStore.getService(IClassificationService.class).getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(selectedClassification);
167 }
168
169 /** {@inheritDoc} */
170 @Override
171 protected AbstractNewEntityWizard getNewEntityWizard(String parameter) {
172 return null;
173 }
174
175 /** {@inheritDoc} */
176 @Override
177 protected String getNewWizardLinkText() {
178 return null;
179 }
180
181 /** {@inheritDoc} */
182 public void widgetSelected(SelectionEvent e) {
183 selectedClassification = classifications.get(classificationSelectionCombo.getSelectionIndex());
184
185 // refresh();
186 setPattern(null);
187 }
188
189 /** {@inheritDoc} */
190 public void widgetDefaultSelected(SelectionEvent e) {}
191
192
193 }