TaxonCompositeFactory functionality transferred to NameComposite. Next step: put...
[taxeditor.git] / eclipseprojects / eu.etaxonomy.taxeditor / src / eu / etaxonomy / taxeditor / view / nameviewersupport / EditableGroupedComposite.java
1 package eu.etaxonomy.taxeditor.view.nameviewersupport;
2
3 import org.apache.log4j.Logger;
4 import org.eclipse.jface.text.TextViewer;
5 import org.eclipse.swt.SWT;
6 import org.eclipse.swt.graphics.Font;
7 import org.eclipse.swt.graphics.Image;
8 import org.eclipse.swt.widgets.Composite;
9 import org.eclipse.swt.widgets.Display;
10 import org.eclipse.swt.widgets.Label;
11 import org.eclipse.swt.widgets.Menu;
12 import org.eclipse.ui.forms.IFormPart;
13 import org.eclipse.ui.forms.IManagedForm;
14 import org.eclipse.ui.forms.widgets.TableWrapData;
15 import org.eclipse.ui.forms.widgets.TableWrapLayout;
16
17 abstract public class EditableGroupedComposite extends GroupedComposite {
18 private static final Logger logger = Logger.getLogger(TaxonCompositeFactory.class);
19
20 protected TextViewer textViewer;
21 protected TableWrapLayout layout;
22
23 ISelectionWrapper selectionWrapper;
24
25 private Label draggableLabel;
26
27 protected IManagedForm managedForm;
28 protected IFormPart formPart;
29 protected boolean dirty;
30
31 public EditableGroupedComposite(Composite parent, IManagedForm managedForm) {
32 super(parent);
33
34 this.managedForm = managedForm;
35 this.formPart = new FormPart(managedForm);
36 }
37
38 @Override
39 protected void createContent() {
40 setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB));
41 layout = new TableWrapLayout();
42 layout.numColumns = 2;
43 layout.leftMargin = 0;
44 setLayout(layout);
45
46 setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));
47
48 draggableLabel = new Label(this, SWT.NONE);
49 draggableLabel.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));
50 draggableLabel.setLayoutData(new TableWrapData(TableWrapData.CENTER, TableWrapData.MIDDLE));
51
52 setDraggableControl(draggableLabel);
53 }
54
55 public TextViewer getTextViewer() {
56 return textViewer;
57 }
58
59 public void setTextViewer(TextViewer textViewer) {
60 this.textViewer = textViewer;
61 }
62
63 public void setIcon(Image icon) {
64 draggableLabel.setImage(icon);
65 }
66
67 public Label getDraggableLabel() {
68 return draggableLabel;
69 }
70
71 public void setIndent(int indent) {
72 layout.leftMargin = indent;
73 this.setLayout(layout);
74 }
75
76 public boolean setFocus() {
77 if (selectionWrapper != null) {
78 selectionWrapper.setSelection();
79 }
80 return super.setFocus();
81 }
82
83 public void setFont(Font font) {
84 getTextViewer().getTextWidget().setFont(font);
85 }
86
87 public void setSelectionWrapper (ISelectionWrapper selectionWrapper) {
88 this.selectionWrapper = selectionWrapper;
89 }
90
91 public Menu getMenu () {
92
93 Menu menu = draggableLabel.getMenu();
94 if (menu == null) {
95 menu = new Menu(draggableLabel);
96 draggableLabel.setMenu(menu);
97 }
98 return menu;
99 }
100
101 public void createBorderSupport(IManagedForm managedForm) {
102 CompositeBorderDecorator borderDecorator = new CompositeBorderDecorator(
103 this, managedForm);
104 TextViewer textViewer = getTextViewer();
105 if (textViewer != null) {
106 borderDecorator.setBorderedComposite(textViewer
107 .getTextWidget());
108 }
109 }
110
111 protected void setDirty(boolean isDirty) {
112 this.dirty = isDirty;
113 }
114
115 class FormPart implements IFormPart {
116
117 public FormPart(IManagedForm form) {
118 form.addPart(this);
119 }
120
121 @Override
122 public void commit(boolean onSave) {}
123
124 @Override
125 public void dispose() {}
126
127 @Override
128 public void initialize(IManagedForm form) {}
129
130 @Override
131 public boolean isDirty() {
132 return dirty;
133 }
134
135 @Override
136 public boolean isStale() {
137 return false;
138 }
139
140 @Override
141 public void refresh() {}
142
143 @Override
144 public void setFocus() {}
145
146 @Override
147 public boolean setFormInput(Object input) {
148 return false;
149 }
150 }
151 }