2 * Copyright (C) 2017 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
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.
9 package eu
.etaxonomy
.taxeditor
.featuretree
.e4
;
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
;
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 import eu
.etaxonomy
.taxeditor
.preference
.IPreferenceKeys
;
36 import eu
.etaxonomy
.taxeditor
.store
.internal
.TaxeditorStorePlugin
;
43 public class FeatureTreeEditorComposite
extends Composite
{
45 private FeatureTree featureTree
;
47 private Label label_title
;
48 private Text text_title
;
49 private Button btnOpenFeatureTree
;
50 private TreeViewer viewer
;
51 private Button btnAdd
;
52 private Button btnRemove
;
53 private Button btnExportTree
;
55 private Composite composite_buttons
;
57 public FeatureTreeEditorComposite(Composite parent
, int style
) {
59 setLayout(new GridLayout(2, false));
61 Composite composite_treeTitle
= new Composite(this, SWT
.NULL
);
62 composite_treeTitle
.setLayoutData(new GridData(SWT
.FILL
, SWT
.TOP
, true,
64 GridLayout gl_composite_treeTitle
= new GridLayout(2, false);
65 gl_composite_treeTitle
.marginWidth
= 0;
66 composite_treeTitle
.setLayout(gl_composite_treeTitle
);
68 label_title
= new Label(composite_treeTitle
, SWT
.NULL
);
69 label_title
.setLayoutData(new GridData(SWT
.RIGHT
, SWT
.CENTER
, false, false, 1, 1));
70 label_title
.setText(Messages
.FeatureTreeEditorComposite_FEATURE_TREE
);
72 text_title
= new Text(composite_treeTitle
, SWT
.BORDER
);
73 text_title
.setLayoutData(new GridData(SWT
.FILL
, SWT
.CENTER
, true, false, 1, 1));
74 text_title
.setEnabled(false);
76 btnOpenFeatureTree
= new Button(this, SWT
.NONE
);
77 btnOpenFeatureTree
.setLayoutData(new GridData(SWT
.CENTER
, SWT
.CENTER
, false, false, 1, 1));
78 btnOpenFeatureTree
.setToolTipText(Messages
.FeatureTreeEditorComposite_OPEN_TREE
);
79 btnOpenFeatureTree
.setImage(ImageResources
.getImage(ImageResources
.BROWSE_ICON
));
81 viewer
= new TreeViewer(this);
82 Tree tree
= viewer
.getTree();
83 tree
.setLayoutData(new GridData(SWT
.FILL
, SWT
.FILL
, true, true, 1, 1));
84 viewer
.getControl().setLayoutData(
85 new GridData(SWT
.FILL
, SWT
.FILL
, true, true));
87 composite_buttons
= new Composite(this,
89 composite_buttons
.setLayoutData(new GridData(SWT
.LEFT
, SWT
.TOP
, false,
91 composite_buttons
.setLayout(new GridLayout());
93 btnAdd
= new Button(composite_buttons
, SWT
.PUSH
);
94 btnAdd
.setLayoutData(new GridData(SWT
.CENTER
, SWT
.CENTER
, false, false, 1, 1));
95 btnAdd
.setToolTipText(Messages
.FeatureTreeEditorComposite_ADD_FEATURE
);
96 btnAdd
.setImage(ImageResources
.getImage(ImageResources
.ADD_EDIT
));
97 btnRemove
= new Button(composite_buttons
, SWT
.PUSH
);
98 btnRemove
.setLayoutData(new GridData(SWT
.CENTER
, SWT
.CENTER
, false, false, 1, 1));
99 btnRemove
.setToolTipText(Messages
.FeatureTreeEditorComposite_REMOVE_FEATURE
);
100 btnRemove
.setImage(ImageResources
.getImage(ImageResources
.TRASH_ICON
));
102 btnExportTree
= new Button(composite_buttons
, SWT
.NONE
);
103 btnExportTree
.setToolTipText("Export feature tree");
104 btnExportTree
.setImage(ImageResources
.getImage(ImageResources
.MOVE_ICON
));
105 btnExportTree
.setVisible(TaxeditorStorePlugin
.getDefault().getPreferenceStore().getBoolean(IPreferenceKeys
.SHOW_EXPERIMENTAL_FEATURES
));
107 setButtonsEnabled(false);
110 public void init(DragSourceListener dragSourceListener
,
111 DropTargetListener dropTargetListener
, ISelectionChangedListener viewerSelectionChangedListener
,
112 SelectionListener openFeatureTreeSelectionListener
, SelectionListener addButtonSelectionListener
, SelectionListener removeButtonSelectionListener
, SelectionListener exportButtonSelectionListener
) {
113 viewer
.setContentProvider(new FeatureTreeContentProvider());
114 viewer
.setLabelProvider(new FeatureTreeLabelProvider());
116 int ops
= DND
.DROP_COPY
| DND
.DROP_MOVE
;
117 Transfer
[] transfers
= new Transfer
[] { FeatureNodeTransfer
118 .getInstance(), TermTransfer
.getInstance() };
119 if(dragSourceListener
!=null){
120 viewer
.addDragSupport(ops
, transfers
, dragSourceListener
);
122 if(dropTargetListener
!=null){
123 viewer
.addDropSupport(ops
, transfers
, dropTargetListener
);
126 viewer
.addSelectionChangedListener(viewerSelectionChangedListener
);
128 btnAdd
.addSelectionListener(addButtonSelectionListener
);
129 btnRemove
.addSelectionListener(removeButtonSelectionListener
);
130 btnExportTree
.addSelectionListener(exportButtonSelectionListener
);
132 btnOpenFeatureTree
.addSelectionListener(openFeatureTreeSelectionListener
);
135 public void setSelectedTree(FeatureTree featureTree
, ModifyListener modifyListener
) {
136 this.featureTree
= featureTree
;
138 getViewer().setInput(featureTree
);
140 getText_title().removeModifyListener(modifyListener
);
141 getText_title().setText(featureTree
.getTitleCache());
142 getText_title().addModifyListener(modifyListener
);
143 getText_title().setEnabled(true);
144 setButtonsEnabled(true);
145 text_title
.setEnabled(true);
148 private void setButtonsEnabled(boolean enabled
){
149 btnAdd
.setEnabled(enabled
);
150 btnRemove
.setEnabled(enabled
);
151 btnExportTree
.setEnabled(enabled
);
155 * @return the featureTree
157 public FeatureTree
getFeatureTree() {
162 * @return the label_title
164 public Label
getLabel_title() {
169 * @return the text_title
171 public Text
getText_title() {
176 * @return the btnOpenFeatureTree
178 public Button
getBtnOpenFeatureTree() {
179 return btnOpenFeatureTree
;
185 public TreeViewer
getViewer() {
190 * @return the button_add
192 public Button
getBtnAdd() {
197 * @return the button_remove
199 public Button
getBtnRemove() {
204 * @return the composite_buttons
206 public Composite
getComposite_buttons() {
207 return composite_buttons
;
211 * @return the btnExportTree
213 public Button
getBtnExportTree() {
214 return btnExportTree
;