-// $Id$
/**
* Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy
+* European Distributed Institute of Taxonomy
* http://www.e-taxonomy.eu
-*
+*
* The contents of this file are subject to the Mozilla Public License Version 1.1
* See LICENSE.TXT at the top of this package for the full license terms.
*/
package eu.etaxonomy.taxeditor.featuretree;
+import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
+import java.util.stream.Collectors;
-import org.eclipse.jface.viewers.CheckboxTableViewer;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
-import eu.etaxonomy.cdm.model.description.Feature;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
-import eu.etaxonomy.taxeditor.preference.menu.DefinedTermBaseContentProvider;
-import eu.etaxonomy.taxeditor.preference.menu.DefinedTermBaseLabelProvider;
+import eu.etaxonomy.cdm.api.service.ITermService;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.persistence.dto.TermDto;
+import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
+import eu.etaxonomy.taxeditor.editor.definedterm.DefinedTermSorter;
+import eu.etaxonomy.taxeditor.editor.definedterm.TermDtoContentProvider;
+import eu.etaxonomy.taxeditor.editor.definedterm.TermDtoLabelProvider;
+import eu.etaxonomy.taxeditor.preference.wizard.CheckBoxTreeComposite;
import eu.etaxonomy.taxeditor.store.CdmStore;
/**
- * <p>AvailableFeaturesWizardPage class.</p>
- *
* @author n.hoffmann
* @created Aug 5, 2010
* @version 1.0
*/
public class AvailableFeaturesWizardPage extends WizardPage {
- private CheckboxTableViewer viewer;
- private FeatureTree featureTree;
+ private CheckBoxTreeComposite treeComposite;
+ private List<TermVocabularyDto> vocabularies;
- /**
- * <p>Constructor for AvailableFeaturesWizardPage.</p>
- *
- * @param featureTree a {@link eu.etaxonomy.cdm.model.description.FeatureTree} object.
- */
- protected AvailableFeaturesWizardPage(FeatureTree featureTree) {
- super("AvailableFeaturesWizardPage");
- this.featureTree = featureTree;
- setTitle("Available Features");
- setDescription("Please select features you want to add to the tree. Features already in the tree do not show.");
+ protected AvailableFeaturesWizardPage(List<TermVocabularyDto> vocabularies, boolean singleSelection) {
+ super("Available Terms Wizard Page");
+ this.vocabularies = vocabularies;
+ setTitle("Available Terms");
+ if(singleSelection){
+ setDescription("Please select one single term");
+ }
+ else{
+ setDescription("Please select terms.");
+ }
}
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
- */
+
/** {@inheritDoc} */
@Override
public void createControl(Composite parent) {
- Composite composite = new Composite(parent, SWT.NULL);
- composite.setLayout(new GridLayout());
-
- viewer = CheckboxTableViewer.newCheckList(composite, SWT.NULL);
-
- viewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-
- viewer.setContentProvider(new DefinedTermBaseContentProvider());
- viewer.setLabelProvider(new DefinedTermBaseLabelProvider());
-
- viewer.setInput(getAvailableFeatures());
-
- setControl(composite);
+ treeComposite = new CheckBoxTreeComposite(parent, new TermDtoContentProvider(), new TermDtoLabelProvider(), SWT.NONE);
+ treeComposite.getViewer().setComparator(new DefinedTermSorter());
+ treeComposite.getViewer().setInput(vocabularies);
+ treeComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
+ treeComposite.getViewer().addSelectionChangedListener(e->getWizard().getContainer().updateButtons());
+
+ setControl(treeComposite);
}
- /**
- * <p>getSelectedFeatures</p>
- *
- * @return a {@link java.util.Set} object.
- */
- public Set<Feature> getSelectedFeatures() {
-
- Object[] checkedElements = viewer.getCheckedElements();
-
- Set<Feature> features = new HashSet<Feature>(checkedElements.length);
-
+ public Set<DefinedTermBase> getSelectedFeatures() {
+
+ List<Object> checkedElements = Arrays.asList(treeComposite.getViewer().getCheckedElements());
+ checkedElements = checkedElements.stream().filter(element->element instanceof TermDto).collect(Collectors.toList());
+
+ Set<DefinedTermBase> terms = new HashSet<>();
+
for(Object element : checkedElements){
- features.add((Feature) element);
+ if(element instanceof TermDto){
+ DefinedTermBase term = CdmStore.getService(ITermService.class).load(((TermDto) element).getUuid());
+ terms.add(term);
+ }
}
-
- return features;
- }
-
- /**
- * We want to show only features that are not already in the featureTree
- *
- * @return
- */
- private List<Feature> getAvailableFeatures(){
-
- List<Feature> preferredFeatures = CdmStore.getTermManager().getPreferredTerms(Feature.class);
-
- for(Feature featureAlreadyInTree : featureTree.getDistinctFeatures()){
- preferredFeatures.remove(featureAlreadyInTree);
- }
-
- return preferredFeatures;
-
+ return terms;
}
+
}