-/*
+/*
@ITMillApache2LicenseForJavaFiles@
*/
* </p>
*
* @author IT Mill Ltd.
+ * @author Duy B. Vo (<a
+ * href="mailto:devduy@gmail.com?subject=Vaadin">devduy@gmail.com</a>)
* @version
* @VERSION@
* @since 3.0
private String templateName = null;
+ /**
+ * Default constructor only used by subclasses because the subclasses are
+ * responsible for setting the appropriate fields.
+ */
+ protected CustomLayout() {
+ setWidth(100, UNITS_PERCENTAGE);
+ }
+
/**
* Constructs a custom layout with the template given in the stream.
*
* @throws IOException
*/
public CustomLayout(InputStream templateStream) throws IOException {
+ this();
+ initTemplateContentsFromInputStream(templateStream);
+ }
+
+ /**
+ * Constructor for custom layout with given template name. Template file is
+ * fetched from "<theme>/layout/<templateName>".
+ */
+ public CustomLayout(String template) {
+ this();
+ templateName = template;
+ }
+ protected void initTemplateContentsFromInputStream(
+ InputStream templateStream) throws IOException {
InputStreamReader reader = new InputStreamReader(templateStream,
"UTF-8");
- StringBuffer b = new StringBuffer(BUFFER_SIZE);
+ StringBuilder b = new StringBuilder(BUFFER_SIZE);
char[] cbuf = new char[BUFFER_SIZE];
int offset = 0;
}
templateContents = b.toString();
- setWidth(100, UNITS_PERCENTAGE);
- }
-
- /**
- * Constructor for custom layout with given template name. Template file is
- * fetched from "<theme>/layout/<templateName>".
- */
- public CustomLayout(String template) {
- templateName = template;
- setWidth(100, UNITS_PERCENTAGE);
}
/**
*
* @param name
* template name
+ * @deprecated Use {@link #setTemplateName(String)} instead
*/
+ @Deprecated
@Override
public void setStyle(String name) {
setTemplateName(name);
return templateName;
}
+ /** Get the contents of the template */
+ public String getTemplateContents() {
+ return templateContents;
+ }
+
/**
* Set the name of the template used to draw custom layout.
*
requestRepaint();
}
+ /**
+ * Set the contents of the template used to draw the custom layout.
+ *
+ * @param templateContents
+ */
+ public void setTemplateContents(String templateContents) {
+ this.templateContents = templateContents;
+ templateName = null;
+ requestRepaint();
+ }
+
/**
* Although most layouts support margins, CustomLayout does not. The
* behaviour of this layout is determined almost completely by the actual