AsyncExecDisplay.java Source code

Java tutorial

Introduction

Here is the source code for AsyncExecDisplay.java

Source

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class AsyncExecDisplay {
    static Display display = new Display();

    public static void main(String[] args) {
        Shell shell = new Shell(display);
        shell.setLayout(new FillLayout());

        final Button buttonAsyncExec = new Button(shell, SWT.PUSH);
        buttonAsyncExec.setText("start");
        buttonAsyncExec.addSelectionListener(new SelectionListener() {
            public void widgetDefaultSelected(SelectionEvent e) {
            }

            public void widgetSelected(SelectionEvent e) {
                buttonAsyncExec.setText("Calculation in progress ...");
                getTask2(buttonAsyncExec).start();
            }
        });

        shell.open();
        while (!shell.isDisposed()) { // Event loop.
            if (!display.readAndDispatch())
                display.sleep();
        }
        display.dispose();
    }

    public static Thread getTask2(Button button) {
        final Button theButton = button;
        return new Thread() {
            public void run() {

                try {
                    Thread.sleep(6000);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

                display.asyncExec(new Runnable() {
                    public void run() {
                        theButton.setText("done");
                    }
                });
            }
        };
    }

}