Mega Code Archive

 
Categories / Java / SWT Jface Eclipse
 

SWT Spinner Test

/*  * (c) Copyright IBM Corp. 2000, 2001. All Rights Reserved.  */ import java.util.Hashtable; import org.eclipse.swt.SWT; import org.eclipse.swt.SWTError; import org.eclipse.swt.events.ControlAdapter; import org.eclipse.swt.events.ControlEvent; import org.eclipse.swt.events.DisposeEvent; import org.eclipse.swt.events.DisposeListener; import org.eclipse.swt.events.FocusAdapter; import org.eclipse.swt.events.FocusEvent; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.layout.RowLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.TypedListener; public class SpinnerTest {   public static void main(String[] args) {     Display display = new Display();     Shell shell = new Shell(display);     shell.setLayout(new RowLayout());     final Spinner spinner = new Spinner(shell, 0);     spinner.setMaximum(999);     System.out.println("max set to " + spinner.getMaximum());     spinner.setSelection(500);     System.out.println("selection set to " + spinner.getSelection());     spinner.setMinimum(100);     System.out.println("min set to " + spinner.getMinimum());     Font font = new Font(display, "Courier", 20, SWT.NORMAL);     spinner.setFont(font);     spinner.addSelectionListener(new SelectionAdapter() {       public void widgetSelected(SelectionEvent e) {         System.out.println(spinner.getSelection());       }     });     shell.pack();     shell.open();     while (!shell.isDisposed()) {       if (!display.readAndDispatch())         display.sleep();     }     font.dispose();   } } class Spinner extends Composite {   int handleSpinner;   static Hashtable table = new Hashtable();   static {     System.loadLibrary("spinner");   }   public Spinner(Composite parent, int style) {     super(parent, style);     int handleParent = handle;     handleSpinner = createControl(handleParent);     if (handleSpinner == 0)       SWT.error(SWT.ERROR_NO_HANDLES);     table.put(new Integer(handleSpinner), this);     addDisposeListener(new DisposeListener() {       public void widgetDisposed(DisposeEvent e) {         Spinner.this.widgetDisposed(e);       }     });     addControlListener(new ControlAdapter() {       public void controlResized(ControlEvent e) {         Spinner.this.controlResized(e);       }     });     addFocusListener(new FocusAdapter() {       public void focusGained(FocusEvent e) {         Spinner.this.focusGained(e);       }     });     Font font = getFont();     setFont(handleSpinner, font.handle);   }   public void setFont(Font font) {     super.setFont(font);     int hFont = 0;     if (font != null)       hFont = font.handle;     setFont(handleSpinner, hFont);   }   public int getSelection() {     checkWidget();     return getPosition(handleSpinner);   }   public void setSelection(int selection) {     checkWidget();     setPosition(handleSpinner, selection);   }   public void setMaximum(int maximum) {     checkWidget();     setMaximum(handleSpinner, maximum);   }   public int getMaximum() {     checkWidget();     return getMaximum(handleSpinner);   }   public void setMinimum(int minimum) {     checkWidget();     setMinimum(handleSpinner, minimum);   }   public int getMinimum() {     checkWidget();     return getMinimum(handleSpinner);   }   public void widgetDisposed(DisposeEvent e) {     table.remove(new Integer(handleSpinner));     handleSpinner = 0;   }   public void controlResized(ControlEvent e) {     Rectangle rect = getClientArea();     resizeControl(handleSpinner, rect.x, rect.y, rect.width, rect.height);   }   public void focusGained(FocusEvent e) {     setFocus(handleSpinner);   }   public Point computeSize(int wHint, int hHint, boolean changed) {     checkWidget();     int[] result = new int[2];     computeSize(handleSpinner, result);     if (wHint != SWT.DEFAULT)       result[0] = wHint;     if (hHint != SWT.DEFAULT)       result[1] = hHint;     int border = getBorderWidth();     return new Point(result[0] + border * 2, result[1] + border * 2);   }   public void addSelectionListener(SelectionListener listener) {     if (listener == null)       throw new SWTError(SWT.ERROR_NULL_ARGUMENT);     addListener(SWT.Selection, new TypedListener(listener));   }   static void widgetSelected(int handle) {     Spinner spinner = (Spinner) table.get(new Integer(handle));     if (spinner == null)       return;     spinner.notifyListeners(SWT.Selection, new Event());   }   /** ********* JAVA NATIVES *********** */   static final native int createControl(int handle);   static final native void computeSize(int handle, int[] result);   static final native void resizeControl(int handle, int x, int y, int width,       int height);   static final native void setPosition(int handle, int position);   static final native int getPosition(int handle);   static final native void setMaximum(int handle, int max);   static final native int getMaximum(int handle);   static final native void setMinimum(int handle, int min);   static final native int getMinimum(int handle);   static final native void setFont(int handle, int hFont);   static final native void setFocus(int handle); }