X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/blobdiff_plain/aca6923265b802bbbea40b95b45927508c616e2b..2a2b894f22363375c5fe4130b522da3c98d1eae7:/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/AvailableFeaturesWizardPage.java 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 a19358fef..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 @@ -9,26 +9,25 @@ 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.CheckStateChangedEvent; -import org.eclipse.jface.viewers.CheckboxTreeViewer; -import org.eclipse.jface.viewers.ICheckStateListener; 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.api.service.IVocabularyService; -import eu.etaxonomy.cdm.model.common.DefinedTermBase; -import eu.etaxonomy.cdm.model.common.TermType; -import eu.etaxonomy.cdm.model.common.TermVocabulary; -import eu.etaxonomy.cdm.model.description.Feature; -import eu.etaxonomy.taxeditor.editor.definedterm.TermContentProvider; -import eu.etaxonomy.taxeditor.editor.definedterm.TermLabelProvider; +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; /** @@ -38,52 +37,47 @@ import eu.etaxonomy.taxeditor.store.CdmStore; */ public class AvailableFeaturesWizardPage extends WizardPage { - private CheckboxTreeViewer viewer; + private CheckBoxTreeComposite treeComposite; + private List vocabularies; - protected AvailableFeaturesWizardPage() { - super("AvailableFeaturesWizardPage"); - setTitle("Available Features"); - setDescription("Please select features you want to add to the tree."); + 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."); + } } /** {@inheritDoc} */ @Override public void createControl(Composite parent) { - Composite composite = new Composite(parent, SWT.NULL); - composite.setLayout(new GridLayout()); - - viewer = new CheckboxTreeViewer(composite, SWT.NULL); - - viewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); - - viewer.setContentProvider(new TermContentProvider()); - viewer.setLabelProvider(new TermLabelProvider()); - // When user checks a checkbox in the tree, check all its children - viewer.addCheckStateListener(new ICheckStateListener() { - @Override - public void checkStateChanged(CheckStateChangedEvent event) { - viewer.setSubtreeChecked(event.getElement(), event.getChecked()); - } - }); - - List> vocs = CdmStore.getService(IVocabularyService.class).findByTermType(TermType.Feature, null); - viewer.setInput(vocs); + 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(composite); + setControl(treeComposite); } - public Set getSelectedFeatures() { + public Set getSelectedFeatures() { - Object[] checkedElements = viewer.getCheckedElements(); + List checkedElements = Arrays.asList(treeComposite.getViewer().getCheckedElements()); + checkedElements = checkedElements.stream().filter(element->element instanceof TermDto).collect(Collectors.toList()); - Set features = new HashSet(checkedElements.length); + Set terms = new HashSet<>(); for(Object element : checkedElements){ - if(element instanceof Feature){ - features.add((Feature) element); + if(element instanceof TermDto){ + DefinedTermBase term = CdmStore.getService(ITermService.class).load(((TermDto) element).getUuid()); + terms.add(term); } } - return features; + return terms; } }