automated build configuration is on its way
[taxeditor.git] / 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) {
47 TaxonNodeSelectionDialog dialog = new TaxonNodeSelectionDialog(shell,
48 conversation,
49 title,
50 excludeTaxa,
51 false,
52 node);
53 return getSelectionFromDialog(dialog);
54 }
55
56 private Combo classificationSelectionCombo;
57
58 private List<Classification> classifications;
59
60 private Classification selectedClassification;
61
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) {
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 }
82
83
84 /* (non-Javadoc)
85 * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#createExtendedContentArea(org.eclipse.swt.widgets.Composite)
86 */
87 /** {@inheritDoc} */
88 @Override
89 protected Control createExtendedContentArea(Composite parent) {
90 return createTreeSelectionCombo(parent);
91 }
92
93 /*
94 * currently disabled tree selection composite
95 */
96 private Control createTreeSelectionCombo(Composite parent){
97 // classifications = CdmStore.getTaxonTreeService().list(null, null, null, null, null);
98
99 Composite classificationSelection = new Composite(parent, SWT.NULL);
100 classificationSelection.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
101
102 GridLayout layout = new GridLayout();
103 classificationSelection.setLayout(layout);
104
105 Label label = new Label(classificationSelection, SWT.NULL);
106 // TODO not working is not really true but leave it there to remind everyone that this is under construction
107 label.setText("Select Classification (experimental)");
108 classificationSelectionCombo = new Combo(classificationSelection, SWT.BORDER | SWT.READ_ONLY);
109 classificationSelectionCombo.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, true));
110
111 for(Classification tree : classifications){
112 classificationSelectionCombo.add(tree.getName().getText(), classifications.indexOf(tree));
113 }
114
115 classificationSelectionCombo.select(classifications.indexOf(selectedClassification));
116
117 // TODO remember last selection
118
119 classificationSelectionCombo.addSelectionListener(this);
120
121 return classificationSelection;
122 }
123
124 /** {@inheritDoc} */
125 @Override
126 protected String getTitle(TaxonNode taxonNode) {
127 return taxonNode.getTaxon().getTitleCache();
128 }
129
130 /* (non-Javadoc)
131 * @see eu.etaxonomy.taxeditor.dialogs.AbstractFilteredCdmResourceSelectionDialog#getPersistentObject(java.util.UUID)
132 */
133 /** {@inheritDoc} */
134 @Override
135 protected TaxonNode getPersistentObject(UUID uuid) {
136 return CdmStore.getService(IClassificationService.class).getTaxonNodeByUuid(uuid);
137 }
138
139 /* (non-Javadoc)
140 * @see eu.etaxonomy.taxeditor.dialogs.AbstractFilteredCdmResourceSelectionDialog#initModel()
141 */
142 /** {@inheritDoc} */
143 @Override
144 protected void initModel() {
145 // default to first tree
146 // TODO this will be problematic and can only be seen as workaround
147
148
149 if(classifications == null){
150 classifications = CdmStore.getService(IClassificationService.class).list(null, null, null, null, null);
151 selectedClassification = classifications.iterator().next();
152 }
153
154 model = CdmStore.getService(IClassificationService.class).getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(selectedClassification);
155 }
156
157 /** {@inheritDoc} */
158 @Override
159 protected AbstractNewEntityWizard getNewEntityWizard(String parameter) {
160 return null;
161 }
162
163 /** {@inheritDoc} */
164 @Override
165 protected String getNewWizardLinkText() {
166 return null;
167 }
168
169 /** {@inheritDoc} */
170 public void widgetSelected(SelectionEvent e) {
171 selectedClassification = classifications.get(classificationSelectionCombo.getSelectionIndex());
172 refresh();
173 }
174
175 /** {@inheritDoc} */
176 public void widgetDefaultSelected(SelectionEvent e) {}
177
178
179 }