]> source.dussan.org Git - vaadin-framework.git/commitdiff
implemented a niced uidl presentation, implemented GridLayout with FlexTable
authorMatti Tahvonen <matti.tahvonen@itmill.com>
Thu, 7 Jun 2007 08:18:28 +0000 (08:18 +0000)
committerMatti Tahvonen <matti.tahvonen@itmill.com>
Thu, 7 Jun 2007 08:18:28 +0000 (08:18 +0000)
svn changeset:1632/svn branch:trunk

src/com/itmill/toolkit/terminal/gwt/client/Client.java
src/com/itmill/toolkit/terminal/gwt/client/Console.java
src/com/itmill/toolkit/terminal/gwt/client/UIDL.java
src/com/itmill/toolkit/terminal/gwt/client/ui/GridLayout.java

index 3ab9ef8ca4706ce26340abacd524d3279b8049b8..3027b10740f42147f5aefd11043ddb0b7ea56798 100755 (executable)
@@ -25,7 +25,7 @@ public class Client implements EntryPoint {
 
        private String appUri = "http://127.0.0.1:8080/tk/Calc";
 
-       // TODO remove repaintAll things start to pile up
+       // TODO remove repaintAll until things start to pile up
        private RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, appUri
                        + "/UIDL/?repaintAll=1&");
 
@@ -102,7 +102,8 @@ public class Client implements EntryPoint {
                for (int i = 0; i < changes.size(); i++) {
                        try {
                                UIDL change = new UIDL((JSONArray) changes.get(i));
-                               console.log("Received the following change: " + change);
+                               console.log("Received the following change: ");
+                               console.dirUIDL(change);
                                UIDL uidl = change.getChildUIDL(0);
                                Paintable paintable = getPaintable(uidl.getId());
                                if (paintable != null)
index 15ac7b4c5e8ae2d00d77d086f2e9adac08974263..2e39e9e8ed4a0d3f10af8022b9da3a311cc9b953 100755 (executable)
@@ -22,4 +22,8 @@ public final class Console {
        public void printObject(Object msg) {
                rp.add((new Label(msg.toString())));
        }
+       
+       public void dirUIDL(UIDL u) {
+               rp.add(u.print_r());
+       }
 }
index 43df8e52a9b9fcd353028963f525141d4fa31d3f..6f86696cba230c11d99060d7af48bd23c39cd8a4 100644 (file)
@@ -10,6 +10,8 @@ import com.google.gwt.json.client.JSONNumber;
 import com.google.gwt.json.client.JSONObject;
 import com.google.gwt.json.client.JSONString;
 import com.google.gwt.json.client.JSONValue;
+import com.google.gwt.user.client.ui.Tree;
+import com.google.gwt.user.client.ui.TreeItem;
 
 public class UIDL {
 
@@ -66,6 +68,15 @@ public class UIDL {
                return ((JSONBoolean) val).booleanValue();
        }
 
+       /**
+        * Get attributes value as string whateever the type is
+        * @param name
+        * @return string presentation of attribute
+        */
+       private String getAttribute(String name) {
+               return json.get(1).isObject().get(name).toString();
+       }
+
        public boolean hasAttribute(String name) {
                return ((JSONObject) json.get(1)).get(name) != null;
        }
@@ -143,45 +154,74 @@ public class UIDL {
                return s;
        }
 
-       public String getStringVariable(String name) {
+       public Tree print_r() {
+               Tree t = new Tree();
+               t.addItem(dir());
+               Iterator it = t.treeItemIterator();
+               while(it.hasNext())
+                       ((TreeItem) it.next()).setState(true);
+               return t;
+       }
+       
+       public TreeItem dir() {
+               
+               TreeItem item = new TreeItem(getTag());
+               TreeItem tmp = new TreeItem("attr");
+
+               for (Iterator i = getAttributeNames().iterator(); i.hasNext();) {
+                       String name = i.next().toString();
+                       String value = getAttribute(name);
+                       tmp.addItem(name + "=" + value);
+               }
+               item.addItem(tmp);
+               
+               tmp = new TreeItem("child nodes");
+
+               Iterator i = getChildIterator();
+               while (i.hasNext()) {
+                       try{
+                               UIDL c = (UIDL) i.next();
+                               tmp.addItem(c.dir());
+                               
+                       } catch (Exception e) {
+                               tmp.addItem("bööh");
+                       }
+               }
+               item.addItem(tmp);
+               return item;
+       }
+
+       private JSONObject getVariableHash() {
                JSONObject v = (JSONObject) ((JSONObject) json.get(1)).get("v");
                if (v == null)
                        throw new IllegalArgumentException(
-                                       "No variables defined in tag. (requested: " + name + ")");
-               JSONString t = (JSONString) v.get(name);
+                                       "No variables defined in tag.");
+               return v;
+       }
+
+       public String getStringVariable(String name) {
+               JSONString t = (JSONString) getVariableHash().get(name);
                if (t == null)
                        throw new IllegalArgumentException("No such variable: " + name);
                return t.stringValue();
        }
 
        public int getIntVariable(String name) {
-               JSONObject v = (JSONObject) ((JSONObject) json.get(1)).get("v");
-               if (v == null)
-                       throw new IllegalArgumentException(
-                                       "No variables defined in tag. (requested: " + name + ")");
-               JSONNumber t = (JSONNumber) v.get(name);
+               JSONNumber t = (JSONNumber) getVariableHash().get(name);
                if (t == null)
                        throw new IllegalArgumentException("No such variable: " + name);
                return (int) t.getValue();
        }
 
        public boolean getBooleanVariable(String name) {
-               JSONObject v = (JSONObject) ((JSONObject) json.get(1)).get("v");
-               if (v == null)
-                       throw new IllegalArgumentException(
-                                       "No variables defined in tag. (requested: " + name + ")");
-               JSONBoolean t = (JSONBoolean) v.get(name);
+               JSONBoolean t = (JSONBoolean) getVariableHash().get(name);
                if (t == null)
                        throw new IllegalArgumentException("No such variable: " + name);
                return t.booleanValue();
        }
 
        public JSONArray getArrayVariable(String name) {
-               JSONObject v = (JSONObject) ((JSONObject) json.get(1)).get("v");
-               if (v == null)
-                       throw new IllegalArgumentException(
-                                       "No variables defined in tag. (requested: " + name + ")");
-               JSONArray t = (JSONArray) v.get(name);
+               JSONArray t = (JSONArray) getVariableHash().get(name);
                if (t == null)
                        throw new IllegalArgumentException("No such variable: " + name);
                return t;
index 6260ee9ebbbb183761f00e3029f0db53ef303277..b61a53aabd8a1559143386fc668eaeacd7667a97 100644 (file)
@@ -2,30 +2,31 @@ package com.itmill.toolkit.terminal.gwt.client.ui;
 
 import java.util.Iterator;
 
-import com.google.gwt.user.client.ui.HorizontalPanel;
-import com.google.gwt.user.client.ui.VerticalPanel;
+import com.google.gwt.user.client.ui.FlexTable;
 import com.google.gwt.user.client.ui.Widget;
 import com.itmill.toolkit.terminal.gwt.client.Client;
 import com.itmill.toolkit.terminal.gwt.client.Paintable;
 import com.itmill.toolkit.terminal.gwt.client.UIDL;
 
-public class GridLayout extends VerticalPanel implements Paintable {
+public class GridLayout extends FlexTable implements Paintable {
 
        public void updateFromUIDL(UIDL uidl, Client client) {
                clear();
                if (uidl.hasAttribute("caption")) setTitle(uidl.getStringAttribute("caption"));
+               int row = 0, column = 0;
                for (Iterator i = uidl.getChildIterator(); i.hasNext();) {
                        UIDL r = (UIDL) i.next();
-                       if ("gr".equals(r.getTag())) { 
-                               HorizontalPanel row = new HorizontalPanel();
-                               add(row);
+                       if ("gr".equals(r.getTag())) {
+                               row++;
+                               column = 0;
                                for (Iterator j = r.getChildIterator(); j.hasNext();) {
                                        UIDL c = (UIDL) j.next();
                                        if ("gc".equals(c.getTag())) {
+                                               column++;
                                                UIDL u = c.getChildUIDL(0);                                             
                                                Widget child = client.createWidgetFromUIDL(u);
                                                if (child != null)
-                                                       row.add(child);
+                                                       setWidget(row, column, child);
                                        }
                                }
                        }