diff options
Diffstat (limited to 'documentation/components/components-progressbar.asciidoc')
-rw-r--r-- | documentation/components/components-progressbar.asciidoc | 102 |
1 files changed, 0 insertions, 102 deletions
diff --git a/documentation/components/components-progressbar.asciidoc b/documentation/components/components-progressbar.asciidoc index fa443d1b47..753dd0f735 100644 --- a/documentation/components/components-progressbar.asciidoc +++ b/documentation/components/components-progressbar.asciidoc @@ -62,7 +62,6 @@ bar.setIndeterminate(true); .Indeterminate progress bar image::img/progressbar-indeterminate.png[width=15%, scaledwidth=40%] -ifdef::web[] [[components.progressbar.thread]] == Doing Heavy Computation @@ -75,107 +74,6 @@ updating the UI inside a [methodname]#UI.access()# call in a <<dummy/../../../framework/advanced/advanced-push#advanced.push.running,"Accessing UI from Another Thread">>. -In the following example, we create a thread in the server to do some "heavy -work" and use polling to update the UI. All the thread needs to do is to set the -value of the progress bar with [methodname]#setValue()# and the current progress -is displayed automatically when the browser polls the server. - - -[source, java] ----- -HorizontalLayout barbar = new HorizontalLayout(); -layout.addComponent(barbar); - -// Create the bar, disabled until progress is started -final ProgressBar progress = new ProgressBar(new Float(0.0)); -progress.setEnabled(false); -barbar.addComponent(progress); - -final Label status = new Label("not running"); -barbar.addComponent(status); - -// A button to start progress -final Button button = new Button("Click to start"); -layout.addComponent(button); - -// A thread to do some work -class WorkThread extends Thread { - // Volatile because read in another thread in access() - volatile double current = 0.0; - - @Override - public void run() { - // Count up until 1.0 is reached - while (current < 1.0) { - current += 0.01; - - // Do some "heavy work" - try { - sleep(50); // Sleep for 50 milliseconds - } catch (InterruptedException e) {} - - // Update the UI thread-safely - UI.getCurrent().access(new Runnable() { - @Override - public void run() { - progress.setValue(new Float(current)); - if (current < 1.0) - status.setValue("" + - ((int)(current*100)) + "% done"); - else - status.setValue("all done"); - } - }); - } - - // Show the "all done" for a while - try { - sleep(2000); // Sleep for 2 seconds - } catch (InterruptedException e) {} - - // Update the UI thread-safely - UI.getCurrent().access(new Runnable() { - @Override - public void run() { - // Restore the state to initial - progress.setValue(new Float(0.0)); - progress.setEnabled(false); - - // Stop polling - UI.getCurrent().setPollInterval(-1); - - button.setEnabled(true); - status.setValue("not running"); - } - }); - } -} - -// Clicking the button creates and runs a work thread -button.addClickListener(new Button.ClickListener() { - public void buttonClick(ClickEvent event) { - final WorkThread thread = new WorkThread(); - thread.start(); - - // Enable polling and set frequency to 0.5 seconds - UI.getCurrent().setPollInterval(500); - - // Disable the button until the work is done - progress.setEnabled(true); - button.setEnabled(false); - - status.setValue("running..."); - } -}); ----- - -The example is illustrated in <<figure.components.progressbar.thread>>. - -[[figure.components.progressbar.thread]] -.Doing heavy work -image::img/progressbar-thread.png[width=40%, scaledwidth=70%] - -endif::web[] [[components.progressbar.css]] == CSS Style Rules |