Project

General

Profile

Download (7.51 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2017 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.featuretree.e4;
10

    
11
import org.eclipse.jface.viewers.ISelectionChangedListener;
12
import org.eclipse.jface.viewers.TreeViewer;
13
import org.eclipse.swt.SWT;
14
import org.eclipse.swt.dnd.DND;
15
import org.eclipse.swt.dnd.DragSourceListener;
16
import org.eclipse.swt.dnd.DropTargetListener;
17
import org.eclipse.swt.dnd.Transfer;
18
import org.eclipse.swt.events.ModifyListener;
19
import org.eclipse.swt.events.SelectionListener;
20
import org.eclipse.swt.layout.GridData;
21
import org.eclipse.swt.layout.GridLayout;
22
import org.eclipse.swt.widgets.Button;
23
import org.eclipse.swt.widgets.Composite;
24
import org.eclipse.swt.widgets.Label;
25
import org.eclipse.swt.widgets.Text;
26
import org.eclipse.swt.widgets.Tree;
27

    
28
import eu.etaxonomy.cdm.model.description.FeatureTree;
29
import eu.etaxonomy.taxeditor.featuretree.FeatureNodeTransfer;
30
import eu.etaxonomy.taxeditor.featuretree.FeatureTreeContentProvider;
31
import eu.etaxonomy.taxeditor.featuretree.FeatureTreeLabelProvider;
32
import eu.etaxonomy.taxeditor.l10n.Messages;
33
import eu.etaxonomy.taxeditor.model.ImageResources;
34
import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
35
import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin;
36

    
37
/**
38
 * @author pplitzner
39
 * @since Jun 19, 2017
40
 *
41
 */
42
public class FeatureTreeEditorComposite extends Composite{
43

    
44
    private FeatureTree featureTree;
45

    
46
    private Label label_title;
47
    private Text text_title;
48
    private Button btnOpenFeatureTree;
49
    private TreeViewer viewer;
50
    private Button btnAdd;
51
    private Button btnRemove;
52
    private Button btnExportTree;
53

    
54
    private Composite composite_buttons;
55

    
56
    public FeatureTreeEditorComposite(Composite parent, int style) {
57
        super(parent, style);
58
        setLayout(new GridLayout(2, false));
59

    
60
        Composite composite_treeTitle = new Composite(this, SWT.NULL);
61
        composite_treeTitle.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true,
62
                false));
63
        GridLayout gl_composite_treeTitle = new GridLayout(2, false);
64
        gl_composite_treeTitle.marginWidth = 0;
65
        composite_treeTitle.setLayout(gl_composite_treeTitle);
66

    
67
        label_title = new Label(composite_treeTitle, SWT.NULL);
68
        label_title.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
69
        label_title.setText(Messages.FeatureTreeEditorComposite_FEATURE_TREE);
70

    
71
        text_title = new Text(composite_treeTitle, SWT.BORDER);
72
        text_title.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
73
        text_title.setEnabled(false);
74

    
75
        btnOpenFeatureTree = new Button(this, SWT.NONE);
76
        btnOpenFeatureTree.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1));
77
        btnOpenFeatureTree.setToolTipText(Messages.FeatureTreeEditorComposite_OPEN_TREE);
78
        btnOpenFeatureTree.setImage(ImageResources.getImage(ImageResources.BROWSE_ICON));
79

    
80
        viewer = new TreeViewer(this);
81
        Tree tree = viewer.getTree();
82
        tree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
83
        viewer.getControl().setLayoutData(
84
                new GridData(SWT.FILL, SWT.FILL, true, true));
85

    
86
        composite_buttons = new Composite(this,
87
                SWT.NULL);
88
        composite_buttons.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, false,
89
                false));
90
        composite_buttons.setLayout(new GridLayout());
91

    
92
        btnAdd = new Button(composite_buttons, SWT.PUSH);
93
        btnAdd.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1));
94
        btnAdd.setToolTipText(Messages.FeatureTreeEditorComposite_ADD_FEATURE);
95
        btnAdd.setImage(ImageResources.getImage(ImageResources.ADD_EDIT));
96
        btnRemove = new Button(composite_buttons, SWT.PUSH);
97
        btnRemove.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1));
98
        btnRemove.setToolTipText(Messages.FeatureTreeEditorComposite_REMOVE_FEATURE);
99
        btnRemove.setImage(ImageResources.getImage(ImageResources.TRASH_ICON));
100

    
101
        btnExportTree = new Button(composite_buttons, SWT.NONE);
102
        btnExportTree.setToolTipText("Export feature tree");
103
        btnExportTree.setImage(ImageResources.getImage(ImageResources.MOVE_ICON));
104
        btnExportTree.setVisible(TaxeditorStorePlugin.getDefault().getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_EXPERIMENTAL_FEATURES));
105

    
106
        setButtonsEnabled(false);
107
    }
108

    
109
    public void init(DragSourceListener dragSourceListener,
110
            DropTargetListener dropTargetListener, ISelectionChangedListener viewerSelectionChangedListener,
111
            SelectionListener openFeatureTreeSelectionListener, SelectionListener addButtonSelectionListener, SelectionListener removeButtonSelectionListener, SelectionListener exportButtonSelectionListener) {
112
        viewer.setContentProvider(new FeatureTreeContentProvider());
113
        viewer.setLabelProvider(new FeatureTreeLabelProvider());
114

    
115
        int ops = DND.DROP_COPY | DND.DROP_MOVE;
116
        Transfer[] transfers = new Transfer[] { FeatureNodeTransfer
117
                .getInstance() };
118
        if(dragSourceListener!=null){
119
            viewer.addDragSupport(ops, transfers, dragSourceListener);
120
        }
121
        if(dropTargetListener!=null){
122
            viewer.addDropSupport(ops, transfers, dropTargetListener);
123
        }
124

    
125
        viewer.addSelectionChangedListener(viewerSelectionChangedListener);
126

    
127
        btnAdd.addSelectionListener(addButtonSelectionListener);
128
        btnRemove.addSelectionListener(removeButtonSelectionListener);
129
        btnExportTree.addSelectionListener(exportButtonSelectionListener);
130

    
131
        btnOpenFeatureTree.addSelectionListener(openFeatureTreeSelectionListener);
132
    }
133

    
134
    public void setSelectedTree(FeatureTree featureTree, ModifyListener modifyListener) {
135
        this.featureTree = featureTree;
136

    
137
        getViewer().setInput(featureTree);
138

    
139
        getText_title().removeModifyListener(modifyListener);
140
        getText_title().setText(featureTree.getTitleCache());
141
        getText_title().addModifyListener(modifyListener);
142
        getText_title().setEnabled(true);
143
        setButtonsEnabled(true);
144
        text_title.setEnabled(true);
145
    }
146

    
147
    private void setButtonsEnabled(boolean enabled){
148
        btnAdd.setEnabled(enabled);
149
        btnRemove.setEnabled(enabled);
150
        btnExportTree.setEnabled(enabled);
151
    }
152

    
153
    /**
154
     * @return the featureTree
155
     */
156
    public FeatureTree getFeatureTree() {
157
        return featureTree;
158
    }
159

    
160
    /**
161
     * @return the label_title
162
     */
163
    public Label getLabel_title() {
164
        return label_title;
165
    }
166

    
167
    /**
168
     * @return the text_title
169
     */
170
    public Text getText_title() {
171
        return text_title;
172
    }
173

    
174
    /**
175
     * @return the btnOpenFeatureTree
176
     */
177
    public Button getBtnOpenFeatureTree() {
178
        return btnOpenFeatureTree;
179
    }
180

    
181
    /**
182
     * @return the viewer
183
     */
184
    public TreeViewer getViewer() {
185
        return viewer;
186
    }
187

    
188
    /**
189
     * @return the button_add
190
     */
191
    public Button getBtnAdd() {
192
        return btnAdd;
193
    }
194

    
195
    /**
196
     * @return the button_remove
197
     */
198
    public Button getBtnRemove() {
199
        return btnRemove;
200
    }
201

    
202
    /**
203
     * @return the composite_buttons
204
     */
205
    public Composite getComposite_buttons() {
206
        return composite_buttons;
207
    }
208

    
209
    /**
210
     * @return the btnExportTree
211
     */
212
    public Button getBtnExportTree() {
213
        return btnExportTree;
214
    }
215

    
216
}
(4-4/5)