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&");
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)
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 {
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;
}
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;
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);
}
}
}