Demonstrates various listeners : Event « SWT JFace Eclipse « Java






Demonstrates various listeners

Demonstrates various listeners

//Send questions, comments, bug reports, etc. to the authors:

//Rob Warner (rwarner@interspatial.com)
//Robert Harris (rbrt_harris@yahoo.com)

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;

/**
 * This class demonstrates various listeners
 */
public class MultipleListenersExample implements HelpListener, VerifyListener,
    ModifyListener {

  // Constants used for conversions
  private static final double FIVE_NINTHS = 5.0 / 9.0;
  private static final double NINE_FIFTHS = 9.0 / 5.0;

  // Widgets used in the window
  private Text fahrenheit;
  private Text celsius;
  private Label help;

  /**
   * Runs the application
   */
  public void run() {
    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setText("Temperatures");
    createContents(shell);
    shell.pack();
    shell.open();
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch()) {
        display.sleep();
      }
    }
    display.dispose();
  }

  /**
   * Create the main window's contents
   * @param shell the main window
   */
  private void createContents(Shell shell) {
    shell.setLayout(new GridLayout(3, true));

    // Create the label and input box for Fahrenheit
    new Label(shell, SWT.LEFT).setText("Fahrenheit:");
    fahrenheit = new Text(shell, SWT.BORDER);
    GridData data = new GridData(GridData.FILL_HORIZONTAL);
    data.horizontalSpan = 2;
    fahrenheit.setLayoutData(data);

    // Set the context-sensitive help
    fahrenheit.setData("Type a temperature in Fahrenheit");

    // Add the listeners
    fahrenheit.addHelpListener(this);
    fahrenheit.addVerifyListener(this);
    fahrenheit.addModifyListener(this);

    // Create the label and input box for Celsius
    new Label(shell, SWT.LEFT).setText("Celsius:");
    celsius = new Text(shell, SWT.BORDER);
    data = new GridData(GridData.FILL_HORIZONTAL);
    data.horizontalSpan = 2;
    celsius.setLayoutData(data);

    // Set the context-sensitive help
    celsius.setData("Type a temperature in Celsius");

    // Add the listeners
    celsius.addHelpListener(this);
    celsius.addVerifyListener(this);
    celsius.addModifyListener(this);

    // Create the area for help
    help = new Label(shell, SWT.LEFT | SWT.BORDER);
    data = new GridData(GridData.FILL_HORIZONTAL);
    data.horizontalSpan = 3;
    help.setLayoutData(data);
  }

  /**
   * Called when user requests help
   */
  public void helpRequested(HelpEvent event) {
    // Get the help text from the widget and set it into the help label
    help.setText((String) event.widget.getData());
  }

  /**
   * Called when the user types into a text box, but before the text box gets
   * what the user typed
   */
  public void verifyText(VerifyEvent event) {
    // Assume we don't allow it
    event.doit = false;

    // Get the character typed
    char myChar = event.character;
    String text = ((Text) event.widget).getText();

    // Allow '-' if first character
    if (myChar == '-' && text.length() == 0) event.doit = true;

    // Allow 0-9
    if (Character.isDigit(myChar)) event.doit = true;

    // Allow backspace
    if (myChar == '\b') event.doit = true;
  }

  /**
   * Called when the user modifies the text in a text box
   */
  public void modifyText(ModifyEvent event) {
    // Remove all the listeners, so we don't enter any infinite loops
    celsius.removeVerifyListener(this);
    celsius.removeModifyListener(this);
    fahrenheit.removeVerifyListener(this);
    fahrenheit.removeModifyListener(this);

    // Get the widget whose text was modified
    Text text = (Text) event.widget;

    try {
      // Get the modified text
      int temp = Integer.parseInt(text.getText());

      // If they modified fahrenheit, convert to Celsius
      if (text == fahrenheit) {
        celsius.setText(String.valueOf((int) (FIVE_NINTHS * (temp - 32))));
      } else {
        // Convert to fahrenheit
        fahrenheit.setText(String.valueOf((int) (NINE_FIFTHS * temp + 32)));
      }
    } catch (NumberFormatException e) { /* Ignore */ }

    // Add the listeners back
    celsius.addVerifyListener(this);
    celsius.addModifyListener(this);
    fahrenheit.addVerifyListener(this);
    fahrenheit.addModifyListener(this);
  }

  /**
   * The application entry point
   * @param args the command line arguments
   */
  public static void main(String[] args) {
    new MultipleListenersExample().run();
  }
}


           
       








Related examples in the same category

1.ModifyEvent: Temperature Converter JFaceModifyEvent: Temperature Converter JFace
2.Mouse Event Listener Mouse Event Listener
3.Utility class for event handling
4.Demonstrates mouse eventsDemonstrates mouse events
5.Demonstrates ControlListenersDemonstrates ControlListeners
6.SelectionListener and DisposeListenerSelectionListener and DisposeListener
7.Demonstrates FocusListenerDemonstrates FocusListener
8.Demonstrates LineBackgroundListenersDemonstrates LineBackgroundListeners
9.Key Listener Example