DialogExamples.java Source code

Java tutorial

Introduction

Here is the source code for DialogExamples.java

Source

/*******************************************************************************
 * All Right Reserved. Copyright (c) 1998, 2004 Jackwind Li Guojie
 * 
 * Created on 2004-5-13 22:13:55 by JACK $Id$
 *  
 ******************************************************************************/

import java.lang.reflect.InvocationTargetException;

import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.dialogs.IInputValidator;
import org.eclipse.jface.dialogs.InputDialog;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.dialogs.ProgressMonitorDialog;
import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;

public class DialogExamples extends ApplicationWindow {

    /**
     * @param parentShell
     */
    public DialogExamples(Shell parentShell) {
        super(parentShell);
    }

    /*
     * (non-Javadoc)
     * 
     * @see org.eclipse.jface.window.Window#createContents(org.eclipse.swt.widgets.Composite)
     */
    protected Control createContents(Composite parent) {
        Composite composite = new Composite(parent, SWT.NULL);

        composite.setLayout(new GridLayout());

        /* ------ MessageDialog ------------- */
        // openQuestion
        final Button buttonOpenMessage = new Button(composite, SWT.PUSH);
        buttonOpenMessage.setText("Demo: MessageDialog.openQuestion");
        buttonOpenMessage.addListener(SWT.Selection, new Listener() {
            public void handleEvent(Event event) {

                boolean answer = MessageDialog.openQuestion(getShell(), "A Simple Question",
                        "Is SWT/JFace your favorite Java UI framework?");
                System.out.println("Your answer is " + (answer ? "YES" : "NO"));
            }
        });

        final Button buttonMessageDialog = new Button(composite, SWT.PUSH);
        buttonMessageDialog.setText("Demo: new MessageDialog");
        buttonMessageDialog.addListener(SWT.Selection, new Listener() {
            public void handleEvent(Event event) {
                MessageDialog dialog = new MessageDialog(getShell(), "Select your favorite Java UI framework", null,
                        "Which one of the following is your favorite Java UI framework?", MessageDialog.QUESTION,
                        new String[] { "AWT", "Swing", "SWT/JFace" }, 2);
                int answer = dialog.open();

                switch (answer) {
                case -1: // if the user closes the dialog without clicking any button.
                    System.out.println("No selection");
                    break;

                case 0:
                    System.out.println("Your selection is: AWT");
                    break;
                case 1:
                    System.out.println("Your selection is: Swing");
                    break;
                case 2:
                    System.out.println("Your selection is: SWT/JFace");
                    break;

                }
            }
        });

        /* ------ InputDialog ------------- */
        final Button buttonInputDialog = new Button(composite, SWT.PUSH);
        buttonInputDialog.setText("Demo: InputDialog");
        buttonInputDialog.addListener(SWT.Selection, new Listener() {
            public void handleEvent(Event event) {
                IInputValidator validator = new IInputValidator() {
                    public String isValid(String newText) {
                        if (newText.equalsIgnoreCase("SWT/JFace") || newText.equalsIgnoreCase("AWT")
                                || newText.equalsIgnoreCase("Swing"))
                            return null;
                        else
                            return "The allowed values are: SWT/JFace, AWT, Swing";
                    }
                };
                InputDialog dialog = new InputDialog(getShell(), "Question",
                        "What's your favorite Java UI framework?", "SWT/JFace", validator);
                if (dialog.open() == Window.OK) {
                    System.out.println("Your favorite Java UI framework is: " + dialog.getValue());
                } else {
                    System.out.println("Action cancelled");
                }
            }
        });

        /* ------ ProgressMonitorDialog ------------- */
        final Button buttonProgressDialog = new Button(composite, SWT.PUSH);
        buttonProgressDialog.setText("Demo: ProgressMonitorDialog");
        buttonProgressDialog.addListener(SWT.Selection, new Listener() {
            public void handleEvent(Event event) {
                IRunnableWithProgress runnableWithProgress = new IRunnableWithProgress() {
                    public void run(IProgressMonitor monitor)
                            throws InvocationTargetException, InterruptedException {
                        monitor.beginTask("Number counting", 10);
                        for (int i = 0; i < 10; i++) {
                            if (monitor.isCanceled()) {
                                monitor.done();
                                return;
                            }

                            System.out.println("Count number: " + i);
                            monitor.worked(1);
                            Thread.sleep(500); // 0.5s.
                        }
                        monitor.done();
                    }
                };

                ProgressMonitorDialog dialog = new ProgressMonitorDialog(getShell());
                try {
                    dialog.run(true, true, runnableWithProgress);
                } catch (InvocationTargetException e) {
                    e.printStackTrace();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

            }
        });
        return super.createContents(parent);
    }

    public static void main(String[] args) {
        ApplicationWindow window = new DialogExamples(null);
        window.setBlockOnOpen(true);
        window.open();
    }
}