Project

General

Profile

Download (6.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.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.Listener;
28
import org.eclipse.swt.widgets.Text;
29
import org.eclipse.swt.widgets.Tree;
30

    
31
import eu.etaxonomy.cdm.model.description.FeatureTree;
32
import eu.etaxonomy.taxeditor.editor.definedterm.TermTransfer;
33
import eu.etaxonomy.taxeditor.featuretree.FeatureNodeTransfer;
34
import eu.etaxonomy.taxeditor.featuretree.FeatureTreeContentProvider;
35
import eu.etaxonomy.taxeditor.featuretree.FeatureTreeLabelProvider;
36
import eu.etaxonomy.taxeditor.l10n.Messages;
37
import eu.etaxonomy.taxeditor.model.ImageResources;
38
import eu.etaxonomy.taxeditor.ui.dialog.selection.FeatureTreeSelectionDialog;
39

    
40
/**
41
 * @author pplitzner
42
 * @since Jun 19, 2017
43
 *
44
 */
45
public class FeatureTreeEditorComposite extends Composite{
46

    
47
    private FeatureTree featureTree;
48

    
49
    private Label label_title;
50
    private Text text_title;
51
    private Button btnOpenFeatureTree;
52
    private TreeViewer viewer;
53

    
54
    public FeatureTreeEditorComposite(Composite parent, int style) {
55
        super(parent, style);
56
        setLayout(new GridLayout(1, false));
57

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

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

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

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

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

    
85
    public void init(DragSourceListener dragSourceListener, DropTargetListener dropTargetListener,
86
            ISelectionChangedListener viewerSelectionChangedListener,
87
            SelectionListener openFeatureTreeSelectionListener,
88
            ModifyListener textModifyListener) {
89
        viewer.setContentProvider(new FeatureTreeContentProvider());
90
        viewer.setLabelProvider(new FeatureTreeLabelProvider());
91

    
92
        int ops = DND.DROP_COPY | DND.DROP_MOVE;
93
        Transfer[] transfers = new Transfer[] { FeatureNodeTransfer
94
                .getInstance(), TermTransfer.getInstance() };
95
        if(dragSourceListener!=null){
96
            viewer.addDragSupport(ops, transfers, dragSourceListener);
97
        }
98
        if(dropTargetListener!=null){
99
            viewer.addDropSupport(ops, transfers, dropTargetListener);
100
        }
101

    
102
        if(viewerSelectionChangedListener!=null){
103
            viewer.addSelectionChangedListener(viewerSelectionChangedListener);
104
        }
105

    
106
        if(textModifyListener!=null){
107
            text_title.addModifyListener(textModifyListener);
108
        }
109

    
110
        //add specific selection listener
111
        if(openFeatureTreeSelectionListener!=null){
112
            btnOpenFeatureTree.addSelectionListener(openFeatureTreeSelectionListener);
113
        }
114
        else{
115
            //add default selection listener
116
            btnOpenFeatureTree.addSelectionListener(new SelectionAdapter(){
117
                @Override
118
                public void widgetSelected(SelectionEvent e) {
119
                    FeatureTree tree = FeatureTreeSelectionDialog.select(getDisplay().getActiveShell(),
120
                            null);
121
                    if(tree!=null){
122
                        setSelectedTree(tree);
123
                        text_title.setEnabled(false);
124
                    }
125
                }
126
            });
127
        }
128
    }
129

    
130
    public void setSelectedTree(FeatureTree featureTree) {
131
        this.featureTree = featureTree;
132

    
133
        viewer.setInput(featureTree);
134

    
135
        Listener[] listeners = text_title.getListeners(SWT.Modify);
136
        for (Listener listener : listeners) {
137
            text_title.removeListener(SWT.Modify, listener);
138
        }
139
        text_title.setText(featureTree!=null?featureTree.getTitleCache():"");
140
        for (Listener listener : listeners) {
141
            text_title.addListener(SWT.Modify, listener);
142
        }
143
        text_title.setEnabled(true);
144
        text_title.setEnabled(true);
145
    }
146

    
147
    public FeatureTree getFeatureTree() {
148
        return featureTree;
149
    }
150

    
151
    public Text getText_title() {
152
        return text_title;
153
    }
154

    
155
    public Label getLabel_title() {
156
        return label_title;
157
    }
158

    
159
    public Button getBtnOpenFeatureTree() {
160
        return btnOpenFeatureTree;
161
    }
162

    
163
    public TreeViewer getViewer() {
164
        return viewer;
165
    }
166

    
167
}
(4-4/5)