cleanup
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / featuretree / AvailableFeaturesWizardPage.java
index d159e3b1154951c18010af3672e1ddd4afe2a2d2..84dc238a28e2e71257ce1042510c580507bd78e7 100644 (file)
 /**
 * Copyright (C) 2007 EDIT
 /**
 * Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
+* European Distributed Institute of Taxonomy
 * http://www.e-taxonomy.eu
 * 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;
 
 * 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.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.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 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;
 
 /**
 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 {
 
  * @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) {
        /** {@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){
                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;
        }
        }
+
 }
 }