1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.apache.commons.jelly.tags.jface;
17
18 import org.apache.commons.jelly.JellyTagException;
19 import org.apache.commons.jelly.tags.jface.window.ApplicationWindowImpl;
20 import org.apache.commons.jelly.tags.jface.window.ApplicationWindowTag;
21 import org.apache.commons.jelly.tags.swt.LayoutTag;
22 import org.eclipse.jface.window.Window;
23 import org.eclipse.swt.widgets.Composite;
24 import org.eclipse.swt.widgets.Widget;
25
26 /***
27 * Implementation of SWT LayoutTag
28 *
29 * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a>
30 */
31 public class JFaceLayoutTag extends LayoutTag {
32
33 /***
34 * @param layoutClass
35 */
36 public JFaceLayoutTag(Class layoutClass) {
37 super(layoutClass);
38
39 }
40
41
42
43
44 protected void processBean(String var, Object bean) throws JellyTagException {
45
46 Widget parent = getParentWidget();
47 if (parent == null) {
48 Window window = getParentWindow();
49 if (window != null && window instanceof ApplicationWindowImpl) {
50 parent = ((ApplicationWindowImpl) window).getContents();
51 }
52 }
53
54 if (parent instanceof Composite) {
55 Composite composite = (Composite) parent;
56 composite.setLayout(getLayout());
57
58 } else {
59 throw new JellyTagException("This tag must be nested within a composite widget tag");
60 }
61
62 }
63
64 /***
65 * @return the parent window
66 */
67 public Window getParentWindow() {
68 ApplicationWindowTag tag =
69 (ApplicationWindowTag) findAncestorWithClass(ApplicationWindowTag.class);
70 if (tag != null) {
71 return tag.getWindow();
72 }
73 return null;
74 }
75 }
76
77