package com.itmill.toolkit.terminal.gwt.client;
+import com.itmill.toolkit.terminal.gwt.client.ui.Component;
+
public class BooleanVariable extends Variable {
private boolean value = true;
}
- void update() {
+ public void update() {
owner.getClient().updateVariable(this);
if(immediate)
owner.getClient().flushVariables();
import com.google.gwt.xml.client.Node;
import com.google.gwt.xml.client.NodeList;
import com.google.gwt.xml.client.XMLParser;
+import com.itmill.toolkit.terminal.gwt.client.ui.Component;
import com.itmill.toolkit.terminal.gwt.client.ui.RootWindow;
/**
+++ /dev/null
-package com.itmill.toolkit.terminal.gwt.client;
-
-import com.google.gwt.user.client.ui.Widget;
-import com.google.gwt.xml.client.Node;
-import com.itmill.toolkit.terminal.gwt.client.ui.ContainerComponent;
-import com.itmill.toolkit.terminal.gwt.client.ui.TkButton;
-import com.itmill.toolkit.terminal.gwt.client.ui.TkLabel;
-import com.itmill.toolkit.terminal.gwt.client.ui.TkLegacyComponent;
-import com.itmill.toolkit.terminal.gwt.client.ui.TkOrderedLayout;
-import com.itmill.toolkit.terminal.gwt.client.ui.TkTextField;
-import com.itmill.toolkit.terminal.gwt.client.ui.TkUnknown;
-
-public abstract class Component {
-
- private ContainerComponent parent;
- protected GwtClient client;
- private final int id;
-
- public Component(int id, GwtClient c) {
- client = c;
- this.id = id;
- }
-
- public abstract void updateFromUidl(Node n);
-
- public abstract Widget getWidget();
-
- public static boolean isComponent(String nodeName) {
- if(
- nodeName.equals("label") ||
- nodeName.equals("button") ||
- nodeName.equals("textfield") ||
- nodeName.equals("select") ||
- nodeName.equals("orderedlayout")
- ) return true;
- return false;
- }
-
- public static Component createComponent(Node uidl, GwtClient cli) {
- Component c = null;
- String nodeName = uidl.getNodeName();
- if(nodeName.equals("label")) {
- c = new TkLabel(uidl, cli);
- } else if(nodeName.equals("orderedlayout")) {
- c = new TkOrderedLayout(uidl, cli);
- } else if(nodeName.equals("button")) {
- c = new TkButton(uidl, cli);
- } else if(nodeName.equals("textfield")) {
- c = new TkTextField(uidl, cli);
- } else if(nodeName.equals("select")) {
- c = new TkLegacyComponent(uidl, cli);
- } else {
- c = new TkUnknown(uidl, cli);
- }
- return c;
- }
-
- public void appendTo(ContainerComponent cont) {
- this.parent = cont;
- getClient().registerComponent(this);
- cont.appendChild(this);
- }
-
- public ContainerComponent getParent() {
- return parent;
- }
-
- public GwtClient getClient() {
- if(client == null)
- client = parent.getClient();
- return client;
- }
-
- public static int getIdFromUidl(Node uidl) {
- Node pid = uidl.getAttributes().getNamedItem("id");
- return Integer.parseInt(pid.getNodeValue().substring(3));
- }
-
- public int getId() {
- return id;
- }
-
-}
+++ /dev/null
-package com.itmill.toolkit.terminal.gwt.client;
-
-import java.util.HashMap;
-import java.util.Vector;
-
-import com.google.gwt.core.client.EntryPoint;
-import com.google.gwt.http.client.Request;
-import com.google.gwt.http.client.RequestBuilder;
-import com.google.gwt.http.client.RequestCallback;
-import com.google.gwt.http.client.RequestException;
-import com.google.gwt.http.client.Response;
-import com.google.gwt.http.client.URL;
-import com.google.gwt.user.client.ui.RootPanel;
-import com.google.gwt.xml.client.Document;
-import com.google.gwt.xml.client.Node;
-import com.google.gwt.xml.client.NodeList;
-import com.google.gwt.xml.client.XMLParser;
-import com.itmill.toolkit.terminal.gwt.client.ui.RootWindow;
-
-/**
- * Entry point classes define <code>onModuleLoad()</code>.
- */
-public class GwtClient implements EntryPoint {
-
- private String appUri = "http://localhost:8080/tk/HelloWorld";
-
- // TODO remove repaintAll things start to pile up
- private RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, appUri + "/UIDL/?repaintAll=1&");
-
- private Console console;
-
- private RootWindow rw;
-
- private Vector pendingVariables = new Vector();
-
- private HashMap components = new HashMap();
-
- private int requestCount = 0;
-
- private LegacyClientWrapper lClient;
-
- /**
- * This is the entry point method.
- */
- public void onModuleLoad() {
-
- console = new Console(RootPanel.get("itmtk-loki"));
-
- console.log("muutos");
-
- console.log("Starting app");
-
- console.log("Makin fake UIDL Request to fool servlet of an app init");
- RequestBuilder rb2 = new RequestBuilder(RequestBuilder.GET, appUri);
- try {
- rb2.sendRequest("", new RequestCallback() {
-
- public void onResponseReceived(Request request, Response response) {
- console.log("Got fake response... sending initial UIDL request");
- makeUidlRequest("repaintAll=1");
- }
-
- public void onError(Request request, Throwable exception) {
- // TODO Auto-generated method stub
-
- }
-
- });
- } catch (RequestException e1) {
- // TODO Auto-generated catch block
- e1.printStackTrace();
- }
-
- }
-
- private void makeUidlRequest(String requestData) {
- console.log("Making UIDL Request");
- rb = new RequestBuilder(RequestBuilder.GET, appUri + "/UIDL/?requestId=" + (++requestCount) + "&" + requestData);
- try {
- rb.sendRequest(requestData, new RequestCallback() {
- public void onError(Request request, Throwable exception) {
- console.error("Got error");
- }
- public void onResponseReceived(Request request, Response response) {
- console.log("Got response:");
- Document doc = XMLParser.parse(response.getText());
- console.log(doc.toString());
- handleUIDL(doc);
- }
- });
- console.log("Request sent");
-
- } catch (RequestException e) {
- console.error(e.getMessage());
- }
- }
-
- private void handleUIDL(Document doc) {
- NodeList changes = doc.getElementsByTagName("change");
-
- for(int i = 0; i < changes.getLength(); i++) {
- applyChange(changes.item(i).getFirstChild());
- }
- }
-
- private void applyChange(Node n) {
- if(n.getNodeName().equals("window")) {
- console.log("Rendering main window");
- rw = new RootWindow(n, this);
- rw.setClient(this);
- } else {
- int pid = Component.getIdFromUidl(n);
- console.log("Updating node: " + n.getNodeName() + ", PID:"+pid);
- Component c = getPaintable(pid);
- c.updateFromUidl(n);
- }
- }
-
- /**
- * Queues a changed variable to be sent to server
- *
- * @param variable
- */
- public void updateVariable(Variable variable) {
- // remove variable first so we will maintain the correct order (in case of "double change")
- pendingVariables.remove(variable);
- pendingVariables.add(variable);
- }
-
- /**
- * Sends queued variables to server
- *
- */
- public void flushVariables() {
-
- StringBuffer sb = new StringBuffer();
-
- int i = 0;
- while (!pendingVariables.isEmpty()) {
- Variable v = (Variable) pendingVariables.lastElement();
- pendingVariables.removeElement(v);
-
- if (i > 0) {
- sb.append("&");
- }
- // encode the characters in the name
- String encodedName = URL.encodeComponent(v.getId());
- sb.append(encodedName);
- sb.append("=");
-
- // encode the characters in the value
- String encodedValue = URL.encodeComponent(v.getEncodedValue());
- sb.append(encodedValue);
- }
-
- String buf = sb.toString();
-
- console.log("Making following request to server:");
- console.log(buf);
-
- makeUidlRequest(buf);
- }
-
- public void registerComponent(Component component) {
- components.put(""+component.getId(), component );
- }
-
- public Component getPaintable(int pid) {
- return (Component) components.get(""+pid);
- }
-
- public LegacyClientWrapper getLegacyClient() {
- if(lClient == null)
- lClient = new LegacyClientWrapper();
- return lClient;
- }
-}
-
package com.itmill.toolkit.terminal.gwt.client;
+import com.itmill.toolkit.terminal.gwt.client.ui.Component;
+
public abstract class Variable {
protected Component owner;
import com.google.gwt.xml.client.NamedNodeMap;
import com.google.gwt.xml.client.Node;
import com.google.gwt.xml.client.NodeList;
+import com.itmill.toolkit.terminal.gwt.client.ui.Component;
public class VariableFactory {
--- /dev/null
+package com.itmill.toolkit.terminal.gwt.client.ui;
+
+import com.google.gwt.user.client.ui.Widget;
+import com.google.gwt.xml.client.Node;
+import com.itmill.toolkit.terminal.gwt.client.Client;
+
+public abstract class Component {
+
+ private ContainerComponent parent;
+ protected Client client;
+ private final int id;
+
+ public Component(int id, Client c) {
+ client = c;
+ this.id = id;
+ }
+
+ public abstract void updateFromUidl(Node n);
+
+ public abstract Widget getWidget();
+
+ public static boolean isComponent(String nodeName) {
+ if(
+ nodeName.equals("label") ||
+ nodeName.equals("button") ||
+ nodeName.equals("textfield") ||
+ nodeName.equals("select") ||
+ nodeName.equals("orderedlayout")
+ ) return true;
+ return false;
+ }
+
+ public static Component createComponent(Node uidl, Client cli) {
+ Component c = null;
+ String nodeName = uidl.getNodeName();
+ if(nodeName.equals("label")) {
+ c = new TkLabel(uidl, cli);
+ } else if(nodeName.equals("orderedlayout")) {
+ c = new TkOrderedLayout(uidl, cli);
+ } else if(nodeName.equals("button")) {
+ c = new TkButton(uidl, cli);
+ } else if(nodeName.equals("textfield")) {
+ c = new TkTextField(uidl, cli);
+ } else if(nodeName.equals("select")) {
+ c = new TkLegacyComponent(uidl, cli);
+ } else {
+ c = new TkUnknown(uidl, cli);
+ }
+ return c;
+ }
+
+ public void appendTo(ContainerComponent cont) {
+ this.parent = cont;
+ getClient().registerComponent(this);
+ cont.appendChild(this);
+ }
+
+ public ContainerComponent getParent() {
+ return parent;
+ }
+
+ public Client getClient() {
+ if(client == null)
+ client = parent.getClient();
+ return client;
+ }
+
+ public static int getIdFromUidl(Node uidl) {
+ Node pid = uidl.getAttributes().getNamedItem("id");
+ return Integer.parseInt(pid.getNodeValue().substring(3));
+ }
+
+ public int getId() {
+ return id;
+ }
+
+}
import com.google.gwt.xml.client.Node;
import com.google.gwt.xml.client.NodeList;
-import com.itmill.toolkit.terminal.gwt.client.Component;
-import com.itmill.toolkit.terminal.gwt.client.GwtClient;
+import com.itmill.toolkit.terminal.gwt.client.Client;
abstract class ContainerComponent extends Component {
- public ContainerComponent(int id, GwtClient c) {
+ public ContainerComponent(int id, Client c) {
super(id, c);
}
abstract void appendChild(Component c);
- public void renderChildNodes(Node n, GwtClient cli) {
+ public void renderChildNodes(Node n, Client cli) {
NodeList children = n.getChildNodes();
for(int i = 0; i < children.getLength(); i++) {
Node child = children.item(i);
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.xml.client.Node;
-import com.itmill.toolkit.terminal.gwt.client.Component;
-import com.itmill.toolkit.terminal.gwt.client.GwtClient;
+import com.itmill.toolkit.terminal.gwt.client.Client;
public class RootWindow extends ContainerComponent {
private RootPanel rp;
- private GwtClient client;
+ private Client client;
- public RootWindow(Node uidl, GwtClient c) {
+ public RootWindow(Node uidl, Client c) {
super(0,c);
// root panel must be attached to client before childs can be rendered
setClient(c);
return rp;
}
- public void setClient(GwtClient client) {
+ public void setClient(Client client) {
this.client = client;
}
- public GwtClient getClient() {
+ public Client getClient() {
return this.client;
}
import com.google.gwt.xml.client.Node;
import com.google.gwt.xml.client.NodeList;
import com.itmill.toolkit.terminal.gwt.client.BooleanVariable;
-import com.itmill.toolkit.terminal.gwt.client.Component;
-import com.itmill.toolkit.terminal.gwt.client.GwtClient;
+import com.itmill.toolkit.terminal.gwt.client.Client;
import com.itmill.toolkit.terminal.gwt.client.VariableFactory;
public class TkButton extends Component {
private Button b;
private BooleanVariable state;
- public TkButton(Node uidl, GwtClient c) {
+ public TkButton(Node uidl, Client c) {
super(getIdFromUidl(uidl), c);
b = new Button();
updateFromUidl(uidl);
import com.google.gwt.xml.client.NamedNodeMap;
import com.google.gwt.xml.client.Node;
import com.google.gwt.xml.client.NodeList;
-import com.itmill.toolkit.terminal.gwt.client.Component;
-import com.itmill.toolkit.terminal.gwt.client.GwtClient;
+import com.itmill.toolkit.terminal.gwt.client.Client;
public class TkLabel extends Component {
private Label l;
- public TkLabel(Node uidl, GwtClient cli) {
+ public TkLabel(Node uidl, Client cli) {
super(getIdFromUidl(uidl), cli);
l = new Label();
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.xml.client.Node;
-import com.itmill.toolkit.terminal.gwt.client.Component;
-import com.itmill.toolkit.terminal.gwt.client.GwtClient;
+import com.itmill.toolkit.terminal.gwt.client.Client;
import com.itmill.toolkit.terminal.gwt.client.LegacyClientWrapper;
public class TkLegacyComponent extends Component {
private Label l;
- public TkLegacyComponent(Node uidl, GwtClient cli) {
+ public TkLegacyComponent(Node uidl, Client cli) {
super(getIdFromUidl(uidl), cli);
// TODO Check if client has legacy client instantiated
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.xml.client.Node;
-import com.itmill.toolkit.terminal.gwt.client.Component;
-import com.itmill.toolkit.terminal.gwt.client.GwtClient;
+import com.itmill.toolkit.terminal.gwt.client.Client;
public class TkOrderedLayout extends ContainerComponent {
private FlowPanel p;
- public TkOrderedLayout(Node uidl, GwtClient cli) {
+ public TkOrderedLayout(Node uidl, Client cli) {
super(getIdFromUidl(uidl), cli);
p = new FlowPanel();
import com.google.gwt.xml.client.NamedNodeMap;
import com.google.gwt.xml.client.Node;
import com.google.gwt.xml.client.NodeList;
-import com.itmill.toolkit.terminal.gwt.client.Component;
-import com.itmill.toolkit.terminal.gwt.client.GwtClient;
+import com.itmill.toolkit.terminal.gwt.client.Client;
public class TkTextField extends Component {
private TextBox tb;
- public TkTextField(Node uidl, GwtClient cli) {
+ public TkTextField(Node uidl, Client cli) {
super(getIdFromUidl(uidl),cli);
tb = new TextBox();
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.xml.client.Node;
-import com.itmill.toolkit.terminal.gwt.client.Component;
-import com.itmill.toolkit.terminal.gwt.client.GwtClient;
+import com.itmill.toolkit.terminal.gwt.client.Client;
public class TkUnknown extends Component {
private Label l;
- public TkUnknown(Node uidl, GwtClient cli) {
+ public TkUnknown(Node uidl, Client cli) {
super(getIdFromUidl(uidl),cli);
l = new Label("No client side component found for " + uidl.getNodeName());