Project

General

Profile

Download (5.17 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.editor.definedterm.TermTransfer;
30
import eu.etaxonomy.taxeditor.featuretree.FeatureNodeTransfer;
31
import eu.etaxonomy.taxeditor.featuretree.FeatureTreeContentProvider;
32
import eu.etaxonomy.taxeditor.featuretree.FeatureTreeLabelProvider;
33
import eu.etaxonomy.taxeditor.l10n.Messages;
34
import eu.etaxonomy.taxeditor.model.ImageResources;
35

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

    
43
    private FeatureTree featureTree;
44

    
45
    private Label label_title;
46
    private Text text_title;
47
    private Button btnOpenFeatureTree;
48
    private TreeViewer viewer;
49

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

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

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

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

    
69
        btnOpenFeatureTree = new Button(composite_treeTitle, 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(new Tree(this, SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION));
75
        Tree tree = viewer.getTree();
76
        tree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 3, 1));
77
        viewer.getControl().setLayoutData(
78
                new GridData(SWT.FILL, SWT.FILL, true, true));
79
    }
80

    
81
    public void init(DragSourceListener dragSourceListener, DropTargetListener dropTargetListener,
82
            ISelectionChangedListener viewerSelectionChangedListener,
83
            SelectionListener openFeatureTreeSelectionListener) {
84
        viewer.setContentProvider(new FeatureTreeContentProvider());
85
        viewer.setLabelProvider(new FeatureTreeLabelProvider());
86

    
87
        int ops = DND.DROP_COPY | DND.DROP_MOVE;
88
        Transfer[] transfers = new Transfer[] { FeatureNodeTransfer
89
                .getInstance(), TermTransfer.getInstance() };
90
        if(dragSourceListener!=null){
91
            viewer.addDragSupport(ops, transfers, dragSourceListener);
92
        }
93
        if(dropTargetListener!=null){
94
            viewer.addDropSupport(ops, transfers, dropTargetListener);
95
        }
96

    
97
        viewer.addSelectionChangedListener(viewerSelectionChangedListener);
98

    
99
        btnOpenFeatureTree.addSelectionListener(openFeatureTreeSelectionListener);
100
    }
101

    
102
    public void setSelectedTree(FeatureTree featureTree, ModifyListener modifyListener) {
103
        this.featureTree = featureTree;
104

    
105
        getViewer().setInput(featureTree);
106

    
107
        getText_title().removeModifyListener(modifyListener);
108
        getText_title().setText(featureTree.getTitleCache());
109
        getText_title().addModifyListener(modifyListener);
110
        getText_title().setEnabled(true);
111
        text_title.setEnabled(true);
112
    }
113

    
114
    /**
115
     * @return the featureTree
116
     */
117
    public FeatureTree getFeatureTree() {
118
        return featureTree;
119
    }
120

    
121
    /**
122
     * @return the label_title
123
     */
124
    public Label getLabel_title() {
125
        return label_title;
126
    }
127

    
128
    /**
129
     * @return the text_title
130
     */
131
    public Text getText_title() {
132
        return text_title;
133
    }
134

    
135
    /**
136
     * @return the btnOpenFeatureTree
137
     */
138
    public Button getBtnOpenFeatureTree() {
139
        return btnOpenFeatureTree;
140
    }
141

    
142
    /**
143
     * @return the viewer
144
     */
145
    public TreeViewer getViewer() {
146
        return viewer;
147
    }
148

    
149
}
(4-4/5)