]> source.dussan.org Git - vaadin-framework.git/commitdiff
fixes to variable sending, textfield and paint target
authorMatti Tahvonen <matti.tahvonen@itmill.com>
Fri, 8 Jun 2007 11:39:29 +0000 (11:39 +0000)
committerMatti Tahvonen <matti.tahvonen@itmill.com>
Fri, 8 Jun 2007 11:39:29 +0000 (11:39 +0000)
svn changeset:1655/svn branch:trunk

src/com/itmill/toolkit/terminal/gwt/client/Client.java
src/com/itmill/toolkit/terminal/gwt/client/ui/TkTextField.java
src/com/itmill/toolkit/terminal/web/AjaxJsonPaintTarget.java

index 2c1f0b4303f429efebc7d8112673eb6b7a8a20ac..4be56306d3c94fbf86ffd8d05602bf178c0bccc1 100755 (executable)
@@ -104,6 +104,7 @@ public class Client implements EntryPoint {
                Date start = new Date();
                
                try{
+                       console.log(response.getText().substring(3) + "}");
                        JSONValue json = JSONParser
                        .parse(response.getText().substring(3) + "}");
                        // Process changes
@@ -187,6 +188,7 @@ public class Client implements EntryPoint {
                        req.append(pendingVariables.get(i++));
                        req.append("=");
                        req.append(pendingVariables.get(i));
+                       req.append("&");
                }
 
                pendingVariables.clear();
index e31f25a437e6975747db524b07f860a7eef02213..6dd9f5f4bded3aac3c4362efd9e3570b0bc33ea1 100644 (file)
@@ -1,9 +1,11 @@
 package com.itmill.toolkit.terminal.gwt.client.ui;
 
+import com.google.gwt.user.client.ui.ChangeListener;
 import com.google.gwt.user.client.ui.Composite;
 import com.google.gwt.user.client.ui.Label;
 import com.google.gwt.user.client.ui.TextArea;
 import com.google.gwt.user.client.ui.TextBox;
+import com.google.gwt.user.client.ui.TextBoxBase;
 import com.google.gwt.user.client.ui.VerticalPanel;
 import com.google.gwt.user.client.ui.Widget;
 import com.itmill.toolkit.terminal.gwt.client.Client;
@@ -11,17 +13,21 @@ import com.itmill.toolkit.terminal.gwt.client.Paintable;
 import com.itmill.toolkit.terminal.gwt.client.UIDL;
 
 public class TkTextField extends Composite implements
-               Paintable {
+               Paintable, ChangeListener {
 
        String id;
 
        Client client;
        
-       Widget field;
+       TextBoxBase field;
        Label caption = new Label();
 
        private VerticalPanel p;
        
+       private boolean multiline = false;
+
+       private boolean immediate = false;
+       
        public TkTextField() {
                p = new VerticalPanel();
                p.add(caption);
@@ -31,31 +37,35 @@ public class TkTextField extends Composite implements
        public void updateFromUIDL(UIDL uidl, Client client) {
                this.client = client;
                id = uidl.getId();
+               if(uidl.hasAttribute("immediate") && uidl.getBooleanAttribute("immediate"))
+                       immediate  = true;
                if(uidl.hasAttribute("caption"))
                        caption.setText(uidl.getStringAttribute("caption"));
                else
                        caption.setVisible(false);
-               if(uidl.hasAttribute("rows")) {
-                       // TODO textarea
-                       TextArea ta = new TextArea();
-                       field = ta;
-                       if(uidl.hasAttribute("cols"))
-                               ta.setWidth(uidl.getStringAttribute("cols")+"em");
-                       ta.setHeight(uidl.getStringAttribute("height")+"em");
-                       
-               } else {
-                       // one line text field
-                       TextBox tb = new TextBox();
-                       field = tb;
-                       if(uidl.hasAttribute("cols"))
-                               tb.setWidth(uidl.getStringAttribute("cols")+"em");
+               if(field != null && (uidl.hasAttribute("rows") && !multiline )) {
+                       // field type has changed
+                       p.remove(p.getWidgetIndex(field));
                }
-               p.add(field);
+               if(field == null) {
+                       if(uidl.hasAttribute("rows")) {
+                               field = new TextArea();
+                               multiline = true;
+                       } else {
+                               field = new TextBox();
+                       }
+                       p.add(field);
+               }
+               if(multiline)
+                       field.setHeight(uidl.getStringAttribute("height")+"em");
+               if(uidl.hasAttribute("cols"))
+                       field.setWidth(uidl.getStringAttribute("cols")+"em");
+                       
+               field.addChangeListener(this);
+
        }
 
-       public void onClick(Widget sender) {
-               if (id == null || client == null)
-                       return;
-               client.updateVariable(id, "state", true, true);
+       public void onChange(Widget sender) {
+               client.updateVariable(id, "text", field.getText() , immediate);
        }
 }
index 073636d76c97cdf684b71bb5a3eca8bea56348d9..6c7b520f018c8851f158849c6e3713de72aa17af 100644 (file)
@@ -164,7 +164,6 @@ public class AjaxJsonPaintTarget implements PaintTarget, AjaxPaintTarget {
                if(tag != null) {
                        openJsonTags.push(tag);
                }
-
                // Checks tagName and attributes here
                mOpenTags.push(tagName);
                
@@ -211,7 +210,10 @@ public class AjaxJsonPaintTarget implements PaintTarget, AjaxPaintTarget {
 
                        tag = parent;
                } else {
-                       this.uidlBuffer.print(tag.getJSON());
+                       changes++;
+                       this.uidlBuffer.print(
+                                       ( (changes > 1) ? "," : "") +
+                                       tag.getJSON());
                        tag = null;
                }
        }