%line | %branch | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
org.apache.commons.jelly.tags.swt.FontTag |
|
|
1 | /* |
|
2 | * Copyright 2002,2004 The Apache Software Foundation. |
|
3 | * |
|
4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
|
5 | * you may not use this file except in compliance with the License. |
|
6 | * You may obtain a copy of the License at |
|
7 | * |
|
8 | * http://www.apache.org/licenses/LICENSE-2.0 |
|
9 | * |
|
10 | * Unless required by applicable law or agreed to in writing, software |
|
11 | * distributed under the License is distributed on an "AS IS" BASIS, |
|
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
13 | * See the License for the specific language governing permissions and |
|
14 | * limitations under the License. |
|
15 | */ |
|
16 | package org.apache.commons.jelly.tags.swt; |
|
17 | ||
18 | import org.apache.commons.jelly.JellyTagException; |
|
19 | import org.apache.commons.jelly.TagSupport; |
|
20 | import org.apache.commons.jelly.XMLOutput; |
|
21 | import org.apache.commons.jelly.tags.swt.converters.ColorConverter; |
|
22 | import org.apache.commons.logging.Log; |
|
23 | import org.apache.commons.logging.LogFactory; |
|
24 | import org.eclipse.swt.SWT; |
|
25 | import org.eclipse.swt.graphics.Font; |
|
26 | import org.eclipse.swt.widgets.Widget; |
|
27 | ||
28 | /** |
|
29 | * Class to create a {@link Font} instance within Jelly SWT. |
|
30 | * |
|
31 | * @author <a href="mailto:crafterm@apache.org">Marcus Crafter</a> |
|
32 | * @author Written with much help thanks to the ImageTag class |
|
33 | * @version CVS $Id: FontTag.java 155420 2005-02-26 13:06:03Z dirkv $ |
|
34 | */ |
|
35 | 0 | public class FontTag extends TagSupport { |
36 | ||
37 | /** The Log to which logging calls will be made. */ |
|
38 | 0 | private static final Log log = LogFactory.getLog(FontTag.class); |
39 | ||
40 | /** Font type */ |
|
41 | private String type; |
|
42 | ||
43 | /** Font size */ |
|
44 | private int size; |
|
45 | ||
46 | /** Font style */ |
|
47 | private String style; |
|
48 | ||
49 | /** Font variable name */ |
|
50 | private String var; |
|
51 | ||
52 | /** |
|
53 | * Set the type of this {@link Font} |
|
54 | * |
|
55 | * @param type {@link Font} type name |
|
56 | */ |
|
57 | public void setType(final String type) { |
|
58 | 0 | this.type = type; |
59 | 0 | } |
60 | ||
61 | /** |
|
62 | * Obtain the {@link Font} type name |
|
63 | * |
|
64 | * @return the {@link Font} type name |
|
65 | */ |
|
66 | public String getType() { |
|
67 | 0 | return this.type; |
68 | } |
|
69 | ||
70 | /** |
|
71 | * Set the size of this {@link Font} |
|
72 | * |
|
73 | * @param size {@link Font} size |
|
74 | */ |
|
75 | public void setSize(final int size) { |
|
76 | 0 | this.size = size; |
77 | 0 | } |
78 | ||
79 | /** |
|
80 | * Obtain the {@link Font} size |
|
81 | * |
|
82 | * @return the {@link Font} size |
|
83 | */ |
|
84 | public int getSize() { |
|
85 | 0 | return this.size; |
86 | } |
|
87 | ||
88 | /** |
|
89 | * Set the style of this {@link Font} (eg. bold, normal, italics) |
|
90 | * |
|
91 | * @param style the style of this {@link Font} |
|
92 | */ |
|
93 | public void setStyle(final String style) { |
|
94 | 0 | this.style = style; |
95 | 0 | } |
96 | ||
97 | /** |
|
98 | * Obtain the style of this {@link Font} |
|
99 | * |
|
100 | * @return the style of this {@link Font} |
|
101 | */ |
|
102 | public String getStyle() { |
|
103 | 0 | return this.style; |
104 | } |
|
105 | ||
106 | /** |
|
107 | * Sets the variable name |
|
108 | * |
|
109 | * @param var the variable name of this {@link Font} instance |
|
110 | */ |
|
111 | public void setVar(final String var) { |
|
112 | 0 | this.var = class="keyword">var; |
113 | 0 | } |
114 | ||
115 | /** |
|
116 | * Obtain the variable name. |
|
117 | * |
|
118 | * @return the variable name of this {@link Font} instance |
|
119 | */ |
|
120 | public String getVar() { |
|
121 | 0 | return this.var; |
122 | } |
|
123 | ||
124 | /** |
|
125 | * @return the parent widget which will deliver us a {@link Device} reference |
|
126 | */ |
|
127 | public Widget getParentWidget() { |
|
128 | 0 | final WidgetTag tag = (WidgetTag) findAncestorWithClass(WidgetTag.class); |
129 | 0 | if (tag != null) { |
130 | 0 | return tag.getWidget(); |
131 | } |
|
132 | 0 | return null; |
133 | } |
|
134 | ||
135 | // Tag interface |
|
136 | //------------------------------------------------------------------------- |
|
137 | ||
138 | /** |
|
139 | * Creates a {@link Font} instance as defined by the type, size and style |
|
140 | * attributes, and stores this {@link Font} instance in the Context so that |
|
141 | * it can be referenced in the Jelly script. |
|
142 | * |
|
143 | * @param output {@link XMLOutput} reference |
|
144 | * @throws JellyTagException if an error occurs |
|
145 | * @see org.apache.commons.jelly.Tag#doTag(org.apache.commons.jelly.XMLOutput) |
|
146 | */ |
|
147 | public void doTag(final XMLOutput output) throws JellyTagException { |
|
148 | // invoke by body just in case some nested tag configures me |
|
149 | 0 | invokeBody(output); |
150 | ||
151 | 0 | final Widget parent = getParentWidget(); |
152 | ||
153 | 0 | if (parent == null) { |
154 | 0 | throw new JellyTagException( |
155 | "This tag must be nested within a Widget or a Window" |
|
156 | ); |
|
157 | } |
|
158 | ||
159 | 0 | if (var == null) { |
160 | 0 | throw new JellyTagException("This tag requires a context variable name"); |
161 | } |
|
162 | ||
163 | 0 | if (type == null) { |
164 | 0 | throw new JellyTagException("This tag requires a font type name"); |
165 | } |
|
166 | ||
167 | 0 | if (size <= 0) { |
168 | 0 | throw new JellyTagException("This tag requires a font size greater than 0"); |
169 | } |
|
170 | ||
171 | 0 | if (style == null) { |
172 | 0 | if (log.isDebugEnabled()) { |
173 | 0 | log.debug("No style set on font " + type + ", defaulting to normal"); |
174 | } |
|
175 | } |
|
176 | ||
177 | 0 | final Font font = |
178 | new Font( |
|
179 | parent.getDisplay(), |
|
180 | type, |
|
181 | size, |
|
182 | style == null ? SWT.NORMAL : SwtHelper.parseStyle(SWT.class, style) |
|
183 | ); |
|
184 | ||
185 | // store the Color in the context |
|
186 | 0 | context.setVariable(var, font); |
187 | 0 | } |
188 | } |
This report is generated by jcoverage, Maven and Maven JCoverage Plugin. |