]> git.argeo.org Git - gpl/argeo-slc.git/blob - MixTitleComposite.java
5aa64239fa607f55e3d10ce5c896423b0752dc4c
[gpl/argeo-slc.git] / MixTitleComposite.java
1 package org.argeo.slc.akb.ui.composites;
2
3 import javax.jcr.Node;
4 import javax.jcr.Property;
5
6 import org.argeo.slc.akb.ui.AkbUiUtils;
7 import org.eclipse.swt.SWT;
8 import org.eclipse.swt.layout.GridData;
9 import org.eclipse.swt.layout.GridLayout;
10 import org.eclipse.swt.widgets.Composite;
11 import org.eclipse.swt.widgets.Label;
12 import org.eclipse.swt.widgets.Text;
13 import org.eclipse.ui.forms.AbstractFormPart;
14 import org.eclipse.ui.forms.IManagedForm;
15 import org.eclipse.ui.forms.widgets.FormToolkit;
16
17 public class MixTitleComposite extends Composite {
18 // private final static Log log =
19 // LogFactory.getLog(MixTitleComposite.class);
20
21 private final Node akbNode;
22 private final FormToolkit toolkit;
23 private final IManagedForm form;
24 // Don't forget to unregister on dispose
25 private AbstractFormPart formPart;
26
27 // To enable set focus
28 private Text titleTxt;
29
30 public MixTitleComposite(Composite parent, int style, FormToolkit toolkit,
31 IManagedForm form, Node akbNode) {
32 super(parent, style);
33 this.akbNode = akbNode;
34 this.toolkit = toolkit;
35 this.form = form;
36 populate();
37 toolkit.adapt(this);
38 }
39
40 private void populate() {
41 // Initialization
42 Composite parent = this;
43
44 parent.setLayout(new GridLayout(2, false));
45
46 // first line: connector name
47 toolkit.createLabel(parent, "Name");
48 titleTxt = toolkit.createText(parent, "", SWT.BORDER);
49 GridData gd = new GridData(SWT.FILL, SWT.TOP, true, false);
50 titleTxt.setLayoutData(gd);
51
52 // 2nd line: description
53 Label lbl = toolkit.createLabel(parent, "Description");
54 lbl.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, false, false));
55 final Text descTxt = toolkit.createText(parent, "", SWT.BORDER
56 | SWT.MULTI | SWT.WRAP);
57 gd = new GridData(SWT.FILL, SWT.FILL, true, true);
58 descTxt.setLayoutData(gd);
59
60 // Part Management
61 final AbstractFormPart part = new AbstractFormPart() {
62 public void refresh() {
63 super.refresh();
64 // update display value
65 AkbUiUtils.refreshFormTextWidget(titleTxt, akbNode,
66 Property.JCR_TITLE);
67 AkbUiUtils.refreshFormTextWidget(descTxt, akbNode,
68 Property.JCR_DESCRIPTION);
69 }
70 };
71 // Listeners
72 AkbUiUtils.addTextModifyListener(titleTxt, akbNode, Property.JCR_TITLE,
73 part);
74 AkbUiUtils.addTextModifyListener(descTxt, akbNode,
75 Property.JCR_DESCRIPTION, part);
76 form.addPart(part);
77 }
78
79 @Override
80 public boolean setFocus() {
81 return titleTxt.setFocus();
82 }
83
84 protected void disposePart(AbstractFormPart part) {
85 if (part != null) {
86 form.removePart(part);
87 part.dispose();
88 }
89 }
90
91 @Override
92 public void dispose() {
93 disposePart(formPart);
94 super.dispose();
95 }
96 }