Mega Code Archive

 
Categories / Java / SWT Jface Eclipse
 

Text Event

/******************************************************************************  * Copyright (c) 1998, 2004 Jackwind Li Guojie  * All right reserved.   *   * Created on Jan 16, 2004 1:23:25 AM by JACK  * $Id$  *   * visit: http://www.asprise.com/swt  *****************************************************************************/ import org.eclipse.swt.SWT; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; public class TemperatureConverter {   Display display = new Display();   Shell shell = new Shell(display);   Label fahrenheitLabel;   Label celsiusLabel;   Label messageLabel;   Text fahrenheitValue;   Text celsiusValue;   public TemperatureConverter() {     shell.setText("SWT Temperature Converter");     shell.setLayout(new GridLayout(4, false));     fahrenheitLabel = new Label(shell, SWT.NULL);     fahrenheitLabel.setText("Fahrenheit: ");     fahrenheitValue = new Text(shell, SWT.SINGLE | SWT.BORDER);     celsiusLabel = new Label(shell, SWT.NULL);     celsiusLabel.setText("Celsius: ");     celsiusValue = new Text(shell, SWT.SINGLE | SWT.BORDER);          messageLabel = new Label(shell, SWT.BORDER);     GridData gridData = new GridData(GridData.FILL_BOTH);     gridData.horizontalSpan = 4;     messageLabel.setLayoutData(gridData);     ModifyListener listener = new ModifyListener() {       public void modifyText(ModifyEvent e) {         valueChanged((Text) e.widget);       }     };     fahrenheitValue.addModifyListener(listener);     celsiusValue.addModifyListener(listener);     shell.pack();     shell.open();     // Set up the event loop.     while (!shell.isDisposed()) {       if (!display.readAndDispatch()) {         // If no more entries in event queue         display.sleep();       }     }     display.dispose();   }   /**    * Performs conversion when one of the text fields changes.    *     * @param text    *            the event source    */   public void valueChanged(Text text) {     if (!text.isFocusControl())       return;     if (text == fahrenheitValue) {       try {         double fValue = Double.parseDouble(text.getText());         double cValue = (fValue - 32) / 1.8;         celsiusValue.setText(Double.toString(cValue));         System.out.println("F -> C: " + cValue);         messageLabel.setText("Conversion performed successfully.");       } catch (NumberFormatException e) {         celsiusValue.setText("");         messageLabel.setText("Invalid number format: " + text.getText());       }     } else {       try {         double cValue = Double.parseDouble(text.getText());         double fValue = cValue * 1.8 + 32;         fahrenheitValue.setText(Double.toString(fValue));         System.out.println("C -> F: " + fValue);         messageLabel.setText("Conversion performed successfully.");       } catch (NumberFormatException e) {         fahrenheitValue.setText("");         messageLabel.setText("Invalid number format: " + text.getText());       }     }   }   public static void main(String[] args) {     new TemperatureConverter();   } }