From d961a7912641890ffefd21c4a2c6366936876133 Mon Sep 17 00:00:00 2001 From: Joonas Lehtinen Date: Wed, 6 Jun 2007 17:17:59 +0000 Subject: [PATCH] Now Calculator works! svn changeset:1630/svn branch:trunk --- .../toolkit/terminal/gwt/client/Client.java | 2 +- .../gwt/client/DefaultWidgetFactory.java | 3 ++ .../terminal/gwt/client/ui/Button.java | 19 ++++++++-- .../terminal/gwt/client/ui/GridLayout.java | 35 +++++++++++++++++++ .../terminal/gwt/client/ui/OrderedLayout.java | 4 +-- 5 files changed, 58 insertions(+), 5 deletions(-) create mode 100644 src/com/itmill/toolkit/terminal/gwt/client/ui/GridLayout.java diff --git a/src/com/itmill/toolkit/terminal/gwt/client/Client.java b/src/com/itmill/toolkit/terminal/gwt/client/Client.java index f3ac00f863..3ab9ef8ca4 100755 --- a/src/com/itmill/toolkit/terminal/gwt/client/Client.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/Client.java @@ -23,7 +23,7 @@ import com.google.gwt.user.client.ui.Widget; */ public class Client implements EntryPoint { - private String appUri = "http://127.0.0.1:8080/tk/HelloWorld"; + private String appUri = "http://127.0.0.1:8080/tk/Calc"; // TODO remove repaintAll things start to pile up private RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, appUri diff --git a/src/com/itmill/toolkit/terminal/gwt/client/DefaultWidgetFactory.java b/src/com/itmill/toolkit/terminal/gwt/client/DefaultWidgetFactory.java index 2e80534f38..03fae65441 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/DefaultWidgetFactory.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/DefaultWidgetFactory.java @@ -2,6 +2,7 @@ package com.itmill.toolkit.terminal.gwt.client; import com.google.gwt.user.client.ui.Widget; import com.itmill.toolkit.terminal.gwt.client.ui.Button; +import com.itmill.toolkit.terminal.gwt.client.ui.GridLayout; import com.itmill.toolkit.terminal.gwt.client.ui.Label; import com.itmill.toolkit.terminal.gwt.client.ui.OrderedLayout; import com.itmill.toolkit.terminal.gwt.client.ui.Window; @@ -18,6 +19,8 @@ public class DefaultWidgetFactory implements WidgetFactory { return new OrderedLayout(); if ("label".equals(tag)) return new Label(); + if ("gridlayout".equals(tag)) + return new GridLayout(); return null; } diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/Button.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/Button.java index 4443dc6cf3..342e751666 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/Button.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/Button.java @@ -1,16 +1,31 @@ package com.itmill.toolkit.terminal.gwt.client.ui; +import com.google.gwt.user.client.ui.ClickListener; +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 Button extends com.google.gwt.user.client.ui.Button implements Paintable { +public class Button extends com.google.gwt.user.client.ui.Button implements + Paintable, ClickListener { String id; - + + Client client; + + public Button() { + addClickListener(this); + } + public void updateFromUIDL(UIDL uidl, Client client) { + this.client = client; id = uidl.getId(); setText(uidl.getStringAttribute("caption")); } + public void onClick(Widget sender) { + if (id == null || client == null) + return; + client.updateVariable(id, "state", true, true); + } } diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/GridLayout.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/GridLayout.java new file mode 100644 index 0000000000..6260ee9ebb --- /dev/null +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/GridLayout.java @@ -0,0 +1,35 @@ +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.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 void updateFromUIDL(UIDL uidl, Client client) { + clear(); + if (uidl.hasAttribute("caption")) setTitle(uidl.getStringAttribute("caption")); + for (Iterator i = uidl.getChildIterator(); i.hasNext();) { + UIDL r = (UIDL) i.next(); + if ("gr".equals(r.getTag())) { + HorizontalPanel row = new HorizontalPanel(); + add(row); + for (Iterator j = r.getChildIterator(); j.hasNext();) { + UIDL c = (UIDL) j.next(); + if ("gc".equals(c.getTag())) { + UIDL u = c.getChildUIDL(0); + Widget child = client.createWidgetFromUIDL(u); + if (child != null) + row.add(child); + } + } + } + } + } + +} diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/OrderedLayout.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/OrderedLayout.java index 7b8c7a328c..b0a5aec571 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/OrderedLayout.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/OrderedLayout.java @@ -2,13 +2,13 @@ package com.itmill.toolkit.terminal.gwt.client.ui; import java.util.Iterator; -import com.google.gwt.user.client.ui.FlowPanel; +import com.google.gwt.user.client.ui.VerticalPanel; 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 OrderedLayout extends FlowPanel implements Paintable { +public class OrderedLayout extends VerticalPanel implements Paintable { public void updateFromUIDL(UIDL uidl, Client client) { clear(); -- 2.39.5