Project

General

Profile

Download (3.82 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2019 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
package eu.etaxonomy.taxeditor.ui.section.feature;
10

    
11
import java.util.ArrayList;
12
import java.util.Collections;
13
import java.util.List;
14
import java.util.Set;
15

    
16
import org.eclipse.jface.util.PropertyChangeEvent;
17
import org.eclipse.swt.SWT;
18
import org.eclipse.swt.widgets.Composite;
19

    
20
import eu.etaxonomy.cdm.model.description.Feature;
21
import eu.etaxonomy.cdm.model.description.FeatureState;
22
import eu.etaxonomy.cdm.model.description.State;
23
import eu.etaxonomy.cdm.model.term.TermNode;
24
import eu.etaxonomy.cdm.model.term.TermVocabulary;
25
import eu.etaxonomy.taxeditor.ui.AbstractEntityCollectionElementWizardPage;
26
import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
27
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
28

    
29
/**
30
 * @author pplitzner
31
 * @since Aug 16, 2019
32
 *
33
 */
34
public class FeatureStateWizardPage extends AbstractEntityCollectionElementWizardPage {
35

    
36
    private TermComboElement<Feature> comboFeature;
37
    private TermComboElement<State> comboState;
38
    private String comboLabel;
39
    private TermNode<? extends Feature> termNode;
40

    
41
    protected FeatureStateWizardPage(String pageName, String comboLabel, TermNode<? extends Feature> termNode, CdmFormFactory formFactory) {
42
        super(pageName, formFactory);
43
        this.comboLabel = comboLabel;
44
        this.termNode = termNode;
45
        setTitle("Create Feature State");
46
        setDescription("Select Feature and State");
47
    }
48

    
49
    @Override
50
    public void createControl(Composite parent) {
51
        super.createControl(parent);
52

    
53
        comboFeature = formFactory.createDefinedTermComboElement(Collections.EMPTY_LIST, rootElement, "Parent Feature", null, SWT.NONE);
54

    
55
        comboState = formFactory.createDefinedTermComboElement(Collections.EMPTY_LIST, rootElement, comboLabel, null, SWT.NONE);
56
        comboState.setEnabled(false);
57

    
58
        formFactory.addPropertyChangeListener(this);
59

    
60
        updateFeatureCombo();
61
    }
62

    
63
    FeatureState getFeatureState(){
64
        return FeatureState.NewInstance(comboFeature.getSelection(), comboState.getSelection());
65
    }
66

    
67
    private void updateFeatureCombo(){
68
        List<Feature> features = new ArrayList<>();
69
        TermNode<? extends Feature> parent = termNode.getParent();
70
        while(parent!=null){
71
            Feature parentTerm = parent.getTerm();
72
            if(parentTerm!=null
73
                    && parentTerm.isSupportsCategoricalData()
74
                    && !parentTerm.getSupportedCategoricalEnumerations().isEmpty()){
75
                features.add(parentTerm);
76
            }
77
            parent = parent.getParent();
78
        }
79
        comboFeature.setTerms(features);
80
        if(features.size()==1){
81
            Feature feature = features.get(0);
82
            comboFeature.setSelection(feature);
83
            updateStateCombo(feature);
84
        }
85
    }
86

    
87
    private void updateStateCombo(Feature feature){
88
        comboState.setEnabled(true);
89
        List<State> stateTerms = new ArrayList<>();
90
        Set<TermVocabulary<State>> stateVocabularies = feature.getSupportedCategoricalEnumerations();
91
        for (TermVocabulary<State> termVocabulary : stateVocabularies) {
92
            stateTerms.addAll(termVocabulary.getTerms());
93
        }
94
        comboState.setTerms(stateTerms);
95
    }
96

    
97
    @Override
98
    public boolean isPageComplete() {
99
        return comboFeature.getSelection()!=null && comboState.getSelection()!=null;
100
    }
101

    
102
    @Override
103
    public void propertyChange(PropertyChangeEvent event) {
104
        if(event.getSource()==comboFeature){
105
            Feature feature = comboFeature.getSelection();
106
            updateStateCombo(feature);
107
        }
108
        getWizard().getContainer().updateButtons();
109
    }
110

    
111
}
(11-11/17)