a5a3ba167148fc74c4b2b8f07fdfc31fc3fcba42
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / dialog / selection / TaxonNodeSelectionDialog.java
1 /**
2 *
3 */
4 package eu.etaxonomy.taxeditor.ui.dialog.selection;
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 /**
64 * <p>Constructor for FilteredTaxonNodeSelectionDialog.</p>
65 *
66 * @param shell a {@link org.eclipse.swt.widgets.Shell} object.
67 * @param title a {@link java.lang.String} object.
68 * @param conversation a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
69 * @param excludeTaxa a {@link java.util.List} object.
70 * @param multi a boolean.
71 * @param node a {@link eu.etaxonomy.cdm.model.taxon.TaxonNode} object.
72 */
73 protected TaxonNodeSelectionDialog(Shell shell, ConversationHolder conversation, String title, List<UUID> excludeTaxa, boolean multi, TaxonNode node, Classification classification) {
74 super(shell, conversation, title, multi, TaxonNodeSelectionDialog.class.getCanonicalName(), node);
75
76 ILabelProvider labelProvider = new FilteredCdmResourceLabelProvider();
77
78 setListLabelProvider(labelProvider);
79 setDetailsLabelProvider(labelProvider);
80
81 if(classification != null){
82 selectedClassification = classification;
83 }
84 }
85
86
87 /* (non-Javadoc)
88 * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#createExtendedContentArea(org.eclipse.swt.widgets.Composite)
89 */
90 /** {@inheritDoc} */
91 @Override
92 protected Control createExtendedContentArea(Composite parent) {
93 return createClassificationSelectionCombo(parent);
94 }
95
96 /*
97 * currently disabled tree selection composite
98 */
99 private Control createClassificationSelectionCombo(Composite parent){
100 // classifications = CdmStore.getTaxonTreeService().list(null, null, null, null, null);
101
102 Composite classificationSelection = new Composite(parent, SWT.NULL);
103 classificationSelection.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
104
105 GridLayout layout = new GridLayout();
106 classificationSelection.setLayout(layout);
107
108 Label label = new Label(classificationSelection, SWT.NULL);
109 // TODO not working is not really true but leave it here to remind everyone that this is under construction
110 label.setText("Select Classification");
111 classificationSelectionCombo = new Combo(classificationSelection, SWT.BORDER | SWT.READ_ONLY);
112 classificationSelectionCombo.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, true));
113
114 for(Classification tree : classifications){
115 classificationSelectionCombo.add(tree.getName().getText(), classifications.indexOf(tree));
116
117 }
118
119 classificationSelectionCombo.select(classifications.indexOf(selectedClassification));
120
121 // TODO remember last selection
122 classificationSelectionCombo.addSelectionListener(this);
123
124
125
126 return classificationSelection;
127 }
128
129 /** {@inheritDoc} */
130 @Override
131 protected String getTitle(TaxonNode taxonNode) {
132 if(taxonNode != null && taxonNode.getTaxon() != null){
133 return taxonNode.getTaxon().getTitleCache();
134 }
135
136 return "";
137 }
138
139 /* (non-Javadoc)
140 * @see eu.etaxonomy.taxeditor.dialogs.AbstractFilteredCdmResourceSelectionDialog#getPersistentObject(java.util.UUID)
141 */
142 /** {@inheritDoc} */
143 @Override
144 protected TaxonNode getPersistentObject(UUID uuid) {
145 return CdmStore.getService(IClassificationService.class).getTaxonNodeByUuid(uuid);
146 }
147
148 /* (non-Javadoc)
149 * @see eu.etaxonomy.taxeditor.dialogs.AbstractFilteredCdmResourceSelectionDialog#initModel()
150 */
151 /** {@inheritDoc} */
152 @Override
153 protected void initModel() {
154 // default to first tree
155 // TODO this will be problematic and can only be seen as workaround
156
157
158 if(classifications == null){
159 classifications = CdmStore.getService(IClassificationService.class).list(null, null, null, null, null);
160 selectedClassification = classifications.iterator().next();
161 }
162
163 model = CdmStore.getService(IClassificationService.class).getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(selectedClassification);
164 }
165
166 /** {@inheritDoc} */
167 @Override
168 protected AbstractNewEntityWizard getNewEntityWizard(String parameter) {
169 return null;
170 }
171
172 /** {@inheritDoc} */
173 @Override
174 protected String getNewWizardLinkText() {
175 return null;
176 }
177
178 /** {@inheritDoc} */
179 @Override
180 public void widgetSelected(SelectionEvent e) {
181 selectedClassification = classifications.get(classificationSelectionCombo.getSelectionIndex());
182
183 // refresh();
184 setPattern(null);
185 }
186
187 /** {@inheritDoc} */
188 @Override
189 public void widgetDefaultSelected(SelectionEvent e) {}
190
191
192 }