Merge branch 'hotfix/5.18.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.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.wizard.WizardPage;
19 import org.eclipse.swt.SWT;
20 import org.eclipse.swt.layout.GridData;
21 import org.eclipse.swt.widgets.Composite;
22
23 import eu.etaxonomy.cdm.api.service.ITermService;
24 import eu.etaxonomy.cdm.model.term.DefinedTermBase;
25 import eu.etaxonomy.cdm.persistence.dto.TermDto;
26 import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
27 import eu.etaxonomy.taxeditor.editor.definedterm.DefinedTermSorter;
28 import eu.etaxonomy.taxeditor.editor.definedterm.TermDtoContentProvider;
29 import eu.etaxonomy.taxeditor.editor.definedterm.TermDtoLabelProvider;
30 import eu.etaxonomy.taxeditor.preference.wizard.CheckBoxTreeComposite;
31 import eu.etaxonomy.taxeditor.store.CdmStore;
32
33 /**
34 * @author n.hoffmann
35 * @created Aug 5, 2010
36 * @version 1.0
37 */
38 public class AvailableFeaturesWizardPage extends WizardPage {
39
40 private CheckBoxTreeComposite treeComposite;
41 private List<TermVocabularyDto> vocabularies;
42
43 protected AvailableFeaturesWizardPage(List<TermVocabularyDto> vocabularies, boolean singleSelection) {
44 super("Available Terms Wizard Page");
45 this.vocabularies = vocabularies;
46 setTitle("Available Terms");
47 if(singleSelection){
48 setDescription("Please select one single term");
49 }
50 else{
51 setDescription("Please select terms.");
52 }
53 }
54
55 /** {@inheritDoc} */
56 @Override
57 public void createControl(Composite parent) {
58 treeComposite = new CheckBoxTreeComposite(parent, new TermDtoContentProvider(), new TermDtoLabelProvider(), SWT.NONE);
59 treeComposite.getViewer().setComparator(new DefinedTermSorter());
60 treeComposite.getViewer().setInput(vocabularies);
61 treeComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
62 treeComposite.getViewer().addSelectionChangedListener(e->getWizard().getContainer().updateButtons());
63
64 setControl(treeComposite);
65 }
66
67 public Set<DefinedTermBase> getSelectedFeatures() {
68
69 List<Object> checkedElements = Arrays.asList(treeComposite.getViewer().getCheckedElements());
70 checkedElements = checkedElements.stream().filter(element->element instanceof TermDto).collect(Collectors.toList());
71
72 Set<DefinedTermBase> terms = new HashSet<>();
73
74 for(Object element : checkedElements){
75 if(element instanceof TermDto){
76 DefinedTermBase term = CdmStore.getService(ITermService.class).load(((TermDto) element).getUuid());
77 terms.add(term);
78 }
79 }
80 return terms;
81 }
82
83 }