Merge branch 'release/4.9.0'
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / featuretree / e4 / FeatureTreeEditorComposite.java
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(this);
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 }