Project

General

Profile

Download (6.14 KB) Statistics
| Branch: | Tag: | Revision:
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
}
(26-26/29)