Project

General

Profile

Download (4.54 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.io.e4.out.owl;
10

    
11
import java.util.ArrayList;
12
import java.util.HashSet;
13
import java.util.List;
14
import java.util.Set;
15
import java.util.UUID;
16

    
17
import org.eclipse.jface.wizard.WizardPage;
18
import org.eclipse.swt.SWT;
19
import org.eclipse.swt.events.SelectionAdapter;
20
import org.eclipse.swt.events.SelectionEvent;
21
import org.eclipse.swt.widgets.Composite;
22
import org.eclipse.swt.widgets.FileDialog;
23

    
24
import eu.etaxonomy.cdm.api.service.IFeatureTreeService;
25
import eu.etaxonomy.cdm.api.service.IVocabularyService;
26
import eu.etaxonomy.cdm.common.CdmUtils;
27
import eu.etaxonomy.cdm.model.term.FeatureTree;
28
import eu.etaxonomy.cdm.model.term.TermType;
29
import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
30
import eu.etaxonomy.taxeditor.store.CdmStore;
31

    
32
/**
33
 * @author pplitzner
34
 * @since May 23, 2019
35
 *
36
 */
37
public class OwlTermExportWizardPage extends WizardPage {
38

    
39
    private OwlTermExportComposite composite;
40

    
41
    protected OwlTermExportWizardPage(String pageName) {
42
        super(pageName);
43
        setTitle("OWL Term Export");
44
        setDescription("Select the objects to export");
45
    }
46

    
47
    @Override
48
    public void createControl(Composite parent) {
49
        composite = new OwlTermExportComposite(parent, SWT.NONE);
50

    
51
        Set<TermType> termTypes = new HashSet<>();
52
        termTypes.add(TermType.Feature);
53
        termTypes.add(TermType.Structure);
54
        termTypes.add(TermType.Property);
55
        termTypes.add(TermType.State);
56
        termTypes.add(TermType.Character);
57
        List<TermVocabularyDto> areaVocabularies = CdmStore.getService(IVocabularyService.class).findVocabularyDtoByTermTypes(termTypes);
58
        composite.getSelectVocabularyComposite().getViewer().setInput(areaVocabularies);
59
        composite.getSelectVocabularyComposite().getViewer().addCheckStateListener(e->updateButtons());
60

    
61
        List<FeatureTree> trees = CdmStore.getService(IFeatureTreeService.class).list(FeatureTree.class, null, null, null, null);
62
        composite.getSelectFeatureTreeComposite().getViewer().setInput(trees);
63
        composite.getSelectFeatureTreeComposite().getViewer().addCheckStateListener(e->updateButtons());
64

    
65

    
66
        composite.getBtnSelectDirectory().addSelectionListener(new SelectionAdapter() {
67
            @Override
68
            public void widgetSelected(SelectionEvent e) {
69
                FileDialog dialog = new FileDialog(parent.getShell());
70
                String[] filterNames = {
71
                        "Web Ontology Language (*.owl)",
72
                        "Extensible Markup Language (*.xml)",
73
                        "All files (*.*)"
74
                        };
75
                String[] filterExtensions = { "*.owl", "*.xml", "*.*"};
76

    
77
                dialog.setOverwrite(true);
78
                dialog.setFilterNames(filterNames);
79
                dialog.setFilterExtensions(filterExtensions);
80
                String fileString = dialog.open();
81
                if(fileString!=null){
82
                    composite.getTxtExportDirectory().setText(fileString);
83
                    updateButtons();
84
                }
85
            }
86
        });
87
        setControl(composite);
88
    }
89

    
90
    private void updateButtons(){
91
        this.getWizard().getContainer().updateButtons();
92
    }
93

    
94
    String getExportDirectory(){
95
        return composite.getExportDirectory();
96
    }
97

    
98
    List<FeatureTree> getSelectedTrees(){
99
        List<FeatureTree> selectedTrees = new ArrayList<>();
100
        Object[] checkedElements = composite.getSelectFeatureTreeComposite().getViewer().getCheckedElements();
101
        for (Object object : checkedElements) {
102
            if(object instanceof FeatureTree) {
103
                selectedTrees.add((FeatureTree) object);
104
            }
105
        }
106
        return selectedTrees;
107
    }
108

    
109
    List<UUID> getSelectedVocabularies(){
110
        List<UUID> vocs = new ArrayList<>();
111
        Object[] checkedElements = composite.getSelectVocabularyComposite().getViewer().getCheckedElements();
112
        for (Object object : checkedElements) {
113
            if(object instanceof TermVocabularyDto){
114
                vocs.add(((TermVocabularyDto) object).getUuid());
115
            }
116
        }
117
        return vocs;
118
    }
119

    
120
    @Override
121
    public boolean isPageComplete() {
122
        return !getSelectedVocabularies().isEmpty()
123
                || !getSelectedTrees().isEmpty()
124
                || CdmUtils.isNotBlank(getExportDirectory());
125
    }
126

    
127
}
(4-4/4)