Project

General

Profile

Download (6.27 KB) Statistics
| Branch: | Tag: | Revision:
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, 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
	private final Classification defaultClassification;
64
	
65

    
66
	/**
67
	 * <p>Constructor for FilteredTaxonNodeSelectionDialog.</p>
68
	 *
69
	 * @param shell a {@link org.eclipse.swt.widgets.Shell} object.
70
	 * @param title a {@link java.lang.String} object.
71
	 * @param conversation a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
72
	 * @param excludeTaxa a {@link java.util.List} object.
73
	 * @param multi a boolean.
74
	 * @param node a {@link eu.etaxonomy.cdm.model.taxon.TaxonNode} object.
75
	 */
76
	protected TaxonNodeSelectionDialog(Shell shell, ConversationHolder conversation, String title, List<UUID> excludeTaxa, boolean multi, TaxonNode node, Classification classification) {
77
		super(shell, conversation, title, multi, TaxonNodeSelectionDialog.class.getCanonicalName(), node);
78
		
79
		ILabelProvider labelProvider = new FilteredCdmResourceLabelProvider();
80

    
81
		setListLabelProvider(labelProvider);
82
		setDetailsLabelProvider(labelProvider);
83
		
84
		if(classification != null){
85
			selectedClassification = classification;
86
		}
87
		defaultClassification = classification;
88
	}
89

    
90

    
91
	/* (non-Javadoc)
92
	 * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#createExtendedContentArea(org.eclipse.swt.widgets.Composite)
93
	 */
94
	/** {@inheritDoc} */
95
	@Override
96
	protected Control createExtendedContentArea(Composite parent) {
97
		return createClassificationSelectionCombo(parent);
98
	}
99
	
100
	/*
101
	 * currently disabled tree selection composite
102
	 */
103
	private Control createClassificationSelectionCombo(Composite parent){
104
//		classifications = CdmStore.getTaxonTreeService().list(null, null, null, null, null);
105
		
106
		Composite classificationSelection = new Composite(parent, SWT.NULL);
107
		classificationSelection.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
108
		
109
		GridLayout layout = new GridLayout();
110
		classificationSelection.setLayout(layout);
111
		
112
		Label label = new Label(classificationSelection, SWT.NULL);
113
		// TODO not working is not really true but leave it here to remind everyone that this is under construction
114
		label.setText("Select Classification (experimental)");
115
		classificationSelectionCombo = new Combo(classificationSelection, SWT.BORDER | SWT.READ_ONLY);
116
		classificationSelectionCombo.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, true));
117
		
118
		for(Classification tree : classifications){
119
			classificationSelectionCombo.add(tree.getName().getText(), classifications.indexOf(tree));
120
		}
121
		
122
		classificationSelectionCombo.select(classifications.indexOf(selectedClassification));
123
		
124
		// TODO remember last selection
125
		classificationSelectionCombo.addSelectionListener(this);
126
		
127
		
128
		
129
		return classificationSelection;
130
	}
131

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

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

    
169
	/** {@inheritDoc} */
170
	@Override
171
	protected AbstractNewEntityWizard getNewEntityWizard(String parameter) {
172
		return null;
173
	}
174

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

    
189
	/** {@inheritDoc} */
190
	public void widgetDefaultSelected(SelectionEvent e) {}
191

    
192

    
193
}
(18-18/20)