Project

General

Profile

Download (6.17 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 (experimental)");
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
		classificationSelectionCombo.select(classifications.indexOf(selectedClassification));
119
		
120
		// TODO remember last selection
121
		classificationSelectionCombo.addSelectionListener(this);
122
		
123
		
124
		
125
		return classificationSelection;
126
	}
127

    
128
	/** {@inheritDoc} */
129
	@Override
130
	protected String getTitle(TaxonNode taxonNode) {
131
		if(taxonNode != null && taxonNode.getTaxon() != null){
132
			return taxonNode.getTaxon().getTitleCache();
133
		}
134
		
135
		return "";
136
	}
137
	
138
	/* (non-Javadoc)
139
	 * @see eu.etaxonomy.taxeditor.dialogs.AbstractFilteredCdmResourceSelectionDialog#getPersistentObject(java.util.UUID)
140
	 */
141
	/** {@inheritDoc} */
142
	@Override
143
	protected TaxonNode getPersistentObject(UUID uuid) {
144
		return CdmStore.getService(IClassificationService.class).getTaxonNodeByUuid(uuid);
145
	}
146

    
147
	/* (non-Javadoc)
148
	 * @see eu.etaxonomy.taxeditor.dialogs.AbstractFilteredCdmResourceSelectionDialog#initModel()
149
	 */
150
	/** {@inheritDoc} */
151
	@Override
152
	protected void initModel() {
153
		// default to first tree 
154
		// TODO this will be problematic and can only be seen as workaround 
155
		
156
		
157
		if(classifications == null){
158
			classifications = CdmStore.getService(IClassificationService.class).list(null, null, null, null, null);
159
			selectedClassification = classifications.iterator().next();
160
		}
161
		
162
		model = CdmStore.getService(IClassificationService.class).getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(selectedClassification);
163
	}
164

    
165
	/** {@inheritDoc} */
166
	@Override
167
	protected AbstractNewEntityWizard getNewEntityWizard(String parameter) {
168
		return null;
169
	}
170

    
171
	/** {@inheritDoc} */
172
	@Override
173
	protected String getNewWizardLinkText() {
174
		return null;
175
	}
176
	
177
	/** {@inheritDoc} */
178
	public void widgetSelected(SelectionEvent e) {
179
		selectedClassification = classifications.get(classificationSelectionCombo.getSelectionIndex());
180
		
181
//		refresh();
182
		setPattern(null);
183
	}
184

    
185
	/** {@inheritDoc} */
186
	public void widgetDefaultSelected(SelectionEvent e) {}
187

    
188

    
189
}
(23-23/25)