Project

General

Profile

Download (8.03 KB) Statistics
| Branch: | Tag: | Revision:
1
// $Id$
2
/**
3
* Copyright (C) 2017 EDIT
4
* European Distributed Institute of Taxonomy
5
* http://www.e-taxonomy.eu
6
*
7
* The contents of this file are subject to the Mozilla Public License Version 1.1
8
* See LICENSE.TXT at the top of this package for the full license terms.
9
*/
10
package eu.etaxonomy.taxeditor.editor.workingSet;
11

    
12
import java.util.Collections;
13
import java.util.UUID;
14

    
15
import javax.annotation.PostConstruct;
16
import javax.annotation.PreDestroy;
17
import javax.inject.Named;
18

    
19
import org.eclipse.e4.ui.di.Focus;
20
import org.eclipse.e4.ui.services.IServiceConstants;
21
import org.eclipse.jface.viewers.ISelection;
22
import org.eclipse.jface.viewers.TreeSelection;
23
import org.eclipse.jface.viewers.TreeViewer;
24
import org.eclipse.swt.SWT;
25
import org.eclipse.swt.custom.SashForm;
26
import org.eclipse.swt.dnd.DND;
27
import org.eclipse.swt.dnd.Transfer;
28
import org.eclipse.swt.events.SelectionAdapter;
29
import org.eclipse.swt.events.SelectionEvent;
30
import org.eclipse.swt.layout.GridData;
31
import org.eclipse.swt.layout.GridLayout;
32
import org.eclipse.swt.widgets.Button;
33
import org.eclipse.swt.widgets.Composite;
34
import org.eclipse.swt.widgets.Display;
35
import org.eclipse.swt.widgets.Label;
36
import org.eclipse.swt.widgets.Shell;
37
import org.eclipse.swt.widgets.Tree;
38
import org.eclipse.ui.forms.widgets.FormToolkit;
39

    
40
import eu.etaxonomy.cdm.api.service.IFeatureTreeService;
41
import eu.etaxonomy.cdm.model.description.Character;
42
import eu.etaxonomy.cdm.model.description.FeatureNode;
43
import eu.etaxonomy.cdm.model.description.FeatureTree;
44
import eu.etaxonomy.taxeditor.featuretree.FeatureNodeTransfer;
45
import eu.etaxonomy.taxeditor.featuretree.FeatureTreeContentProvider;
46
import eu.etaxonomy.taxeditor.featuretree.FeatureTreeLabelProvider;
47
import eu.etaxonomy.taxeditor.featuretree.e4.FeatureTreeEditor;
48
import eu.etaxonomy.taxeditor.model.MessagingUtils;
49
import eu.etaxonomy.taxeditor.store.CdmStore;
50

    
51
/**
52
 * @author pplitzner
53
 * @date 24.05.2017
54
 *
55
 */
56
public class CharacterEditor {
57

    
58

    
59
    private TreeViewer treeViewerCharacters;
60
    private TreeViewer treeViewerProperties;
61
    private TreeViewer treeViewerStructures;
62
    private FeatureTreeEditor editor;
63
    private final FormToolkit formToolkit = new FormToolkit(Display.getDefault());
64
    private Button btnAddCharacter;
65

    
66
    public CharacterEditor() {
67
    }
68

    
69
    /**
70
     * Create contents of the view part.
71
     */
72
    @PostConstruct
73
    public void createControls(Composite parent, @Named(IServiceConstants.ACTIVE_SHELL)Shell shell) {
74
        parent.setLayout(new GridLayout(1, false));
75

    
76
        SashForm sashForm = new SashForm(parent, SWT.NONE);
77
        sashForm.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
78
        formToolkit.adapt(sashForm);
79
        formToolkit.paintBordersFor(sashForm);
80

    
81
        Composite composite = new Composite(sashForm, SWT.NONE);
82
        formToolkit.adapt(composite);
83
        formToolkit.paintBordersFor(composite);
84
        composite.setLayout(new GridLayout(1, false));
85

    
86
        Label lblNewLabel = new Label(composite, SWT.NONE);
87
        lblNewLabel.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1));
88
        formToolkit.adapt(lblNewLabel, true, true);
89
        lblNewLabel.setText("Structures");
90

    
91
        treeViewerStructures = new TreeViewer(composite, SWT.BORDER);
92
        Tree tree = treeViewerStructures.getTree();
93
        tree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
94

    
95
        Composite composite_1 = new Composite(sashForm, SWT.NONE);
96
        formToolkit.adapt(composite_1);
97
        formToolkit.paintBordersFor(composite_1);
98
        composite_1.setLayout(new GridLayout(1, false));
99

    
100
        Label lblNewLabel_1 = new Label(composite_1, SWT.NONE);
101
        lblNewLabel_1.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1));
102
        formToolkit.adapt(lblNewLabel_1, true, true);
103
        lblNewLabel_1.setText("Properties");
104

    
105
        treeViewerProperties = new TreeViewer(composite_1, SWT.BORDER);
106
        Tree tree_1 = treeViewerProperties.getTree();
107
        tree_1.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
108

    
109
        Composite composite_2 = new Composite(sashForm, SWT.NONE);
110
        formToolkit.adapt(composite_2);
111
        formToolkit.paintBordersFor(composite_2);
112
        composite_2.setLayout(new GridLayout(1, false));
113

    
114
        btnAddCharacter = new Button(composite_2, SWT.NONE);
115
        btnAddCharacter.setText(">>");
116
        btnAddCharacter.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, true, true, 1, 1));
117
        formToolkit.adapt(btnAddCharacter, true, true);
118

    
119

    
120
        Composite composite_3 = new Composite(sashForm, SWT.NONE);
121
        formToolkit.adapt(composite_3);
122
        formToolkit.paintBordersFor(composite_3);
123
        composite_3.setLayout(new GridLayout(1, false));
124

    
125
        editor = new FeatureTreeEditor(shell);
126
        editor.createControl(composite_3, shell);
127

    
128
        //                treeViewerCharacters = new TreeViewer(sashForm, SWT.BORDER);
129
        sashForm.setWeights(new int[] {3, 3, 1, 3});
130

    
131
        init();
132
    }
133

    
134
    private void init(){
135
        int dndOperations = DND.DROP_COPY | DND.DROP_MOVE;
136
        Transfer[] transfers = new Transfer[] { FeatureNodeTransfer.getInstance() };
137

    
138
        FeatureTree structureFeatureTree = CdmStore.getService(IFeatureTreeService.class).load(UUID.fromString("3a953dd1-2b5f-482f-9a33-664ee7ef6c68"));
139
        treeViewerStructures.setContentProvider(new FeatureTreeContentProvider());
140
        treeViewerStructures.setLabelProvider(new FeatureTreeLabelProvider());
141
        treeViewerStructures.setInput(structureFeatureTree);
142

    
143
        FeatureTree propertiesFeatureTree = CdmStore.getService(IFeatureTreeService.class).load(UUID.fromString("e283bbf5-bda3-449d-98de-3601ac8a8bbd"));
144
        treeViewerProperties.setContentProvider(new FeatureTreeContentProvider());
145
        treeViewerProperties.setLabelProvider(new FeatureTreeLabelProvider());
146
        treeViewerProperties.addDragSupport(dndOperations, transfers, new CharacterDragListener(treeViewerStructures, treeViewerProperties));
147
        treeViewerProperties.setInput(propertiesFeatureTree);
148

    
149
        btnAddCharacter.addSelectionListener(new SelectionAdapter() {
150
            /**
151
             * {@inheritDoc}
152
             */
153
            @Override
154
            public void widgetSelected(SelectionEvent e) {
155
                ISelection structureTreeSelection = treeViewerStructures.getSelection();
156
                ISelection propertyTreeSelection = treeViewerProperties.getSelection();
157
                if(structureTreeSelection==null || propertyTreeSelection==null || editor.getSelectedFeatureTree()==null){
158
                    MessagingUtils.warningDialog("Cannot perform action", CharacterEditor.this,
159
                            "You have to select a structure, a property and a feature tree to perform this action.");
160
                    return;
161
                }
162
                FeatureNode structureNode = (FeatureNode) ((TreeSelection)structureTreeSelection).getFirstElement();
163
                FeatureNode propertyNode = (FeatureNode) ((TreeSelection)propertyTreeSelection).getFirstElement();
164
                String label = structureNode.getFeature().toString()+" "+propertyNode.getFeature().toString();
165
                Character character = Character.NewInstance(structureNode, propertyNode, null, label, label);
166
                //TODO session handling
167
//                CdmStore.getService(ITermService.class).save(character);
168
                editor.addFeatures(Collections.singleton(character));
169
            }
170
        });
171

    
172
//        treeViewerCharacters.setContentProvider(new FeatureTreeContentProvider());
173
//        treeViewerCharacters.setLabelProvider(new FeatureTreeLabelProvider());
174
//        treeViewerCharacters.addDropSupport(dndOperations, transfers, new CharacterDropAdapter(treeViewerCharacters));
175
    }
176

    
177
    @PreDestroy
178
    public void dispose() {
179
    }
180

    
181
    @Focus
182
    public void setFocus() {
183
    }
184

    
185
    public TreeViewer getTreeViewerCharacters() {
186
        return treeViewerCharacters;
187
    }
188
    public TreeViewer getTreeViewerProperties() {
189
        return treeViewerProperties;
190
    }
191
    public TreeViewer getTreeViewerStructures() {
192
        return treeViewerStructures;
193
    }
194
}
(3-3/5)