]> source.dussan.org Git - vaadin-framework.git/commitdiff
#3940 Setter for CustomLayout template contents
authorHenri Sara <henri.sara@itmill.com>
Tue, 19 Jan 2010 09:35:44 +0000 (09:35 +0000)
committerHenri Sara <henri.sara@itmill.com>
Tue, 19 Jan 2010 09:35:44 +0000 (09:35 +0000)
svn changeset:10800/svn branch:6.3

src/com/vaadin/ui/CustomLayout.java

index cae427763c991c591d5e37c6674d182984709a75..26495a3715f9ec80e5767e60501c1992ce7fbea3 100644 (file)
@@ -1,19 +1,19 @@
-/* 
+/*
 @ITMillApache2LicenseForJavaFiles@
  */
 
 package com.vaadin.ui;
 
-import com.vaadin.terminal.PaintException;
-import com.vaadin.terminal.PaintTarget;
-import com.vaadin.terminal.gwt.client.ui.VCustomLayout;
-
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.util.HashMap;
 import java.util.Iterator;
 
+import com.vaadin.terminal.PaintException;
+import com.vaadin.terminal.PaintTarget;
+import com.vaadin.terminal.gwt.client.ui.VCustomLayout;
+
 /**
  * <p>
  * A container component with freely designed layout and style. The layout
@@ -37,6 +37,8 @@ import java.util.Iterator;
  * </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
@@ -56,6 +58,14 @@ public class CustomLayout extends AbstractLayout {
 
     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.
      * 
@@ -68,10 +78,24 @@ public class CustomLayout extends AbstractLayout {
      * @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;
@@ -85,19 +109,6 @@ public class CustomLayout extends AbstractLayout {
         }
 
         templateContents = b.toString();
-        setWidth(100, UNITS_PERCENTAGE);
-    }
-
-    /**
-     * Constructor for custom layout with given template name. Template file is
-     * fetched from VAADIN/themes/themename/layouts/templatename.html - see
-     * {@link #setTemplateName(String)} for details.
-     * 
-     * @see #setTemplateName(String)
-     */
-    public CustomLayout(String template) {
-        templateName = template;
-        setWidth(100, UNITS_PERCENTAGE);
     }
 
     /**
@@ -249,7 +260,9 @@ public class CustomLayout extends AbstractLayout {
      * 
      * @param name
      *            template name
+     * @deprecated Use {@link #setTemplateName(String)} instead
      */
+    @Deprecated
     @Override
     public void setStyle(String name) {
         setTemplateName(name);
@@ -260,6 +273,11 @@ public class CustomLayout extends AbstractLayout {
         return templateName;
     }
 
+    /** Get the contents of the template */
+    public String getTemplateContents() {
+        return templateContents;
+    }
+
     /**
      * Set the name of the template used to draw custom layout.
      * 
@@ -275,6 +293,17 @@ public class CustomLayout extends AbstractLayout {
         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