Merge branch 'hotfix/4.8.2'
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / featuretree / AvailableFeaturesWizardPage.java
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 }