1 |
4cab9405
|
Patrick Plitzner
|
/**
|
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 |
becf5142
|
Patrick Plitzner
|
import org.eclipse.swt.events.ModifyListener;
|
19 |
4cab9405
|
Patrick Plitzner
|
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 |
becf5142
|
Patrick Plitzner
|
import eu.etaxonomy.cdm.model.description.FeatureTree;
|
29 |
4cab9405
|
Patrick Plitzner
|
import eu.etaxonomy.taxeditor.featuretree.FeatureNodeTransfer;
|
30 |
|
|
import eu.etaxonomy.taxeditor.featuretree.FeatureTreeContentProvider;
|
31 |
|
|
import eu.etaxonomy.taxeditor.featuretree.FeatureTreeLabelProvider;
|
32 |
02fbce4a
|
Patrick Plitzner
|
import eu.etaxonomy.taxeditor.l10n.Messages;
|
33 |
4cab9405
|
Patrick Plitzner
|
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 |
becf5142
|
Patrick Plitzner
|
private FeatureTree featureTree;
|
43 |
|
|
|
44 |
4cab9405
|
Patrick Plitzner
|
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 |
02fbce4a
|
Patrick Plitzner
|
label_title.setText(Messages.FeatureTreeEditorComposite_FEATURE_TREE);
|
65 |
4cab9405
|
Patrick Plitzner
|
|
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 |
02fbce4a
|
Patrick Plitzner
|
btnOpenFeatureTree.setToolTipText(Messages.FeatureTreeEditorComposite_OPEN_TREE);
|
72 |
4cab9405
|
Patrick Plitzner
|
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 |
02fbce4a
|
Patrick Plitzner
|
button_add.setToolTipText(Messages.FeatureTreeEditorComposite_ADD_FEATURE);
|
89 |
4cab9405
|
Patrick Plitzner
|
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 |
02fbce4a
|
Patrick Plitzner
|
button_remove.setToolTipText(Messages.FeatureTreeEditorComposite_REMOVE_FEATURE);
|
93 |
4cab9405
|
Patrick Plitzner
|
button_remove.setImage(ImageResources.getImage(ImageResources.TRASH_ICON));
|
94 |
|
|
}
|
95 |
|
|
|
96 |
|
|
public void init(DragSourceListener dragSourceListener,
|
97 |
|
|
DropTargetListener dropTargetListener, ISelectionChangedListener viewerSelectionChangedListener,
|
98 |
becf5142
|
Patrick Plitzner
|
SelectionListener openFeatureTreeSelectionListener, SelectionListener addButtonSelectionListener, SelectionListener removeButtonSelectionListener) {
|
99 |
4cab9405
|
Patrick Plitzner
|
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 |
becf5142
|
Patrick Plitzner
|
if(dragSourceListener!=null){
|
106 |
|
|
viewer.addDragSupport(ops, transfers, dragSourceListener);
|
107 |
|
|
}
|
108 |
|
|
if(dropTargetListener!=null){
|
109 |
|
|
viewer.addDropSupport(ops, transfers, dropTargetListener);
|
110 |
|
|
}
|
111 |
4cab9405
|
Patrick Plitzner
|
|
112 |
|
|
viewer.addSelectionChangedListener(viewerSelectionChangedListener);
|
113 |
|
|
|
114 |
|
|
button_add.addSelectionListener(addButtonSelectionListener);
|
115 |
|
|
button_remove.addSelectionListener(removeButtonSelectionListener);
|
116 |
|
|
|
117 |
becf5142
|
Patrick Plitzner
|
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 |
4cab9405
|
Patrick Plitzner
|
}
|
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 |
|
|
}
|