Project

General

Profile

Download (3.04 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2007 EDIT
3
* European Distributed Institute of Taxonomy 
4
* http://www.e-taxonomy.eu
5
* 
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9

    
10
package eu.etaxonomy.taxeditor.featuretree;
11

    
12
import java.util.HashSet;
13
import java.util.List;
14
import java.util.Set;
15

    
16
import org.eclipse.jface.viewers.CheckboxTableViewer;
17
import org.eclipse.jface.wizard.WizardPage;
18
import org.eclipse.swt.SWT;
19
import org.eclipse.swt.layout.GridData;
20
import org.eclipse.swt.layout.GridLayout;
21
import org.eclipse.swt.widgets.Composite;
22

    
23
import eu.etaxonomy.cdm.model.description.Feature;
24
import eu.etaxonomy.cdm.model.description.FeatureTree;
25
import eu.etaxonomy.taxeditor.preference.menu.DefinedTermBaseContentProvider;
26
import eu.etaxonomy.taxeditor.preference.menu.DefinedTermBaseLabelProvider;
27
import eu.etaxonomy.taxeditor.store.CdmStore;
28

    
29
/**
30
 * <p>AvailableFeaturesWizardPage class.</p>
31
 *
32
 * @author n.hoffmann
33
 * @created Aug 5, 2010
34
 * @version 1.0
35
 */
36
public class AvailableFeaturesWizardPage extends WizardPage {
37

    
38
	private CheckboxTableViewer viewer;
39
	private FeatureTree featureTree;
40

    
41
	/**
42
	 * <p>Constructor for AvailableFeaturesWizardPage.</p>
43
	 *
44
	 * @param featureTree a {@link eu.etaxonomy.cdm.model.description.FeatureTree} object.
45
	 */
46
	protected AvailableFeaturesWizardPage(FeatureTree featureTree) {
47
		super("AvailableFeaturesWizardPage");		
48
		this.featureTree = featureTree;
49
		setTitle("Available Features");
50
		setDescription("Please select features you want to add to the tree. Features already in the tree do not show.");
51
	}
52
	
53
	/* (non-Javadoc)
54
	 * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
55
	 */
56
	/** {@inheritDoc} */
57
	@Override
58
	public void createControl(Composite parent) {
59
		Composite composite = new Composite(parent, SWT.NULL);
60
		composite.setLayout(new GridLayout());
61
		
62
		viewer = CheckboxTableViewer.newCheckList(composite, SWT.NULL);
63
		
64
		viewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
65
		
66
		viewer.setContentProvider(new DefinedTermBaseContentProvider());		
67
		viewer.setLabelProvider(new DefinedTermBaseLabelProvider());
68
		
69
		viewer.setInput(getAvailableFeatures());
70
		
71
		setControl(composite);
72
	}
73

    
74
	/**
75
	 * <p>getSelectedFeatures</p>
76
	 *
77
	 * @return a {@link java.util.Set} object.
78
	 */
79
	public Set<Feature> getSelectedFeatures() {
80
		
81
		Object[] checkedElements = viewer.getCheckedElements();
82
		
83
		Set<Feature> features = new HashSet<Feature>(checkedElements.length);
84
		
85
		for(Object element : checkedElements){
86
			features.add((Feature) element);
87
		}
88
		
89
		return features;
90
	}
91
	
92
	/**
93
	 * We want to show only features that are not already in the featureTree
94
	 * 
95
	 * @return
96
	 */
97
	private List<Feature> getAvailableFeatures(){
98
		
99
		List<Feature> preferredFeatures = CdmStore.getTermManager().getPreferredTerms(Feature.class);
100
		
101
		for(Feature featureAlreadyInTree : featureTree.getDistinctFeatures()){
102
			preferredFeatures.remove(featureAlreadyInTree);
103
		}
104
		
105
		return preferredFeatures;
106
		
107
	}
108
}
(2-2/10)