X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/blobdiff_plain/1c69b0d01165dcae51f1f45667c202e0d15b960d..2a2b894f22363375c5fe4130b522da3c98d1eae7:/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/AvailableFeaturesWizardPage.java?ds=sidebyside diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/AvailableFeaturesWizardPage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/AvailableFeaturesWizardPage.java index d159e3b11..84dc238a2 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/AvailableFeaturesWizardPage.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/AvailableFeaturesWizardPage.java @@ -1,108 +1,83 @@ /** * 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; /** - *

AvailableFeaturesWizardPage class.

- * * @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 vocabularies; - /** - *

Constructor for AvailableFeaturesWizardPage.

- * - * @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 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); } - /** - *

getSelectedFeatures

- * - * @return a {@link java.util.Set} object. - */ - public Set getSelectedFeatures() { - - Object[] checkedElements = viewer.getCheckedElements(); - - Set features = new HashSet(checkedElements.length); - + public Set getSelectedFeatures() { + + List checkedElements = Arrays.asList(treeComposite.getViewer().getCheckedElements()); + checkedElements = checkedElements.stream().filter(element->element instanceof TermDto).collect(Collectors.toList()); + + Set 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 getAvailableFeatures(){ - - List preferredFeatures = CdmStore.getTermManager().getPreferredTerms(Feature.class); - - for(Feature featureAlreadyInTree : featureTree.getDistinctFeatures()){ - preferredFeatures.remove(featureAlreadyInTree); - } - - return preferredFeatures; - + return terms; } + }