Dialog Shell : Dialog « SWT JFace Eclipse « Java

Dialog Shell

Dialog Shell

 * Copyright (c) 1998, 2004 Jackwind Li Guojie
 * All right reserved. 
 * Created on Jan 25, 2004 6:16:43 PM by JACK
 * $Id$
 * visit: http://www.asprise.com/swt

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class DialogShell {

  public DialogShell() {
    Display display = new Display();
    final Shell shell = new Shell(display);

    shell.setLayout(new RowLayout());
    shell.setSize(500, 200);

    final Button openDialog = new Button(shell, SWT.PUSH);
    openDialog.setText("Click here to rate this book ...");

    openDialog.addSelectionListener(new SelectionListener() {
      public void widgetSelected(SelectionEvent e) {
        final Shell dialog =
          new Shell(shell, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
        dialog.setLayout(new RowLayout());

        final String[] ratings =
          new String[] {
            "Good stuff",
            "Needs work" };
        final Button[] radios = new Button[ratings.length];
        for (int i = 0; i < ratings.length; i++) {
          radios[i] = new Button(dialog, SWT.RADIO);

        Button rateButton = new Button(dialog, SWT.PUSH);
        rateButton.addSelectionListener(new SelectionListener() {
          public void widgetSelected(SelectionEvent e) {
            for (int i = 0; i < radios.length; i++)
              if (radios[i].getSelection())
                openDialog.setText("Rating: " + ratings[i]);

          public void widgetDefaultSelected(SelectionEvent e) {


        // Move the dialog to the center of the top level shell.
        Rectangle shellBounds = shell.getBounds();
        Point dialogSize = dialog.getSize();

          shellBounds.x + (shellBounds.width - dialogSize.x) / 2,
          shellBounds.y + (shellBounds.height - dialogSize.y) / 2);


      public void widgetDefaultSelected(SelectionEvent e) {


    // Set up the event loop.
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch()) {
        // If no more entries in event queue


  private void init() {


  public static void main(String[] args) {
    new DialogShell();


Related examples in the same category

1.TitleAreaDialog: MailDialog
2.MessageBox ExampleMessageBox Example
3.Number Input DialogNumber Input Dialog
4.Dialog ExamplesDialog Examples
5.Demonstrates FileDialogDemonstrates FileDialog
6.A facade for the save FileDialog
7.How to create your own dialog classesHow to create your own dialog classes
8.Demonstrates the FontDialog classDemonstrates the FontDialog class
9.Demonstrates the ColorDialog classDemonstrates the ColorDialog class
10.Demonstrates the DirectoryDialog classDemonstrates the DirectoryDialog class
11.Demonstrates the custom InputDialog classDemonstrates the custom InputDialog class
12.Demonstrates the MessageBox classDemonstrates the MessageBox class
13.Dialog Example
14.Shell Dialog ExampleShell Dialog Example
15.Color Dialog ExampleColor Dialog Example
16.File Dialog ExampleFile Dialog Example
17.Font Dialog ExampleFont Dialog Example
18.Yes No Icon MessageBoxYes No Icon MessageBox
19.Print Dialog ExamplePrint Dialog Example
20.SWT Dialog ClassSWT Dialog Class
21.Prevent escape from closing a SWT dialogPrevent escape from closing a SWT dialog
22.Create a dialog shell (prompt for a value)Create a dialog shell (prompt for a value)
23.Create a SWT dialog shellCreate a SWT dialog shell