Project

General

Profile

Download (7.99 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.termtree.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.SelectionAdapter;
20
import org.eclipse.swt.events.SelectionEvent;
21
import org.eclipse.swt.events.SelectionListener;
22
import org.eclipse.swt.layout.GridData;
23
import org.eclipse.swt.layout.GridLayout;
24
import org.eclipse.swt.widgets.Button;
25
import org.eclipse.swt.widgets.Composite;
26
import org.eclipse.swt.widgets.Label;
27
import org.eclipse.swt.widgets.Text;
28
import org.eclipse.swt.widgets.Tree;
29

    
30
import eu.etaxonomy.cdm.model.term.DefinedTermBase;
31
import eu.etaxonomy.cdm.model.term.TermTree;
32
import eu.etaxonomy.cdm.model.term.TermType;
33
import eu.etaxonomy.taxeditor.editor.definedterm.TermTransfer;
34
import eu.etaxonomy.taxeditor.l10n.Messages;
35
import eu.etaxonomy.taxeditor.model.IDirtyMarkable;
36
import eu.etaxonomy.taxeditor.model.ImageResources;
37
import eu.etaxonomy.taxeditor.store.StoreUtil;
38
import eu.etaxonomy.taxeditor.termtree.TermNodeTransfer;
39
import eu.etaxonomy.taxeditor.termtree.TermTreeContentProvider;
40
import eu.etaxonomy.taxeditor.termtree.TermTreeLabelProvider;
41
import eu.etaxonomy.taxeditor.ui.dialog.selection.FeatureTreeSelectionDialog;
42

    
43
/**
44
 * @author pplitzner
45
 * @since Jun 19, 2017
46
 */
47
public class TermTreeEditorComposite <T extends DefinedTermBase> extends Composite{
48

    
49
    private TermTree<T> termTree;
50

    
51
    private Label label_title;
52
    private Text text_title;
53
    private Button btnOpenTermTree;
54
    private TreeViewer viewer;
55

    
56
    public TermTreeEditorComposite(Composite parent, int style) {
57
        super(parent, style);
58
        setLayout(new GridLayout(1, 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(3, 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.TermTreeEditorComposite_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.setEditable(false);
74

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

    
80
        viewer = new TreeViewer(new Tree(this, SWT.H_SCROLL | SWT.V_SCROLL | SWT.MULTI));
81
        Tree tree = viewer.getTree();
82
        tree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 3, 1));
83
        viewer.getControl().setLayoutData(
84
                new GridData(SWT.FILL, SWT.FILL, true, true));
85
    }
86

    
87
    public void init(String label,
88
            DragSourceListener dragSourceListener,
89
            DropTargetListener dropTargetListener,
90
            ISelectionChangedListener viewerSelectionChangedListener,
91
            IDirtyMarkable dirtyMarkable,
92
            ModifyListener textModifyListener) {
93
        init(label,
94
                null,
95
                dragSourceListener,
96
                dropTargetListener,
97
                null,
98
                viewerSelectionChangedListener,
99
                null,
100
                dirtyMarkable,
101
                textModifyListener);
102
    }
103

    
104
    public void init(String label, TermType termType,
105
            DragSourceListener dragSourceListener,
106
            DropTargetListener dropTargetListener,
107
            ISelectionChangedListener viewerSelectionChangedListener,
108
            IDirtyMarkable dirtyMarkable,
109
            ModifyListener textModifyListener) {
110
        this.init(label,
111
                termType,
112
                dragSourceListener,
113
                dropTargetListener,
114
                null,
115
                viewerSelectionChangedListener,
116
                null,
117
                dirtyMarkable,
118
                textModifyListener);
119
    }
120
    public void init(DragSourceListener dragSourceListener,
121
            DropTargetListener dropTargetListener,
122
            Transfer[] transfers,
123
            ISelectionChangedListener viewerSelectionChangedListener,
124
            SelectionListener openFeatureTreeSelectionListener,
125
            ModifyListener textModifyListener) {
126
        init(null,
127
                null,
128
                dragSourceListener,
129
                dropTargetListener,
130
                transfers,
131
                viewerSelectionChangedListener,
132
                openFeatureTreeSelectionListener,
133
                null,
134
                textModifyListener);
135
    }
136
    private void init(String label,
137
            TermType termType,
138
            DragSourceListener dragSourceListener,
139
            DropTargetListener dropTargetListener,
140
            Transfer[] transfers,
141
            ISelectionChangedListener viewerSelectionChangedListener,
142
            SelectionListener openFeatureTreeSelectionListener,
143
            IDirtyMarkable dirtyMarkable,
144
            ModifyListener textModifyListener) {
145
        if(label!=null){
146
            label_title.setText(label);
147
        }
148

    
149
        viewer.setContentProvider(new TermTreeContentProvider());
150
        viewer.setLabelProvider(new TermTreeLabelProvider());
151

    
152
        int ops = DND.DROP_COPY | DND.DROP_MOVE;
153
        if(transfers==null){
154
        transfers = new Transfer[] {
155
                TermNodeTransfer.getInstance(),
156
                TermTransfer.getInstance(),
157
                };
158
        }
159
        if(dragSourceListener!=null){
160
            viewer.addDragSupport(ops, transfers, dragSourceListener);
161
        }
162
        if(dropTargetListener!=null){
163
            viewer.addDropSupport(ops, transfers, dropTargetListener);
164
        }
165

    
166
        if(viewerSelectionChangedListener!=null){
167
            viewer.addSelectionChangedListener(viewerSelectionChangedListener);
168
        }
169

    
170
        if(textModifyListener!=null){
171
            text_title.addModifyListener(textModifyListener);
172
        }
173

    
174
        //add specific selection listener
175
        if(openFeatureTreeSelectionListener!=null){
176
            btnOpenTermTree.addSelectionListener(openFeatureTreeSelectionListener);
177
        }
178
        else{
179
            //add default selection listener
180
            btnOpenTermTree.addSelectionListener(new SelectionAdapter(){
181
                @Override
182
                public void widgetSelected(SelectionEvent e) {
183
                    TermTree<T> tree = FeatureTreeSelectionDialog.select(getDisplay().getActiveShell(),
184
                            null, termType);
185
                    if(tree!=null){
186
                        setSelectedTree(tree);
187
                        if(dirtyMarkable!=null){
188
                            dirtyMarkable.forceDirty();
189
                        }
190
                    }
191
                }
192
            });
193
        }
194
    }
195

    
196
    public void setSelectedTree(TermTree<T> featureTree) {
197
        this.termTree = featureTree;
198
        viewer.setInput(featureTree);
199
        StoreUtil.setTextWithoutModifyListeners(text_title, featureTree!=null?featureTree.getTitleCache():"");
200
    }
201

    
202
    public TermTree<T> getFeatureTree() {
203
        return termTree;
204
    }
205

    
206
    public Label getLabel_title() {
207
        return label_title;
208
    }
209

    
210
    public Button getBtnOpenFeatureTree() {
211
        return btnOpenTermTree;
212
    }
213

    
214
    public TreeViewer getViewer() {
215
        return viewer;
216
    }
217

    
218
}
(9-9/10)