]> source.dussan.org Git - vaadin-framework.git/commitdiff
Protyping UIDL object
authorJoonas Lehtinen <joonas.lehtinen@itmill.com>
Tue, 5 Jun 2007 16:37:41 +0000 (16:37 +0000)
committerJoonas Lehtinen <joonas.lehtinen@itmill.com>
Tue, 5 Jun 2007 16:37:41 +0000 (16:37 +0000)
svn changeset:1606/svn branch:trunk

src/com/itmill/toolkit/terminal/gwt/client/Paintable.java [new file with mode: 0644]
src/com/itmill/toolkit/terminal/gwt/client/UIDL.java [new file with mode: 0644]

diff --git a/src/com/itmill/toolkit/terminal/gwt/client/Paintable.java b/src/com/itmill/toolkit/terminal/gwt/client/Paintable.java
new file mode 100644 (file)
index 0000000..38766b2
--- /dev/null
@@ -0,0 +1,8 @@
+package com.itmill.toolkit.terminal.gwt.client;
+
+import com.google.gwt.xml.client.Node;
+
+public interface Paintable {
+
+       public void updateFromUidl(UIDL uidl);
+}
diff --git a/src/com/itmill/toolkit/terminal/gwt/client/UIDL.java b/src/com/itmill/toolkit/terminal/gwt/client/UIDL.java
new file mode 100644 (file)
index 0000000..8830366
--- /dev/null
@@ -0,0 +1,78 @@
+package com.itmill.toolkit.terminal.gwt.client;
+
+import java.util.Iterator;
+import java.util.Set;
+
+import com.google.gwt.json.client.JSONArray;
+import com.google.gwt.json.client.JSONObject;
+import com.google.gwt.json.client.JSONString;
+
+public class UIDL {
+
+       JSONObject json;
+       
+       public UIDL(JSONObject json) {
+               this.json = json;
+       }
+       
+       public int getId() {
+               String id = getAttribute("id");
+               if (id==null) return -1;
+               return Integer.parseInt(id);
+       }
+       
+       public String getTag() {
+               Set keys = json.keySet();
+               if (keys.size() != 1) 
+                       throw new IllegalStateException("Expected JSON Object to contain exactly one key, now contains "+ json.keySet());
+               return "" + keys.iterator().next();
+       }
+       
+       public String getAttribute(String name) {
+               JSONObject attrs = (JSONObject) json.get("attr");
+               if (attrs == null) return null;
+               return ""+ attrs.get(name);
+       }
+       
+       public Iterator getChildIterator() {
+               
+               return new Iterator() {
+                       
+                       JSONArray children = (JSONArray) ((JSONObject)json.get(getTag())).get("children");
+                       int index=0;
+               
+                       public void remove() {
+                               throw new UnsupportedOperationException();
+                       }
+               
+                       public Object next() {
+                               
+                               if (children != null)
+                                       return new UIDL((JSONObject)children.get(index++));
+                               return null;
+                       }
+               
+                       public boolean hasNext() {
+                               return children != null && children.size() > index;
+                       }
+               
+               };
+       }
+       
+       public String toString() {
+               String s = "<"+getTag()+ " ";
+               
+               s +="id="+getId();
+               s += ">\n";
+
+               Iterator i = getChildIterator();
+               while (i.hasNext()) {
+                       UIDL c = (UIDL) i.next();
+                       s += c.toString();
+               }
+
+               s += "</"+getTag()+">\n";
+               
+               return s;
+       }
+}