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.

IProgressIndicator.java 1.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package com.itmill.toolkit.terminal.gwt.client.ui;
  2. import com.google.gwt.user.client.DOM;
  3. import com.google.gwt.user.client.Element;
  4. import com.google.gwt.user.client.Timer;
  5. import com.google.gwt.user.client.ui.Widget;
  6. import com.itmill.toolkit.terminal.gwt.client.ApplicationConnection;
  7. import com.itmill.toolkit.terminal.gwt.client.Paintable;
  8. import com.itmill.toolkit.terminal.gwt.client.UIDL;
  9. public class IProgressIndicator extends Widget implements Paintable {
  10. private static final String CLASSNAME = "i-progressindicator";
  11. Element wrapper = DOM.createDiv();
  12. Element indicator = DOM.createDiv();
  13. private ApplicationConnection client;
  14. private Poller poller;
  15. public IProgressIndicator() {
  16. setElement(wrapper);
  17. setStyleName(CLASSNAME);
  18. DOM.appendChild(wrapper, indicator);
  19. poller = new Poller();
  20. }
  21. public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
  22. poller.cancel();
  23. this.client = client;
  24. if (client.updateComponent(this, uidl, true))
  25. return;
  26. boolean indeterminate = uidl.getBooleanAttribute("indeterminate");
  27. if (indeterminate) {
  28. // TODO put up some image or something
  29. } else {
  30. try {
  31. float f = Float.parseFloat(uidl.getStringAttribute("state"));
  32. int size = Math.round(100 * f);
  33. DOM.setStyleAttribute(indicator, "width", size + "%");
  34. } catch (Exception e) {
  35. }
  36. }
  37. poller.scheduleRepeating(uidl.getIntAttribute("pollinginterval"));
  38. }
  39. class Poller extends Timer {
  40. public void run() {
  41. client.sendPendingVariableChanges();
  42. }
  43. }
  44. }