Java/SWT JFace Eclipse/JFace Dialog

Материал из Java эксперт
Перейти к: навигация, поиск

JFace"s ErrorDialog class

import org.eclipse.core.runtime.*;
import org.eclipse.jface.dialogs.ErrorDialog;
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
/**
 * This class demonstrates JFace"s ErrorDialog class
 */
public class ShowError extends ApplicationWindow {
  /**
   * ShowError constructor
   */
  public ShowError() {
    super(null);
  }
  /**
   * Runs the application
   */
  public void run() {
    // Don"t return from open() until window closes
    setBlockOnOpen(true);
    // Open the main window
    open();
    // Dispose the display
    Display.getCurrent().dispose();
  }
  /**
   * Configures the shell
   * 
   * @param shell the shell
   */
  protected void configureShell(Shell shell) {
    super.configureShell(shell);
    // Set the title bar text and the size
    shell.setText("Show Error");
    shell.setSize(400, 400);
  }
  /**
   * Creates the main window"s contents
   * 
   * @param parent the main window
   * @return Control
   */
  protected Control createContents(Composite parent) {
    Composite composite = new Composite(parent, SWT.NONE);
    composite.setLayout(new GridLayout(1, false));
    // Create a big text box to accept error text
    final Text text = new Text(composite, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL);
    text.setLayoutData(new GridData(GridData.FILL_BOTH));
    // Create the button to launch the error dialog
    Button show = new Button(composite, SWT.PUSH);
    show.setText("Show Error");
    show.addSelectionListener(new SelectionAdapter() {
      public void widgetSelected(SelectionEvent event) {
        // Create the required Status object
        Status status = new Status(IStatus.ERROR, "My Plug-in ID", 0,
            "Status Error Message", null);
        // Display the dialog
        ErrorDialog.openError(Display.getCurrent().getActiveShell(),
            "JFace Error", text.getText(), status);
      }
    });
    return composite;
  }
  /**
   * The application entry point
   * 
   * @param args the command line arguments
   */
  public static void main(String[] args) {
    new ShowError().run();
  }
}





JFace"s IconAndMessageDialog

import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.*;
import org.eclipse.swt.events.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
/**
 * This class demonstrates JFace"s IconAndMessageDialog class
 */
public class DumbUser extends ApplicationWindow {
  /**
   * DumbUser constructor
   */
  public DumbUser() {
    super(null);
  }
  /**
   * Runs the application
   */
  public void run() {
    // Don"t return from open() until window closes
    setBlockOnOpen(true);
    // Open the main window
    open();
    // Dispose the display
    Display.getCurrent().dispose();
  }
  /**
   * Creates the main window"s contents
   * 
   * @param parent the main window
   * @return Control
   */
  protected Control createContents(Composite parent) {
    Composite composite = new Composite(parent, SWT.NONE);
    composite.setLayout(new GridLayout(1, true));
    // Create the button
    Button show = new Button(composite, SWT.NONE);
    show.setText("Show");
    final Shell shell = parent.getShell();
    // Display the dialog
    show.addSelectionListener(new SelectionAdapter() {
      public void widgetSelected(SelectionEvent event) {
        // Create and show the dialog
        DumbMessageDialog dlg = new DumbMessageDialog(shell);
        dlg.open();
      }
    });
    parent.pack();
    return composite;
  }
  /**
   * The application entry point
   * 
   * @param args the command line arguments
   */
  public static void main(String[] args) {
    new DumbUser().run();
  }
}
/**
 * This class demonstrates the IconAndMessageDialog class
 */
class DumbMessageDialog extends IconAndMessageDialog {
  public static final int I_DUNNO_ID = IDialogConstants.CLIENT_ID;
  public static final String I_DUNNO_LABEL = "I Dunno";
  // The image
  private Image image;
  // The label for the "hidden" message
  private Label label;
  /**
   * DumbMessageDialog constructor
   * 
   * @param parent the parent shell
   */
  public DumbMessageDialog(Shell parent) {
    super(parent);
    // Create the image
    try {
      image = new Image(parent.getDisplay(), new FileInputStream("jexp.gif"));
    } catch (FileNotFoundException e) {}
    // Set the default message
    message = "Are you sure you want to do something that dumb?";
  }
  /**
   * Sets the message
   * 
   * @param message the message
   */
  public void setMessage(String message) {
    this.message = message;
  }
  /**
   * Closes the dialog
   * 
   * @return boolean
   */
  public boolean close() {
    if (image != null) image.dispose();
    return super.close();
  }
  /**
   * Creates the dialog area
   * 
   * @param parent the parent composite
   * @return Control
   */
  protected Control createDialogArea(Composite parent) {
    createMessageArea(parent);
    // Create a composite to hold the label
    Composite composite = new Composite(parent, SWT.NONE);
    GridData data = new GridData(GridData.FILL_BOTH);
    data.horizontalSpan = 2;
    composite.setLayoutData(data);
    composite.setLayout(new FillLayout());
    // Create the label for the "hidden" message
    label = new Label(composite, SWT.LEFT);
    return composite;
  }
  /**
   * Creates the buttons
   * 
   * @param parent the parent composite
   */
  protected void createButtonsForButtonBar(Composite parent) {
    createButton(parent, IDialogConstants.YES_ID, IDialogConstants.YES_LABEL,
        true);
    createButton(parent, IDialogConstants.NO_ID, IDialogConstants.NO_LABEL, false);
    createButton(parent, I_DUNNO_ID, I_DUNNO_LABEL, false);
  }
  /**
   * Handles a button press
   * 
   * @param buttonId the ID of the pressed button
   */
  protected void buttonPressed(int buttonId) {
    // If they press I Dunno, close the dialog
    if (buttonId == I_DUNNO_ID) {
      setReturnCode(buttonId);
      close();
    } else {
      // Otherwise, have some fun
      label.setText("Yeah, right. You know nothing.");
    }
  }
  /**
   * Gets the image to use
   */
  protected Image getImage() {
    return image;
  }
}





JFace"s InputDialog

import org.eclipse.jface.dialogs.InputDialog;
import org.eclipse.jface.dialogs.IInputValidator;
import org.eclipse.jface.window.*;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
/**
 * This class demonstrates JFace"s InputDialog class
 */
public class GetInput extends ApplicationWindow {
  /**
   * GetInput constructor
   */
  public GetInput() {
    super(null);
  }
  /**
   * Runs the application
   */
  public void run() {
    // Don"t return from open() until window closes
    setBlockOnOpen(true);
    // Open the main window
    open();
    // Dispose the display
    Display.getCurrent().dispose();
  }
  /**
   * Configures the shell
   * 
   * @param shell the shell
   */
  protected void configureShell(Shell shell) {
    super.configureShell(shell);
    // Set the title bar text
    shell.setText("Get Input");
  }
  /**
   * Creates the main window"s contents
   * 
   * @param parent the main window
   * @return Control
   */
  protected Control createContents(Composite parent) {
    Composite composite = new Composite(parent, SWT.NONE);
    composite.setLayout(new GridLayout(1, false));
    // Create a label to display what the user typed in
    final Label label = new Label(composite, SWT.NONE);
    label.setText("This will display the user input from InputDialog");
    // Create the button to launch the error dialog
    Button show = new Button(composite, SWT.PUSH);
    show.setText("Get Input");
    show.addSelectionListener(new SelectionAdapter() {
      public void widgetSelected(SelectionEvent event) {
        InputDialog dlg = new InputDialog(Display.getCurrent().getActiveShell(),
            "", "Enter 5-8 characters", label.getText(), new LengthValidator());
        if (dlg.open() == Window.OK) {
          // User clicked OK; update the label with the input
          label.setText(dlg.getValue());
        }
      }
    });
    parent.pack();
    return composite;
  }
  /**
   * The application entry point
   * 
   * @param args the command line arguments
   */
  public static void main(String[] args) {
    new GetInput().run();
  }
}
/**
 * This class validates a String. It makes sure that the String is between 5 and 8
 * characters
 */
class LengthValidator implements IInputValidator {
  /**
   * Validates the String. Returns null for no error, or an error message
   * 
   * @param newText the String to validate
   * @return String
   */
  public String isValid(String newText) {
    int len = newText.length();
    // Determine if input is too short or too long
    if (len < 5) return "Too short";
    if (len > 8) return "Too long";
    // Input must be OK
    return null;
  }
}





JFace"s MessageDialog

import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
/**
 * This class demonstrates JFace"s MessageDialog class
 */
public class SendMessage extends ApplicationWindow {
  /**
   * SendMessage constructor
   */
  public SendMessage() {
    super(null);
  }
  /**
   * Runs the application
   */
  public void run() {
    // Don"t return from open() until window closes
    setBlockOnOpen(true);
    // Open the main window
    open();
    // Dispose the display
    Display.getCurrent().dispose();
  }
  /**
   * Configures the shell
   * 
   * @param shell the shell
   */
  protected void configureShell(Shell shell) {
    super.configureShell(shell);
    // Set the title bar text and the size
    shell.setText("Send Message");
    shell.setSize(500, 400);
  }
  /**
   * Creates the main window"s contents
   * 
   * @param parent the main window
   * @return Control
   */
  protected Control createContents(Composite parent) {
    Composite composite = new Composite(parent, SWT.NONE);
    composite.setLayout(new GridLayout(5, true));
    // Create a big text box for the message text
    final Text text = new Text(composite, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL);
    GridData data = new GridData(GridData.FILL_BOTH);
    data.horizontalSpan = 5;
    text.setLayoutData(data);
    // Create the Confirm button
    Button confirm = new Button(composite, SWT.PUSH);
    confirm.setText("Confirm");
    confirm.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    // Create the Error button
    Button error = new Button(composite, SWT.PUSH);
    error.setText("Error");
    error.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    // Create the Information button
    Button information = new Button(composite, SWT.PUSH);
    information.setText("Information");
    information.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    // Create the Question button
    Button question = new Button(composite, SWT.PUSH);
    question.setText("Question");
    question.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    // Create the Warning button
    Button warning = new Button(composite, SWT.PUSH);
    warning.setText("Warning");
    warning.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    // Create the label to display the return value
    final Label label = new Label(composite, SWT.NONE);
    data = new GridData(GridData.FILL_HORIZONTAL);
    data.horizontalSpan = 5;
    label.setLayoutData(data);
    // Save ourselves some typing
    final Shell shell = parent.getShell();
    // Display a Confirmation dialog
    confirm.addSelectionListener(new SelectionAdapter() {
      public void widgetSelected(SelectionEvent event) {
        boolean b = MessageDialog.openConfirm(shell, "Confirm", text.getText());
        label.setText("Returned " + Boolean.toString(b));
      }
    });
    // Display an Error dialog
    error.addSelectionListener(new SelectionAdapter() {
      public void widgetSelected(SelectionEvent event) {
        MessageDialog.openError(shell, "Error", text.getText());
        label.setText("Returned void");
      }
    });
    // Display an Information dialog
    information.addSelectionListener(new SelectionAdapter() {
      public void widgetSelected(SelectionEvent event) {
        MessageDialog.openInformation(shell, "Information", text.getText());
        label.setText("Returned void");
      }
    });
    // Display a Question dialog
    question.addSelectionListener(new SelectionAdapter() {
      public void widgetSelected(SelectionEvent event) {
        boolean b = MessageDialog.openQuestion(shell, "Question", text.getText());
        label.setText("Returned " + Boolean.toString(b));
      }
    });
    // Display a Warning dialog
    warning.addSelectionListener(new SelectionAdapter() {
      public void widgetSelected(SelectionEvent event) {
        MessageDialog.openWarning(shell, "Warning", text.getText());
        label.setText("Returned void");
      }
    });
    return composite;
  }
  /**
   * The application entry point
   * 
   * @param args the command line arguments
   */
  public static void main(String[] args) {
    new SendMessage().run();
  }
}





JFace"s ProgressMonitorDialog

import java.lang.reflect.InvocationTargetException;
import org.eclipse.jface.dialogs.*;
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.operation.IRunnableWithProgress;
/**
 * This class demonstrates JFace"s ProgressMonitorDialog class
 */
public class ShowProgress extends ApplicationWindow {
  /**
   * ShowProgress constructor
   */
  public ShowProgress() {
    super(null);
  }
  /**
   * Runs the application
   */
  public void run() {
    // Don"t return from open() until window closes
    setBlockOnOpen(true);
    // Open the main window
    open();
    // Dispose the display
    Display.getCurrent().dispose();
  }
  /**
   * Configures the shell
   * 
   * @param shell the shell
   */
  protected void configureShell(Shell shell) {
    super.configureShell(shell);
    // Set the title bar text
    shell.setText("Show Progress");
  }
  /**
   * Creates the main window"s contents
   * 
   * @param parent the main window
   * @return Control
   */
  protected Control createContents(Composite parent) {
    Composite composite = new Composite(parent, SWT.NONE);
    composite.setLayout(new GridLayout(1, true));
    // Create the indeterminate checkbox
    final Button indeterminate = new Button(composite, SWT.CHECK);
    indeterminate.setText("Indeterminate");
    // Create the ShowProgress button
    Button showProgress = new Button(composite, SWT.NONE);
    showProgress.setText("Show Progress");
    final Shell shell = parent.getShell();
    // Display the ProgressMonitorDialog
    showProgress.addSelectionListener(new SelectionAdapter() {
      public void widgetSelected(SelectionEvent event) {
        try {
          new ProgressMonitorDialog(shell).run(true, true,
              new LongRunningOperation(indeterminate.getSelection()));
        } catch (InvocationTargetException e) {
          MessageDialog.openError(shell, "Error", e.getMessage());
        } catch (InterruptedException e) {
          MessageDialog.openInformation(shell, "Cancelled", e.getMessage());
        }
      }
    });
    parent.pack();
    return composite;
  }
  /**
   * The application entry point
   * 
   * @param args the command line arguments
   */
  public static void main(String[] args) {
    new ShowProgress().run();
  }
}

/**
 * This class represents a long running operation
 */
class LongRunningOperation implements IRunnableWithProgress {
  // The total sleep time
  private static final int TOTAL_TIME = 10000;
  // The increment sleep time
  private static final int INCREMENT = 500;
  private boolean indeterminate;
  /**
   * LongRunningOperation constructor
   * 
   * @param indeterminate whether the animation is unknown
   */
  public LongRunningOperation(boolean indeterminate) {
    this.indeterminate = indeterminate;
  }
  /**
   * Runs the long running operation
   * 
   * @param monitor the progress monitor
   */
  public void run(IProgressMonitor monitor) throws InvocationTargetException,
      InterruptedException {
    monitor.beginTask("Running long running operation",
        indeterminate ? IProgressMonitor.UNKNOWN : TOTAL_TIME);
    for (int total = 0; total < TOTAL_TIME && !monitor.isCanceled(); total += INCREMENT) {
      Thread.sleep(INCREMENT);
      monitor.worked(INCREMENT);
      if (total == TOTAL_TIME / 2) monitor.subTask("Doing second half");
    }
    monitor.done();
    if (monitor.isCanceled())
        throw new InterruptedException("The long running operation was cancelled");
  }
}





JFace"s TitleAreaDialog

import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.jface.dialogs.*;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.*;
import org.eclipse.swt.graphics.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
import java.io.*;
/**
 * This class demonstrates JFace"s TitleAreaDialog class
 */
public class ShowMyTitleAreaDialog extends ApplicationWindow {
  /**
   * ShowCustomDialog constructor
   */
  public ShowMyTitleAreaDialog() {
    super(null);
  }
  /**
   * Runs the application
   */
  public void run() {
    // Don"t return from open() until window closes
    setBlockOnOpen(true);
    // Open the main window
    open();
    // Dispose the display
    Display.getCurrent().dispose();
  }
  /**
   * Creates the main window"s contents
   * 
   * @param parent the main window
   * @return Control
   */
  protected Control createContents(Composite parent) {
    Composite composite = new Composite(parent, SWT.NONE);
    composite.setLayout(new GridLayout(1, true));
    // Create the button
    Button show = new Button(composite, SWT.NONE);
    show.setText("Show");
    final Shell shell = parent.getShell();
    // Display the TitleAreaDialog
    show.addSelectionListener(new SelectionAdapter() {
      public void widgetSelected(SelectionEvent event) {
        // Create and show the dialog
        MyTitleAreaDialog dlg = new MyTitleAreaDialog(shell);
        dlg.open();
      }
    });
    parent.pack();
    return composite;
  }
  /**
   * The application entry point
   * 
   * @param args the command line arguments
   */
  public static void main(String[] args) {
    new ShowMyTitleAreaDialog().run();
  }
}

/**
 * This class shows an about box, based on TitleAreaDialog
 */
class MyTitleAreaDialog extends TitleAreaDialog {
  // The image to display
  private Image image;
  /**
   * MyTitleAreaDialog constructor
   * 
   * @param shell the parent shell
   */
  public MyTitleAreaDialog(Shell shell) {
    super(shell);
    // Create the image
    try {
      image = new Image(null, new FileInputStream("jexp.gif"));
    } catch (FileNotFoundException e) {
      // Ignore
    }
  }
  /**
   * Closes the dialog box Override so we can dispose the image we created
   */
  public boolean close() {
    if (image != null) image.dispose();
    return super.close();
  }
  /**
   * Creates the dialog"s contents
   * 
   * @param parent the parent composite
   * @return Control
   */
  protected Control createContents(Composite parent) {
    Control contents = super.createContents(parent);
    // Set the title
    setTitle("About This Application");
    // Set the message
    setMessage("This is a JFace dialog", IMessageProvider.INFORMATION);
    // Set the image
    if (image != null) setTitleImage(image);
    return contents;
  }
  /**
   * Creates the gray area
   * 
   * @param parent the parent composite
   * @return Control
   */
  protected Control createDialogArea(Composite parent) {
    Composite composite = (Composite) super.createDialogArea(parent);
    // Create a table
    Table table = new Table(composite, SWT.FULL_SELECTION | SWT.BORDER);
    table.setLayoutData(new GridData(GridData.FILL_BOTH));
    // Create two columns and show
    TableColumn one = new TableColumn(table, SWT.LEFT);
    one.setText("Real Name");
    TableColumn two = new TableColumn(table, SWT.LEFT);
    two.setText("Preferred Name");
    table.setHeaderVisible(true);
    // Add some data
    TableItem item = new TableItem(table, SWT.NONE);
    item.setText(0, "Robert Harris");
    item.setText(1, "Bobby");
    item = new TableItem(table, SWT.NONE);
    item.setText(0, "Robert Warner");
    item.setText(1, "Rob");
    item = new TableItem(table, SWT.NONE);
    item.setText(0, "Gabor Liptak");
    item.setText(1, "Gabor");
    one.pack();
    two.pack();
    return composite;
  }
  /**
   * Creates the buttons for the button bar
   * 
   * @param parent the parent composite
   */
  protected void createButtonsForButtonBar(Composite parent) {
    createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true);
  }
}