Mega Code Archive

 
Categories / Java / SWT Jface Eclipse
 

Demonstrates ControlListeners

//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.graphics.*; import org.eclipse.swt.layout.*; import org.eclipse.swt.widgets.*; /**  * This class demonstrates ControlListeners  */ public class ControlListenerExample {   /**    * Runs the application    */   public void run() {     Display display = new Display();     Shell shell = new Shell(display);     Image image = new Image(display, "rntsoft.gif");     createContents(shell, image);     shell.pack();     shell.open();     while (!shell.isDisposed()) {       if (!display.readAndDispatch()) {         display.sleep();       }     }     if (image != null) image.dispose();     display.dispose();   }   /**    * Creates the main window's contents    *     * @param shell the main window    * @param image the image    */   private void createContents(Shell shell, Image image) {     shell.setLayout(new GridLayout());     // Create a label to hold the image     Label label = new Label(shell, SWT.NONE);     label.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));     label.setImage(image);     shell.setData(label);     // Add the listener     shell.addControlListener(new ControlAdapter() {       public void controlResized(ControlEvent event) {         // Get the event source (the shell)         Shell shell = (Shell) event.getSource();         // Get the source's data (the label)         Label label = (Label) shell.getData();         // Determine how big the shell should be to fit the image         Rectangle rect = shell.getClientArea();         ImageData data = label.getImage().getImageData();         // If the shell is too small, hide the image         if (rect.width < data.width || rect.height < data.height) {           shell.setText("Too small.");           label.setText("I'm melting!");         } else {           // He fits!           shell.setText("Happy Guy Fits!");           label.setImage(label.getImage());         }       }     });   }   /**    * Application entry point    *     * @param args the command line arguments    */   public static void main(String[] args) {     new ControlListenerExample().run();   } }