private ApplicationConnection client;
private final Poller poller;
private boolean indeterminate = false;
+ private boolean pollerSuspendedDueDetach;
public IProgressIndicator() {
setElement(wrapper);
}
}
+ protected void onAttach() {
+ super.onAttach();
+ if (pollerSuspendedDueDetach) {
+ poller.run();
+ }
+ }
+
+ protected void onDetach() {
+ super.onDetach();
+ poller.cancel();
+ pollerSuspendedDueDetach = true;
+ }
+
public void setVisible(boolean visible) {
super.setVisible(visible);
if (!visible) {
--- /dev/null
+package com.itmill.toolkit.tests.tickets;\r
+\r
+import java.util.Date;\r
+\r
+import com.itmill.toolkit.ui.Button;\r
+import com.itmill.toolkit.ui.Label;\r
+import com.itmill.toolkit.ui.ProgressIndicator;\r
+import com.itmill.toolkit.ui.Window;\r
+import com.itmill.toolkit.ui.Button.ClickEvent;\r
+import com.itmill.toolkit.ui.Button.ClickListener;\r
+\r
+public class Ticket1581 extends com.itmill.toolkit.Application {\r
+\r
+ private Label time;\r
+ private ProgressIndicator poller;\r
+ private Thread thread;\r
+\r
+ public void init() {\r
+ final Window main = new Window(getClass().getName().substring(\r
+ getClass().getName().lastIndexOf(".") + 1));\r
+ setMainWindow(main);\r
+\r
+ main.addComponent(new Label("Test the second issue in ticket #1581"));\r
+\r
+ time = new Label();\r
+ poller = new ProgressIndicator();\r
+ poller.setPollingInterval(200);\r
+ main.addComponent(time);\r
+ main.addComponent(poller);\r
+\r
+ thread = new Thread() {\r
+\r
+ public void run() {\r
+ super.run();\r
+ while (true) {\r
+ time.setValue(new Date());\r
+ try {\r
+ sleep(200);\r
+ } catch (InterruptedException e) {\r
+ // TODO Auto-generated catch block\r
+ e.printStackTrace();\r
+ }\r
+ }\r
+ }\r
+\r
+ };\r
+\r
+ thread.start();\r
+\r
+ final Button stop = new Button("Stop updating", new ClickListener() {\r
+ boolean active = true;\r
+\r
+ public void buttonClick(ClickEvent event) {\r
+\r
+ if (active) {\r
+ main.removeComponent(poller);\r
+ event.getButton().setCaption("Resume");\r
+ } else {\r
+ main.addComponent(poller);\r
+ event.getButton().setCaption("Stop updating");\r
+ }\r
+ active = !active;\r
+ }\r
+ });\r
+\r
+ main.addComponent(stop);\r
+ }\r
+\r
+}\r