1
|
// $Id$
|
2
|
/**
|
3
|
* Copyright (C) 2007 EDIT
|
4
|
* European Distributed Institute of Taxonomy
|
5
|
* http://www.e-taxonomy.eu
|
6
|
*
|
7
|
* The contents of this file are subject to the Mozilla Public License Version 1.1
|
8
|
* See LICENSE.TXT at the top of this package for the full license terms.
|
9
|
*/
|
10
|
|
11
|
package eu.etaxonomy.taxeditor.section.classification;
|
12
|
|
13
|
|
14
|
import org.apache.log4j.Logger;
|
15
|
import org.eclipse.jface.util.IPropertyChangeListener;
|
16
|
import org.eclipse.jface.util.PropertyChangeEvent;
|
17
|
import org.eclipse.swt.SWT;
|
18
|
|
19
|
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
|
20
|
import eu.etaxonomy.cdm.model.taxon.ITreeNode;
|
21
|
import eu.etaxonomy.taxeditor.forms.AbstractCdmEntityWizardPage;
|
22
|
import eu.etaxonomy.taxeditor.forms.CdmFormFactory;
|
23
|
import eu.etaxonomy.taxeditor.forms.CdmFormFactory.DetailType;
|
24
|
import eu.etaxonomy.taxeditor.forms.ICdmFormElement;
|
25
|
|
26
|
/**
|
27
|
* <p>TaxonNodeWizardPage class.</p>
|
28
|
*
|
29
|
* @author n.hoffmann
|
30
|
* @created Sep 15, 2009
|
31
|
* @version 1.0
|
32
|
*/
|
33
|
public class TaxonNodeWizardPage extends AbstractCdmEntityWizardPage<ITreeNode> implements IPropertyChangeListener{
|
34
|
|
35
|
private static final Logger logger = Logger
|
36
|
.getLogger(TaxonNodeWizardPage.class);
|
37
|
|
38
|
/**
|
39
|
* <p>Constructor for TaxonNodeWizardPage.</p>
|
40
|
*
|
41
|
* @param formFactory a {@link eu.etaxonomy.taxeditor.forms.CdmFormFactory} object.
|
42
|
* @param conversation a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
|
43
|
* @param entity a {@link eu.etaxonomy.cdm.model.taxon.ITreeNode} object.
|
44
|
*/
|
45
|
public TaxonNodeWizardPage(CdmFormFactory formFactory,
|
46
|
ConversationHolder conversation, ITreeNode entity) {
|
47
|
super(formFactory, conversation, entity);
|
48
|
setTitle("Create a new Taxon");
|
49
|
}
|
50
|
|
51
|
|
52
|
/* (non-Javadoc)
|
53
|
* @see eu.etaxonomy.taxeditor.forms.AbstractCdmEntityWizardPage#createElement(eu.etaxonomy.taxeditor.forms.ICdmFormElement)
|
54
|
*/
|
55
|
/** {@inheritDoc} */
|
56
|
@Override
|
57
|
public TaxonNodeDetailElement createElement(ICdmFormElement rootElement) {
|
58
|
|
59
|
TaxonNodeDetailElement detailElement = (TaxonNodeDetailElement) formFactory.createCdmDetailElement(DetailType.TAXON_NODE, rootElement, SWT.NULL);
|
60
|
detailElement.setEntity(entity);
|
61
|
formFactory.addPropertyChangeListener(this);
|
62
|
return detailElement;
|
63
|
}
|
64
|
|
65
|
|
66
|
/* (non-Javadoc)
|
67
|
* @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
|
68
|
*/
|
69
|
/** {@inheritDoc} */
|
70
|
@Override
|
71
|
public void propertyChange(PropertyChangeEvent event) {
|
72
|
if(event.getSource() == getDetailElement()){
|
73
|
setPageComplete(checkComplete());
|
74
|
}
|
75
|
}
|
76
|
|
77
|
/**
|
78
|
*
|
79
|
*/
|
80
|
private boolean checkComplete() {
|
81
|
TaxonNodeDetailElement detailElement = (TaxonNodeDetailElement) getDetailElement();
|
82
|
|
83
|
if(detailElement.getClassification() == null){
|
84
|
setMessage("No classification", WARNING);
|
85
|
}else{
|
86
|
setMessage(null);
|
87
|
return true;
|
88
|
}
|
89
|
|
90
|
return false;
|
91
|
}
|
92
|
|
93
|
|
94
|
/* (non-Javadoc)
|
95
|
* @see eu.etaxonomy.taxeditor.forms.AbstractCdmEntityWizardPage#dispose()
|
96
|
*/
|
97
|
/** {@inheritDoc} */
|
98
|
@Override
|
99
|
public void dispose() {
|
100
|
formFactory.removePropertyChangeListener(this);
|
101
|
super.dispose();
|
102
|
}
|
103
|
|
104
|
|
105
|
// private static final String BUTTON_TEXT_BROWSE = "Browse";
|
106
|
//
|
107
|
// private static final String ERROR_MESSAGE_TAXONOMIC_TREE_EMPTY = "Classification must not be empty";
|
108
|
//
|
109
|
// private TaxonomicTree classification;
|
110
|
//
|
111
|
// private ParseHandler parseHandler;
|
112
|
//
|
113
|
// private TaxonNode parentTaxonNode;
|
114
|
//
|
115
|
// private TaxonBase taxonBase;
|
116
|
//
|
117
|
// private boolean reuseExistingTaxon = false;
|
118
|
//
|
119
|
// private TaxonNameBase taxonName;
|
120
|
//
|
121
|
// private boolean openInEditor = true;
|
122
|
//
|
123
|
// private Button button_openInEditor;
|
124
|
//
|
125
|
// private Text text_parentTaxonNode;
|
126
|
//
|
127
|
// private Text text_reuseTaxon;
|
128
|
//
|
129
|
// private Text text_taxonName;
|
130
|
//
|
131
|
// private Text text_taxonomicTree;
|
132
|
//
|
133
|
// private Button button_taxonName;
|
134
|
//
|
135
|
// private Button button_reuseTaxon;
|
136
|
//
|
137
|
// private Button button_toggleReuseTaxon;
|
138
|
//
|
139
|
// /**
|
140
|
// * @param pageName
|
141
|
// */
|
142
|
// protected TaxonNodeWizardPage(IStructuredSelection selection) {
|
143
|
// super("New Taxon");
|
144
|
//
|
145
|
// if(selection != null && selection.size() == 1){
|
146
|
// if(selection.getFirstElement() instanceof ITreeNode){
|
147
|
// ITreeNode parentNode = (ITreeNode) selection.getFirstElement();
|
148
|
//
|
149
|
// if(parentNode instanceof TaxonNode){
|
150
|
// parentTaxonNode = (TaxonNode) parentNode;
|
151
|
// classification = parentTaxonNode.getTaxonomicTree();
|
152
|
// }else{
|
153
|
// classification = (TaxonomicTree) parentNode;
|
154
|
// }
|
155
|
// }
|
156
|
// }else{
|
157
|
// setPageComplete(false);
|
158
|
// }
|
159
|
//
|
160
|
// }
|
161
|
//
|
162
|
// /* (non-Javadoc)
|
163
|
// * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
|
164
|
// */
|
165
|
// public void createControl(Composite parent) {
|
166
|
// Composite composite = new Composite(parent, SWT.NULL);
|
167
|
//
|
168
|
// GridLayout layout = new GridLayout(3, false);
|
169
|
// composite.setLayout(layout);
|
170
|
//
|
171
|
// // taxonomic tree
|
172
|
// Label label_taxonomicTree = new Label(composite, SWT.NULL);
|
173
|
// label_taxonomicTree.setText("Classification");
|
174
|
//
|
175
|
// text_taxonomicTree = new Text(composite, SWT.BORDER | SWT.SINGLE);
|
176
|
// text_taxonomicTree.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, true));
|
177
|
// text_taxonomicTree.setEnabled(false);
|
178
|
// text_taxonomicTree.addModifyListener(this);
|
179
|
// text_taxonomicTree.setText(classification != null ? classification.getTitleCache() : "");
|
180
|
//
|
181
|
// Button button_taxonomicTree = new Button(composite, SWT.PUSH);
|
182
|
// button_taxonomicTree.setText(BUTTON_TEXT_BROWSE);
|
183
|
// button_taxonomicTree.addSelectionListener(new TaxonomicTreeSelector());
|
184
|
//
|
185
|
//
|
186
|
// // parental node
|
187
|
// Label label_parentTaxonNode = new Label(composite, SWT.NULL);
|
188
|
// label_parentTaxonNode.setText("Parent Taxon");
|
189
|
//
|
190
|
// text_parentTaxonNode = new Text(composite, SWT.BORDER | SWT.SINGLE);
|
191
|
// text_parentTaxonNode.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, true));
|
192
|
// text_parentTaxonNode.setEnabled(false);
|
193
|
// text_parentTaxonNode.setText(parentTaxonNode != null ? parentTaxonNode.getTaxon().getName().getTitleCache() : "");
|
194
|
//
|
195
|
// Button button_parentTaxonNode = new Button(composite, SWT.PUSH);
|
196
|
// button_parentTaxonNode.setText(BUTTON_TEXT_BROWSE);
|
197
|
// button_parentTaxonNode.addSelectionListener(new TaxonNodeSelector());
|
198
|
//
|
199
|
// // existing taxon
|
200
|
// Composite container_label_reuseTaxon = new Composite(composite, SWT.NULL);
|
201
|
// container_label_reuseTaxon.setLayout(new GridLayout(2, false));
|
202
|
//
|
203
|
// button_toggleReuseTaxon = new Button(container_label_reuseTaxon, SWT.CHECK);
|
204
|
// button_toggleReuseTaxon.addSelectionListener(new ToggleReuseTaxonSelector());
|
205
|
// button_toggleReuseTaxon.setSelection(reuseExistingTaxon);
|
206
|
//
|
207
|
// Label label_reuseTaxon = new Label(container_label_reuseTaxon, SWT.NULL);
|
208
|
// label_reuseTaxon.setText("Reuse Existing Taxon");
|
209
|
// label_reuseTaxon.setEnabled(false);
|
210
|
//
|
211
|
// text_reuseTaxon = new Text(composite, SWT.BORDER | SWT.SINGLE);
|
212
|
// text_reuseTaxon.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, true));
|
213
|
// text_reuseTaxon.setEnabled(false);
|
214
|
//
|
215
|
//
|
216
|
// button_reuseTaxon = new Button(composite, SWT.PUSH);
|
217
|
// button_reuseTaxon.setText(BUTTON_TEXT_BROWSE);
|
218
|
// button_reuseTaxon.addSelectionListener(new TaxonSelector());
|
219
|
// button_reuseTaxon.setEnabled(false);
|
220
|
//
|
221
|
// // name
|
222
|
// Label label_taxonName = new Label(composite, SWT.NULL);
|
223
|
// label_taxonName.setText("Taxon Name");
|
224
|
//
|
225
|
// text_taxonName = new Text(composite, SWT.BORDER | SWT.SINGLE);
|
226
|
// text_taxonName.addModifyListener(this);
|
227
|
// text_taxonName.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, true));
|
228
|
//
|
229
|
// button_taxonName = new Button(composite, SWT.PUSH);
|
230
|
// button_taxonName.setText(BUTTON_TEXT_BROWSE);
|
231
|
// button_taxonName.addSelectionListener(new TaxonNameSelector());
|
232
|
//
|
233
|
// // open in editor
|
234
|
// Composite container_openInEditor = new Composite(composite, SWT.NULL);
|
235
|
// container_openInEditor.setLayout(new GridLayout(2, false));
|
236
|
// button_openInEditor = new Button(container_openInEditor, SWT.CHECK);
|
237
|
// button_openInEditor.addSelectionListener(new OpenInEditorSelector());
|
238
|
// button_openInEditor.setSelection(openInEditor);
|
239
|
//
|
240
|
// Label label_openInEditor = new Label(container_openInEditor, SWT.NULL);
|
241
|
// label_openInEditor.setText("Open Taxon in Editor");
|
242
|
//
|
243
|
// // initialize the parse handler
|
244
|
// parseHandler = ParseHandler.NewInstance(text_taxonName, taxonName);
|
245
|
//
|
246
|
// // set focus to name field
|
247
|
// text_taxonName.setFocus();
|
248
|
//
|
249
|
// setControl(composite);
|
250
|
// }
|
251
|
//
|
252
|
// /**
|
253
|
// * @return the taxon
|
254
|
// */
|
255
|
// public TaxonBase getTaxon() {
|
256
|
// return taxonBase;
|
257
|
// }
|
258
|
//
|
259
|
// /**
|
260
|
// * @return the name
|
261
|
// */
|
262
|
// public TaxonNameBase getTaxonName() {
|
263
|
// return taxonName;
|
264
|
// }
|
265
|
//
|
266
|
// /**
|
267
|
// * @return
|
268
|
// */
|
269
|
// public ITreeNode getParentNode() {
|
270
|
// return parentTaxonNode != null ? parentTaxonNode : classification;
|
271
|
// }
|
272
|
//
|
273
|
// public boolean openInEditor(){
|
274
|
// return openInEditor;
|
275
|
// }
|
276
|
//
|
277
|
// private void updatePage() {
|
278
|
// getWizard().getContainer().updateButtons();
|
279
|
// }
|
280
|
//
|
281
|
// /*
|
282
|
// * SELECTION ADAPTERS
|
283
|
// */
|
284
|
//
|
285
|
// private class TaxonomicTreeSelector extends SelectionAdapter{
|
286
|
// /* (non-Javadoc)
|
287
|
// * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
|
288
|
// */
|
289
|
// @Override
|
290
|
// public void widgetSelected(SelectionEvent e) {
|
291
|
// super.widgetSelected(e);
|
292
|
// classification = FilteredClassificationSelectionDialog.selectClassification(NavigationUtil.getShell(), null);
|
293
|
// if (classification != null) {
|
294
|
// text_taxonomicTree.setText(classification.getTitleCache());
|
295
|
// text_parentTaxonNode.setText("");
|
296
|
// parentTaxonNode = null;
|
297
|
// }
|
298
|
// setPageComplete(true);
|
299
|
// }
|
300
|
// }
|
301
|
//
|
302
|
// private class TaxonNodeSelector extends SelectionAdapter{
|
303
|
// /* (non-Javadoc)
|
304
|
// * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
|
305
|
// */
|
306
|
// @Override
|
307
|
// public void widgetSelected(SelectionEvent e) {
|
308
|
// super.widgetSelected(e);
|
309
|
// parentTaxonNode = FilteredTaxonNodeSelectionDialog.selectTaxonNode(NavigationUtil.getShell(), "Select parent", null, null);
|
310
|
// if (parentTaxonNode != null) {
|
311
|
// text_parentTaxonNode.setText(parentTaxonNode.getTaxon().getTitleCache());
|
312
|
// text_taxonomicTree.setText(parentTaxonNode.getTaxonomicTree().getTitleCache());
|
313
|
//
|
314
|
//
|
315
|
// }
|
316
|
// setPageComplete(true);
|
317
|
// }
|
318
|
//
|
319
|
// }
|
320
|
//
|
321
|
// private class TaxonSelector extends SelectionAdapter{
|
322
|
// /* (non-Javadoc)
|
323
|
// * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
|
324
|
// */
|
325
|
// @Override
|
326
|
// public void widgetSelected(SelectionEvent e) {
|
327
|
// super.widgetSelected(e);
|
328
|
// taxonBase = FilteredTaxonSelectionDialog.selectTaxon(NavigationUtil.getShell(), null);
|
329
|
// if (taxonBase != null) {
|
330
|
// text_reuseTaxon.setText(taxonBase.getTitleCache());
|
331
|
// }
|
332
|
// }
|
333
|
// }
|
334
|
//
|
335
|
// private class TaxonNameSelector extends SelectionAdapter{
|
336
|
// /* (non-Javadoc)
|
337
|
// * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
|
338
|
// */
|
339
|
// @Override
|
340
|
// public void widgetSelected(SelectionEvent e) {
|
341
|
// super.widgetSelected(e);
|
342
|
// taxonName = FilteredNameSelectionDialog.selectName(NavigationUtil.getShell(), null, null);
|
343
|
// if (taxonName != null) {
|
344
|
// text_taxonName.setText(taxonName.getTitleCache());
|
345
|
// }
|
346
|
// }
|
347
|
// }
|
348
|
//
|
349
|
// private class OpenInEditorSelector extends SelectionAdapter{
|
350
|
// /* (non-Javadoc)
|
351
|
// * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
|
352
|
// */
|
353
|
// @Override
|
354
|
// public void widgetSelected(SelectionEvent e) {
|
355
|
// super.widgetSelected(e);
|
356
|
// openInEditor = button_openInEditor.getSelection();
|
357
|
// }
|
358
|
// }
|
359
|
//
|
360
|
// private class ToggleReuseTaxonSelector extends SelectionAdapter{
|
361
|
// /* (non-Javadoc)
|
362
|
// * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
|
363
|
// */
|
364
|
// @Override
|
365
|
// public void widgetSelected(SelectionEvent e) {
|
366
|
// super.widgetSelected(e);
|
367
|
//
|
368
|
// if(button_toggleReuseTaxon.getSelection()){
|
369
|
// // enable reuse Taxon
|
370
|
// text_reuseTaxon.setEnabled(true);
|
371
|
// button_reuseTaxon.setEnabled(true);
|
372
|
// // disable name
|
373
|
// text_taxonName.setEnabled(false);
|
374
|
// button_taxonName.setEnabled(false);
|
375
|
// }else{
|
376
|
// // disable reuse Taxon
|
377
|
// text_reuseTaxon.setEnabled(false);
|
378
|
// button_reuseTaxon.setEnabled(false);
|
379
|
// // enable name
|
380
|
// text_taxonName.setEnabled(true);
|
381
|
// button_taxonName.setEnabled(true);
|
382
|
// }
|
383
|
//
|
384
|
// }
|
385
|
// }
|
386
|
//
|
387
|
// /* (non-Javadoc)
|
388
|
// * @see org.eclipse.swt.events.ModifyListener#modifyText(org.eclipse.swt.events.ModifyEvent)
|
389
|
// */
|
390
|
// public void modifyText(ModifyEvent e) {
|
391
|
// if (e.getSource().equals(text_taxonomicTree)) {
|
392
|
// if (! "".equals(text_taxonomicTree.getText())) {
|
393
|
// setErrorMessage(null);
|
394
|
// }
|
395
|
// }
|
396
|
//
|
397
|
// if (e.getSource().equals(text_taxonName)) {
|
398
|
// // Set error message if taxonomic tree was not chosen
|
399
|
// if ("".equals(text_taxonomicTree.getText())) {
|
400
|
// setErrorMessage(ERROR_MESSAGE_TAXONOMIC_TREE_EMPTY);
|
401
|
// }
|
402
|
//
|
403
|
// taxonName = parseHandler.parse();
|
404
|
// }
|
405
|
//
|
406
|
// updatePage();
|
407
|
// }
|
408
|
}
|