Project

General

Profile

Download (6.31 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

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

    
42
    private FeatureTree featureTree;
43

    
44
    private Label label_title;
45
    private Text text_title;
46
    private Button btnOpenFeatureTree;
47
    private TreeViewer viewer;
48
    private Button button_add;
49
    private Button button_remove;
50

    
51
    public FeatureTreeEditorComposite(Composite parent, int style) {
52
        super(parent, style);
53
        setLayout(new GridLayout(2, false));
54

    
55
        Composite composite_treeTitle = new Composite(this, SWT.NULL);
56
        composite_treeTitle.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true,
57
                false));
58
        GridLayout gl_composite_treeTitle = new GridLayout(2, false);
59
        gl_composite_treeTitle.marginWidth = 0;
60
        composite_treeTitle.setLayout(gl_composite_treeTitle);
61

    
62
        label_title = new Label(composite_treeTitle, SWT.NULL);
63
        label_title.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
64
        label_title.setText(Messages.FeatureTreeEditorComposite_FEATURE_TREE);
65

    
66
        text_title = new Text(composite_treeTitle, SWT.BORDER);
67
        text_title.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
68

    
69
        btnOpenFeatureTree = new Button(this, SWT.NONE);
70
        btnOpenFeatureTree.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1));
71
        btnOpenFeatureTree.setToolTipText(Messages.FeatureTreeEditorComposite_OPEN_TREE);
72
        btnOpenFeatureTree.setImage(ImageResources.getImage(ImageResources.BROWSE_ICON));
73

    
74
        viewer = new TreeViewer(this);
75
        Tree tree = viewer.getTree();
76
        tree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
77
        viewer.getControl().setLayoutData(
78
                new GridData(SWT.FILL, SWT.FILL, true, true));
79

    
80
        Composite composite_buttons = new Composite(this,
81
                SWT.NULL);
82
        composite_buttons.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, false,
83
                false));
84
        composite_buttons.setLayout(new GridLayout());
85

    
86
        button_add = new Button(composite_buttons, SWT.PUSH);
87
        button_add.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1));
88
        button_add.setToolTipText(Messages.FeatureTreeEditorComposite_ADD_FEATURE);
89
        button_add.setImage(ImageResources.getImage(ImageResources.ADD_EDIT));
90
        button_remove = new Button(composite_buttons, SWT.PUSH);
91
        button_remove.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1));
92
        button_remove.setToolTipText(Messages.FeatureTreeEditorComposite_REMOVE_FEATURE);
93
        button_remove.setImage(ImageResources.getImage(ImageResources.TRASH_ICON));
94
    }
95

    
96
    public void init(DragSourceListener dragSourceListener,
97
            DropTargetListener dropTargetListener, ISelectionChangedListener viewerSelectionChangedListener,
98
            SelectionListener openFeatureTreeSelectionListener, SelectionListener addButtonSelectionListener, SelectionListener removeButtonSelectionListener) {
99
        viewer.setContentProvider(new FeatureTreeContentProvider());
100
        viewer.setLabelProvider(new FeatureTreeLabelProvider());
101

    
102
        int ops = DND.DROP_COPY | DND.DROP_MOVE;
103
        Transfer[] transfers = new Transfer[] { FeatureNodeTransfer
104
                .getInstance() };
105
        if(dragSourceListener!=null){
106
            viewer.addDragSupport(ops, transfers, dragSourceListener);
107
        }
108
        if(dropTargetListener!=null){
109
            viewer.addDropSupport(ops, transfers, dropTargetListener);
110
        }
111

    
112
        viewer.addSelectionChangedListener(viewerSelectionChangedListener);
113

    
114
        button_add.addSelectionListener(addButtonSelectionListener);
115
        button_remove.addSelectionListener(removeButtonSelectionListener);
116

    
117
        btnOpenFeatureTree.addSelectionListener(openFeatureTreeSelectionListener);
118
    }
119

    
120
    public void setSelectedTree(FeatureTree featureTree, ModifyListener modifyListener) {
121
        this.featureTree = featureTree;
122

    
123
        getViewer().setInput(featureTree);
124

    
125
        getText_title().removeModifyListener(modifyListener);
126
        getText_title().setText(featureTree.getTitleCache());
127
        getText_title().addModifyListener(modifyListener);
128
    }
129

    
130
    /**
131
     * @return the featureTree
132
     */
133
    public FeatureTree getFeatureTree() {
134
        return featureTree;
135
    }
136

    
137
    /**
138
     * @return the label_title
139
     */
140
    public Label getLabel_title() {
141
        return label_title;
142
    }
143

    
144
    /**
145
     * @return the text_title
146
     */
147
    public Text getText_title() {
148
        return text_title;
149
    }
150

    
151
    /**
152
     * @return the btnOpenFeatureTree
153
     */
154
    public Button getBtnOpenFeatureTree() {
155
        return btnOpenFeatureTree;
156
    }
157

    
158
    /**
159
     * @return the viewer
160
     */
161
    public TreeViewer getViewer() {
162
        return viewer;
163
    }
164

    
165
    /**
166
     * @return the button_add
167
     */
168
    public Button getButton_add() {
169
        return button_add;
170
    }
171

    
172
    /**
173
     * @return the button_remove
174
     */
175
    public Button getButton_remove() {
176
        return button_remove;
177
    }
178

    
179
}
(4-4/4)