Mega Code Archive

 
Categories / Java / SWT Jface Eclipse
 

Focus Traversal

/******************************************************************************  * Copyright (c) 1998, 2004 Jackwind Li Guojie  * All right reserved.   *   * Created on Jan 24, 2004 10:22:42 PM by JACK  * $Id$  *   * visit: http://www.asprise.com/swt  *****************************************************************************/ import org.eclipse.swt.SWT; import org.eclipse.swt.events.KeyEvent; import org.eclipse.swt.events.KeyListener; import org.eclipse.swt.events.TraverseEvent; import org.eclipse.swt.events.TraverseListener; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.GC; import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.layout.RowLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Canvas; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.List; import org.eclipse.swt.widgets.Shell; public class FocusTraversal {   Display display = new Display();   Shell shell = new Shell(display);   public FocusTraversal() {     init();     shell.pack();     shell.open();     //textUser.forceFocus();     // Set up the event loop.     while (!shell.isDisposed()) {       if (!display.readAndDispatch()) {         // If no more entries in event queue         display.sleep();       }     }     display.dispose();   }   private void init() {     shell.setLayout(new RowLayout());          Composite composite1 = new Composite(shell, SWT.BORDER);     composite1.setLayout(new RowLayout());     composite1.setBackground(display.getSystemColor(SWT.COLOR_WHITE));          Button button1 = new Button(composite1, SWT.PUSH);     button1.setText("Button1");          List list = new List(composite1, SWT.MULTI | SWT.BORDER);     list.setItems(new String[]{"Item-1", "Item-2", "Item-3"});          Button radioButton1 = new Button(composite1, SWT.RADIO);     radioButton1.setText("radio-1");     Button radioButton2 = new Button(composite1, SWT.RADIO);     radioButton2.setText("radio-2");          Composite composite2 = new Composite(shell, SWT.BORDER);     composite2.setLayout(new RowLayout());     composite2.setBackground(display.getSystemColor(SWT.COLOR_GREEN));          Button button2 = new Button(composite2, SWT.PUSH);     button2.setText("Button2");          final Canvas canvas = new Canvas(composite2, SWT.NULL);     canvas.setSize(50, 50);     canvas.setBackground(display.getSystemColor(SWT.COLOR_YELLOW));     Combo combo = new Combo(composite2, SWT.DROP_DOWN);     combo.add("combo");     combo.select(0);          canvas.addKeyListener(new KeyListener() {       public void keyPressed(KeyEvent e) {         GC gc = new GC(canvas);         // Erase background first.          Rectangle rect = canvas.getClientArea();         gc.fillRectangle(rect.x, rect.y, rect.width, rect.height);                  Font font = new Font(display, "Arial", 32, SWT.BOLD );         gc.setFont(font);                  gc.drawString("" + e.character, 15, 10);                  gc.dispose();         font.dispose();       }       public void keyReleased(KeyEvent e) {       }     });          canvas.addTraverseListener(new TraverseListener() {       public void keyTraversed(TraverseEvent e) {         if(e.detail == SWT.TRAVERSE_TAB_NEXT ||             e.detail == SWT.TRAVERSE_TAB_PREVIOUS)           e.doit = true;       }     });          composite1.setTabList(new Control[]{button1, list});     composite2.setTabList(new Control[]{button2, canvas, combo});          shell.setTabList(new Control[]{composite2, composite1});   }   public static void main(String[] args) {     new FocusTraversal();   } }