From 92ef91d9b2991c6bce84175aa1eebe6658e52431 Mon Sep 17 00:00:00 2001 From: Matti Tahvonen Date: Thu, 7 Jun 2007 08:18:28 +0000 Subject: [PATCH] implemented a niced uidl presentation, implemented GridLayout with FlexTable svn changeset:1632/svn branch:trunk --- .../toolkit/terminal/gwt/client/Client.java | 5 +- .../toolkit/terminal/gwt/client/Console.java | 4 + .../toolkit/terminal/gwt/client/UIDL.java | 76 ++++++++++++++----- .../terminal/gwt/client/ui/GridLayout.java | 15 ++-- 4 files changed, 73 insertions(+), 27 deletions(-) diff --git a/src/com/itmill/toolkit/terminal/gwt/client/Client.java b/src/com/itmill/toolkit/terminal/gwt/client/Client.java index 3ab9ef8ca4..3027b10740 100755 --- a/src/com/itmill/toolkit/terminal/gwt/client/Client.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/Client.java @@ -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) diff --git a/src/com/itmill/toolkit/terminal/gwt/client/Console.java b/src/com/itmill/toolkit/terminal/gwt/client/Console.java index 15ac7b4c5e..2e39e9e8ed 100755 --- a/src/com/itmill/toolkit/terminal/gwt/client/Console.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/Console.java @@ -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()); + } } diff --git a/src/com/itmill/toolkit/terminal/gwt/client/UIDL.java b/src/com/itmill/toolkit/terminal/gwt/client/UIDL.java index 43df8e52a9..6f86696cba 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/UIDL.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/UIDL.java @@ -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; diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/GridLayout.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/GridLayout.java index 6260ee9ebb..b61a53aabd 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/GridLayout.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/GridLayout.java @@ -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); } } } -- 2.39.5