ref #8146 Adapt AvailableFeaturesWizard
[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.Arrays;
13 import java.util.HashSet;
14 import java.util.List;
15 import java.util.Set;
16 import java.util.stream.Collectors;
17
18 import org.eclipse.jface.layout.GridLayoutFactory;
19 import org.eclipse.jface.wizard.WizardPage;
20 import org.eclipse.swt.SWT;
21 import org.eclipse.swt.widgets.Composite;
22
23 import eu.etaxonomy.cdm.api.service.ITermService;
24 import eu.etaxonomy.cdm.api.service.IVocabularyService;
25 import eu.etaxonomy.cdm.model.common.DefinedTermBase;
26 import eu.etaxonomy.cdm.model.common.TermType;
27 import eu.etaxonomy.cdm.model.description.Feature;
28 import eu.etaxonomy.cdm.persistence.dto.TermDto;
29 import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
30 import eu.etaxonomy.taxeditor.editor.definedterm.DefinedTermSorter;
31 import eu.etaxonomy.taxeditor.editor.definedterm.TermDtoContentProvider;
32 import eu.etaxonomy.taxeditor.editor.definedterm.TermDtoLabelProvider;
33 import eu.etaxonomy.taxeditor.preference.wizard.CheckBoxTreeComposite;
34 import eu.etaxonomy.taxeditor.store.CdmStore;
35
36 /**
37 * @author n.hoffmann
38 * @created Aug 5, 2010
39 * @version 1.0
40 */
41 public class AvailableFeaturesWizardPage extends WizardPage {
42
43 private CheckBoxTreeComposite treeComposite;
44 private TermType termType;
45
46 protected AvailableFeaturesWizardPage(TermType termType) {
47 super("AvailableFeaturesWizardPage");
48 this.termType = termType;
49 setTitle("Available Features");
50 setDescription("Please select features you want to add to the tree.");
51 }
52
53 /** {@inheritDoc} */
54 @Override
55 public void createControl(Composite parent) {
56 treeComposite = new CheckBoxTreeComposite(parent, new TermDtoContentProvider(), new TermDtoLabelProvider(), SWT.NONE);
57 List<TermVocabularyDto> vocabularyDtos = CdmStore.getService(IVocabularyService.class).findVocabularyDtoByTermType(termType);
58 treeComposite.getViewer().setComparator(new DefinedTermSorter());
59 treeComposite.getViewer().setInput(vocabularyDtos);
60 GridLayoutFactory.fillDefaults().applyTo(treeComposite);
61
62 setControl(treeComposite);
63 }
64
65 public Set<Feature> getSelectedFeatures() {
66
67 List<Object> checkedElements = Arrays.asList(treeComposite.getViewer().getCheckedElements());
68 checkedElements = checkedElements.stream().filter(element->element instanceof TermDto).collect(Collectors.toList());
69
70 Set<Feature> features = new HashSet<Feature>();
71
72 for(Object element : checkedElements){
73 if(element instanceof TermDto){
74 DefinedTermBase feature = CdmStore.getService(ITermService.class).load(((TermDto) element).getUuid());
75 features.add((Feature) feature);
76 }
77 }
78 return features;
79 }
80
81 }