You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

TkButton.java 1.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package com.itmill.toolkit.terminal.gwt.client.ui;
  2. import com.google.gwt.user.client.ui.Button;
  3. import com.google.gwt.user.client.ui.ClickListener;
  4. import com.google.gwt.user.client.ui.Widget;
  5. import com.google.gwt.xml.client.NamedNodeMap;
  6. import com.google.gwt.xml.client.Node;
  7. import com.google.gwt.xml.client.NodeList;
  8. import com.itmill.toolkit.terminal.gwt.client.BooleanVariable;
  9. import com.itmill.toolkit.terminal.gwt.client.Client;
  10. import com.itmill.toolkit.terminal.gwt.client.VariableFactory;
  11. public class TkButton extends Component {
  12. private Button b;
  13. private BooleanVariable state;
  14. public TkButton(Node uidl, Client c) {
  15. super(getIdFromUidl(uidl), c);
  16. b = new Button();
  17. updateFromUidl(uidl);
  18. b.addClickListener(new ButtonClickListener());
  19. }
  20. public void updateFromUidl(Node n) {
  21. String text = "";
  22. String description = null;
  23. NamedNodeMap attributes = n.getAttributes();
  24. Node caption = attributes.getNamedItem("caption");
  25. if(caption != null)
  26. text = caption.getNodeValue();
  27. NodeList children = n.getChildNodes();
  28. for (int i = 0; i < children.getLength(); i++) {
  29. Node child = children.item(i);
  30. String nName = child.getNodeName();
  31. if(nName.equals("description"))
  32. description = child.getFirstChild().toString();
  33. if(nName.equals("boolean")) {
  34. state = (BooleanVariable) VariableFactory.getVariable(child,this);
  35. state.setImmediate(true); // button always immediate
  36. }
  37. }
  38. b.setText(text);
  39. if(description != null)
  40. b.setTitle(description);
  41. }
  42. public Widget getWidget() {
  43. return b;
  44. }
  45. public class ButtonClickListener implements ClickListener {
  46. public void onClick(Widget sender) {
  47. TkButton.this.state.setValue(true);
  48. TkButton.this.state.update();
  49. }
  50. }
  51. }