]> source.dussan.org Git - vaadin-framework.git/commitdiff
replaced(depracated) paintReference with addAttribute(String,Paintable) and added...
authorMatti Tahvonen <matti.tahvonen@itmill.com>
Mon, 14 Dec 2009 14:04:09 +0000 (14:04 +0000)
committerMatti Tahvonen <matti.tahvonen@itmill.com>
Mon, 14 Dec 2009 14:04:09 +0000 (14:04 +0000)
fixes #3654, #2854

svn changeset:10286/svn branch:6.2

src/com/vaadin/terminal/PaintTarget.java
src/com/vaadin/terminal/gwt/client/UIDL.java
src/com/vaadin/terminal/gwt/client/ui/VView.java
src/com/vaadin/terminal/gwt/server/JsonPaintTarget.java
src/com/vaadin/ui/Window.java

index 725d82dcab9535281606e9bd51a98dff74df6add..7bfc3555fc5763e2e44e5589dd2f09c20e209f45 100644 (file)
@@ -63,8 +63,9 @@ public interface PaintTarget extends Serializable {
      * is meant to enable component interactions on client side. With reference
      * the client side component can communicate directly to other component.
      * 
-     * Note! This is still an experimental feature and API is likely to change
-     * in future.
+     * Note! This was experimental api and got replaced by
+     * {@link #addAttribute(String, Paintable)} and
+     * {@link #addVariable(VariableOwner, String, Paintable)}.
      * 
      * @param paintable
      *            the Paintable to reference
@@ -72,7 +73,11 @@ public interface PaintTarget extends Serializable {
      * @throws PaintException
      * 
      * @since 5.2
+     * @deprecated use {@link #addAttribute(String, Paintable)} or
+     *             {@link #addVariable(VariableOwner, String, Paintable)}
+     *             instead
      */
+    @Deprecated
     public void paintReference(Paintable paintable, String referenceName)
             throws PaintException;
 
@@ -212,6 +217,20 @@ public interface PaintTarget extends Serializable {
     public void addAttribute(String name, Map<?, ?> value)
             throws PaintException;
 
+    /**
+     * Adds a Paintable type attribute. On client side the value will be a
+     * terminal specific reference to corresponding component on client side
+     * implementation.
+     * 
+     * @param name
+     *            the name of the attribute
+     * @param value
+     *            the Paintable to be referenced on client side
+     * @throws PaintException
+     */
+    public void addAttribute(String name, Paintable value)
+            throws PaintException;
+
     /**
      * Adds a string type variable.
      * 
@@ -324,6 +343,26 @@ public interface PaintTarget extends Serializable {
     public void addVariable(VariableOwner owner, String name, String[] value)
             throws PaintException;
 
+    /**
+     * Adds a Paintable type variable. On client side the variable value will be
+     * a terminal specific reference to corresponding component on client side
+     * implementation. When updated from client side, terminal will map the
+     * client side component reference back to a corresponding server side
+     * reference.
+     * 
+     * @param owner
+     *            the Listener for variable changes
+     * @param name
+     *            the name of the variable
+     * @param value
+     *            the initial value of the variable
+     * 
+     * @throws PaintException
+     *             if the paint oparation fails
+     */
+    public void addVariable(VariableOwner owner, String name, Paintable value)
+            throws PaintException;
+
     /**
      * Adds a upload stream type variable.
      * 
index f2e85e9979ec87c9bcc94e1e52963cf8ee16afb2..5c4c69e6871901076461b6d65a999a550f99faab 100644 (file)
@@ -276,4 +276,14 @@ public final class UIDL extends JavaScriptObject {
         return typeof this[1][name] == "object";
     }-*/;
 
+    public Paintable getPaintableAttribute(String name,
+            ApplicationConnection connection) {
+        return connection.getPaintable(getStringAttribute(name));
+    }
+
+    public Paintable getPaintableVariable(String name,
+            ApplicationConnection connection) {
+        return connection.getPaintable(getStringVariable(name));
+    }
+
 }
index 89113398c928dc283202973c3867672ae2f5d4c4..c5e81b82f67b9142751aadbdb7e676a3d58e1d76 100644 (file)
@@ -170,7 +170,7 @@ public class VView extends SimplePanel implements Container, ResizeHandler,
                 .contains(ApplicationConnection.GENERATED_BODY_CLASSNAME);
     }
 
-    public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
+    public void updateFromUIDL(final UIDL uidl, ApplicationConnection client) {
         rendering = true;
 
         id = uidl.getId();
@@ -348,12 +348,11 @@ public class VView extends SimplePanel implements Container, ResizeHandler,
         }
 
         if (uidl.hasAttribute("focused")) {
-            final String focusPid = uidl.getStringAttribute("focused");
             // set focused component when render phase is finished
             DeferredCommand.addCommand(new Command() {
                 public void execute() {
-                    final Paintable toBeFocused = connection
-                            .getPaintable(focusPid);
+                    final Paintable toBeFocused = uidl.getPaintableAttribute(
+                            "focused", connection);
 
                     /*
                      * Two types of Widgets can be focused, either implementing
index 7a653e93e9f001dffd43260d09564c44622e5b1a..8128e99f004e574d25ac31d77f0d3943e9f8dd93 100644 (file)
@@ -77,7 +77,7 @@ public class JsonPaintTarget implements PaintTarget {
 
     /**
      * Creates a new XMLPrintWriter, without automatic line flushing.
-     *
+     * 
      * @param variableMap
      * @param manager
      * @param outWriter
@@ -85,8 +85,9 @@ public class JsonPaintTarget implements PaintTarget {
      * @throws PaintException
      *             if the paint operation failed.
      */
-    public JsonPaintTarget(AbstractCommunicationManager manager, PrintWriter outWriter,
-            boolean cachingRequired) throws PaintException {
+    public JsonPaintTarget(AbstractCommunicationManager manager,
+            PrintWriter outWriter, boolean cachingRequired)
+            throws PaintException {
 
         this.manager = manager;
 
@@ -105,18 +106,18 @@ public class JsonPaintTarget implements PaintTarget {
 
     /**
      * Prints the element start tag.
-     *
+     * 
      * <pre>
      *   Todo:
      *    Checking of input values
-     *
+     * 
      * </pre>
-     *
+     * 
      * @param tagName
      *            the name of the start tag.
      * @throws PaintException
      *             if the paint operation failed.
-     *
+     * 
      */
     public void startTag(String tagName, boolean isChildNode)
             throws PaintException {
@@ -149,10 +150,10 @@ public class JsonPaintTarget implements PaintTarget {
 
     /**
      * Prints the element end tag.
-     *
+     * 
      * If the parent tag is closed before every child tag is closed an
      * PaintException is raised.
-     *
+     * 
      * @param tag
      *            the name of the end tag.
      * @throws Paintexception
@@ -205,7 +206,7 @@ public class JsonPaintTarget implements PaintTarget {
 
     /**
      * Substitutes the XML sensitive characters with predefined XML entities.
-     *
+     * 
      * @param xml
      *            the String to be substituted.
      * @return A new string instance where all occurrences of XML sensitive
@@ -220,12 +221,12 @@ public class JsonPaintTarget implements PaintTarget {
 
     /**
      * Substitutes the XML sensitive characters with predefined XML entities.
-     *
+     * 
      * @param xml
      *            the String to be substituted.
      * @return A new StringBuilder instance where all occurrences of XML
      *         sensitive characters are substituted with entities.
-     *
+     * 
      */
     static StringBuilder escapeXML(StringBuilder xml) {
         if (xml == null || xml.length() <= 0) {
@@ -296,7 +297,7 @@ public class JsonPaintTarget implements PaintTarget {
 
     /**
      * Substitutes a XML sensitive character with predefined XML entity.
-     *
+     * 
      * @param c
      *            the Character to be replaced with an entity.
      * @return String of the entity or null if character is not to be replaced
@@ -321,43 +322,20 @@ public class JsonPaintTarget implements PaintTarget {
 
     /**
      * Prints XML-escaped text.
-     *
+     * 
      * @param str
      * @throws PaintException
      *             if the paint operation failed.
-     *
+     * 
      */
     public void addText(String str) throws PaintException {
         tag.addData("\"" + escapeJSON(str) + "\"");
     }
 
-    /**
-     * Adds a boolean attribute to component. Atributes must be added before any
-     * content is written.
-     *
-     * @param name
-     *            the Attribute name.
-     * @param value
-     *            the Attribute value.
-     * @throws PaintException
-     *             if the paint operation failed.
-     */
     public void addAttribute(String name, boolean value) throws PaintException {
         tag.addAttribute("\"" + name + "\":" + (value ? "true" : "false"));
     }
 
-    /**
-     * Adds a resource attribute to component. Attributes must be added before
-     * any content is written.
-     *
-     * @param name
-     *            the Attribute name.
-     * @param value
-     *            the Attribute value.
-     *
-     * @throws PaintException
-     *             if the paint operation failed.
-     */
     public void addAttribute(String name, Resource value) throws PaintException {
 
         if (value instanceof ExternalResource) {
@@ -395,82 +373,22 @@ public class JsonPaintTarget implements PaintTarget {
 
     }
 
-    /**
-     * Adds a integer attribute to component. Atributes must be added before any
-     * content is written.
-     *
-     * @param name
-     *            the Attribute name.
-     * @param value
-     *            the Attribute value.
-     *
-     * @throws PaintException
-     *             if the paint operation failed.
-     */
     public void addAttribute(String name, int value) throws PaintException {
         tag.addAttribute("\"" + name + "\":" + String.valueOf(value));
     }
 
-    /**
-     * Adds a long attribute to component. Atributes must be added before any
-     * content is written.
-     *
-     * @param name
-     *            the Attribute name.
-     * @param value
-     *            the Attribute value.
-     *
-     * @throws PaintException
-     *             if the paint operation failed.
-     */
     public void addAttribute(String name, long value) throws PaintException {
         tag.addAttribute("\"" + name + "\":" + String.valueOf(value));
     }
 
-    /**
-     * Adds a float attribute to component. Atributes must be added before any
-     * content is written.
-     *
-     * @param name
-     *            the Attribute name.
-     * @param value
-     *            the Attribute value.
-     *
-     * @throws PaintException
-     *             if the paint operation failed.
-     */
     public void addAttribute(String name, float value) throws PaintException {
         tag.addAttribute("\"" + name + "\":" + String.valueOf(value));
     }
 
-    /**
-     * Adds a double attribute to component. Atributes must be added before any
-     * content is written.
-     *
-     * @param name
-     *            the Attribute name.
-     * @param value
-     *            the Attribute value.
-     *
-     * @throws PaintException
-     *             if the paint operation failed.
-     */
     public void addAttribute(String name, double value) throws PaintException {
         tag.addAttribute("\"" + name + "\":" + String.valueOf(value));
     }
 
-    /**
-     * Adds a string attribute to component. Atributes must be added before any
-     * content is written.
-     *
-     * @param name
-     *            the String attribute name.
-     * @param value
-     *            the String attribute value.
-     *
-     * @throws PaintException
-     *             if the paint operation failed.
-     */
     public void addAttribute(String name, String value) throws PaintException {
         // In case of null data output nothing:
         if ((value == null) || (name == null)) {
@@ -490,6 +408,12 @@ public class JsonPaintTarget implements PaintTarget {
 
     }
 
+    public void addAttribute(String name, Paintable value)
+            throws PaintException {
+        final String id = getPaintIdentifier(value);
+        addAttribute(name, id);
+    }
+
     public void addAttribute(String name, Map<?, ?> value)
             throws PaintException {
 
@@ -548,127 +472,42 @@ public class JsonPaintTarget implements PaintTarget {
         tag.addAttribute(buf.toString());
     }
 
-    /**
-     * Adds a string type variable.
-     *
-     * @param owner
-     *            the Listener for variable changes.
-     * @param name
-     *            the Variable name.
-     * @param value
-     *            the Variable initial value.
-     *
-     * @throws PaintException
-     *             if the paint operation failed.
-     */
     public void addVariable(VariableOwner owner, String name, String value)
             throws PaintException {
         tag.addVariable(new StringVariable(owner, name, escapeJSON(value)));
     }
 
-    /**
-     * Adds a int type variable.
-     *
-     * @param owner
-     *            the Listener for variable changes.
-     * @param name
-     *            the Variable name.
-     * @param value
-     *            the Variable initial value.
-     *
-     * @throws PaintException
-     *             if the paint operation failed.
-     */
+    public void addVariable(VariableOwner owner, String name, Paintable value)
+            throws PaintException {
+        tag.addVariable(new StringVariable(owner, name,
+                getPaintIdentifier(value)));
+    }
+
     public void addVariable(VariableOwner owner, String name, int value)
             throws PaintException {
         tag.addVariable(new IntVariable(owner, name, value));
     }
 
-    /**
-     * Adds a long type variable.
-     *
-     * @param owner
-     *            the Listener for variable changes.
-     * @param name
-     *            the Variable name.
-     * @param value
-     *            the Variable initial value.
-     *
-     * @throws PaintException
-     *             if the paint operation failed.
-     */
     public void addVariable(VariableOwner owner, String name, long value)
             throws PaintException {
         tag.addVariable(new LongVariable(owner, name, value));
     }
 
-    /**
-     * Adds a float type variable.
-     *
-     * @param owner
-     *            the Listener for variable changes.
-     * @param name
-     *            the Variable name.
-     * @param value
-     *            the Variable initial value.
-     *
-     * @throws PaintException
-     *             if the paint operation failed.
-     */
     public void addVariable(VariableOwner owner, String name, float value)
             throws PaintException {
         tag.addVariable(new FloatVariable(owner, name, value));
     }
 
-    /**
-     * Adds a double type variable.
-     *
-     * @param owner
-     *            the Listener for variable changes.
-     * @param name
-     *            the Variable name.
-     * @param value
-     *            the Variable initial value.
-     *
-     * @throws PaintException
-     *             if the paint operation failed.
-     */
     public void addVariable(VariableOwner owner, String name, double value)
             throws PaintException {
         tag.addVariable(new DoubleVariable(owner, name, value));
     }
 
-    /**
-     * Adds a boolean type variable.
-     *
-     * @param owner
-     *            the Listener for variable changes.
-     * @param name
-     *            the Variable name.
-     * @param value
-     *            the Variable initial value.
-     *
-     * @throws PaintException
-     *             if the paint operation failed.
-     */
     public void addVariable(VariableOwner owner, String name, boolean value)
             throws PaintException {
         tag.addVariable(new BooleanVariable(owner, name, value));
     }
 
-    /**
-     * Adds a string array type variable.
-     *
-     * @param owner
-     *            the Listener for variable changes.
-     * @param name
-     *            the Variable name.
-     * @param value
-     *            the Variable initial value.
-     *
-     * @throws PaintException
-     *             if the paint operation failed.
-     */
     public void addVariable(VariableOwner owner, String name, String[] value)
             throws PaintException {
         tag.addVariable(new ArrayVariable(owner, name, value));
@@ -676,14 +515,14 @@ public class JsonPaintTarget implements PaintTarget {
 
     /**
      * Adds a upload stream type variable.
-     *
+     * 
      * TODO not converted for JSON
-     *
+     * 
      * @param owner
      *            the Listener for variable changes.
      * @param name
      *            the Variable name.
-     *
+     * 
      * @throws PaintException
      *             if the paint operation failed.
      */
@@ -696,9 +535,9 @@ public class JsonPaintTarget implements PaintTarget {
 
     /**
      * Prints the single text section.
-     *
+     * 
      * Prints full text section. The section data is escaped
-     *
+     * 
      * @param sectionTagName
      *            the name of the tag.
      * @param sectionData
@@ -714,7 +553,7 @@ public class JsonPaintTarget implements PaintTarget {
 
     /**
      * Adds XML directly to UIDL.
-     *
+     * 
      * @param xml
      *            the Xml to be added.
      * @throws PaintException
@@ -740,7 +579,7 @@ public class JsonPaintTarget implements PaintTarget {
 
     /**
      * Adds XML section with namespace.
-     *
+     * 
      * @param sectionTagName
      *            the name of the tag.
      * @param sectionData
@@ -749,7 +588,7 @@ public class JsonPaintTarget implements PaintTarget {
      *            the namespace to be added.
      * @throws PaintException
      *             if the paint operation failed.
-     *
+     * 
      * @see com.vaadin.terminal.PaintTarget#addXMLSection(String, String,
      *      String)
      */
@@ -776,7 +615,7 @@ public class JsonPaintTarget implements PaintTarget {
     /**
      * Gets the UIDL already printed to stream. Paint target must be closed
      * before the <code>getUIDL</code> can be called.
-     *
+     * 
      * @return the UIDL.
      */
     public String getUIDL() {
@@ -792,7 +631,7 @@ public class JsonPaintTarget implements PaintTarget {
      * <code>getUIDL</code> can be called. Subsequent attempts to write to paint
      * target. If the target was already closed, call to this function is
      * ignored. will generate an exception.
-     *
+     * 
      * @throws PaintException
      *             if the paint operation failed.
      */
@@ -813,7 +652,7 @@ public class JsonPaintTarget implements PaintTarget {
 
     /*
      * (non-Javadoc)
-     *
+     * 
      * @see com.vaadin.terminal.PaintTarget#startTag(com.vaadin.terminal
      * .Paintable, java.lang.String)
      */
@@ -853,7 +692,7 @@ public class JsonPaintTarget implements PaintTarget {
 
     /*
      * (non-Javadoc)
-     *
+     * 
      * @see com.vaadin.terminal.PaintTarget#addCharacterData(java.lang.String )
      */
     public void addCharacterData(String text) throws PaintException {
@@ -865,9 +704,9 @@ public class JsonPaintTarget implements PaintTarget {
     /**
      * This is basically a container for UI components variables, that will be
      * added at the end of JSON object.
-     *
+     * 
      * @author mattitahvonen
-     *
+     * 
      */
     class JsonTag implements Serializable {
         boolean firstField = false;
@@ -938,7 +777,7 @@ public class JsonPaintTarget implements PaintTarget {
         }
 
         /**
-         *
+         * 
          * @param s
          *            json string, object or array
          */
@@ -1146,7 +985,7 @@ public class JsonPaintTarget implements PaintTarget {
 
     /**
      * Method to check if paintable is already painted into this target.
-     *
+     * 
      * @param p
      * @return true if is not yet painted into this target and is connected to
      *         app
index 989ea099036d545791792c340e00b80cd05f5dbc..ad6ff57d6cabd2514641f5e26870cc1a2cc19dd6 100644 (file)
@@ -593,7 +593,7 @@ public class Window extends Panel implements URIHandler, ParameterHandler {
             if (pendingFocus.getWindow() == this
                     || (pendingFocus.getWindow() != null && pendingFocus
                             .getWindow().getParent() == this)) {
-                target.paintReference(pendingFocus, "focused");
+                target.addAttribute("focused", pendingFocus);
             }
             pendingFocus = null;
         }