TextField Example 4
/** The following code is from Michael Schmidt(MichaelMSchmidt (at) msn.com). The code is published under BSD license. Thanks for the input from Michael Schmidt. */ package TextTest; import org.eclipse.swt.SWT; import org.eclipse.swt.events.FocusEvent; import org.eclipse.swt.events.FocusListener; import org.eclipse.swt.events.MouseAdapter; import org.eclipse.swt.events.MouseEvent; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; /** * This is a revision of TextFieldExample4. Two modifications have been made. * First, a Text value (ABC) has been added to the text2 field, simply for * demonstration purposes. Second, a mouseDown() listener has been added to * text2. Note that in the original sample, text2 would not highlight (perform * the selectAll() operation) when it gained focus with the mouse. This is * because clicking on the field invokes gainFocus() followed by mouseDown(), * and mouseDown() does a clearSelection(), negating the selectAll() done in * the gainFocus() method. You can test this by simply commenting out the * addMouseListener code. * <p> * Other modifications are possible. The Text field may be designated * read-only to prevent editing and erasing of the field when the tab key is * used to move through the widgets. Logic can also be used to do a selectAll() * when you first click on the field and then place the I-beam cursor if the * mouse is clicked again. * * @author Michael Schmidt * */ public class TextFieldExample4Revised { Display d; Shell s; TextFieldExample4Revised() { d = new Display(); s = new Shell(d); s.setSize(250, 250); s.setText("A Text Field Example"); Text text1 = new Text(s, SWT.WRAP | SWT.BORDER); text1.setBounds(100, 50, 100, 20); text1.setTextLimit(5); text1.setText("12345"); Text text2 = new Text(s, SWT.SINGLE | SWT.BORDER); text2.setBounds(100, 75, 100, 20); text2.setTextLimit(30); text2.setText("ABC"); // add a focus listener FocusListener focusListener = new FocusListener() { public void focusGained(FocusEvent e) { Text t = (Text) e.widget; t.selectAll(); } public void focusLost(FocusEvent e) { Text t = (Text) e.widget; if (t.getSelectionCount() > 0) { t.clearSelection(); } } }; text1.addFocusListener(focusListener); text2.addFocusListener(focusListener); // Added code - comment out to test without the mouseListener text2.addMouseListener(new MouseAdapter() { public void mouseDown(final MouseEvent e) { Text t = (Text) e.widget; t.selectAll(); } }); // End of added code s.open(); while (!s.isDisposed()) { if (!d.readAndDispatch()) d.sleep(); } d.dispose(); } public static void main(String[] arg) { new TextFieldExample4Revised(); } } //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// import org.eclipse.swt.SWT; import org.eclipse.swt.events.FocusEvent; import org.eclipse.swt.events.FocusListener; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; public class TextFieldExample4 { Display d; Shell s; TextFieldExample4() { d = new Display(); s = new Shell(d); s.setSize(250, 250); s.setText("A Text Field Example"); Text text1 = new Text(s, SWT.WRAP | SWT.BORDER); text1.setBounds(100, 50, 100, 20); text1.setTextLimit(5); text1.setText("12345"); Text text2 = new Text(s, SWT.SINGLE | SWT.BORDER); text2.setBounds(100, 75, 100, 20); text2.setTextLimit(30); // add a focus listener FocusListener focusListener = new FocusListener() { public void focusGained(FocusEvent e) { Text t = (Text) e.widget; t.selectAll(); } public void focusLost(FocusEvent e) { Text t = (Text) e.widget; if (t.getSelectionCount() > 0) { t.clearSelection(); } } }; text1.addFocusListener(focusListener); text2.addFocusListener(focusListener); s.open(); while (!s.isDisposed()) { if (!d.readAndDispatch()) d.sleep(); } d.dispose(); } public static void main(String[] arg) { new TextFieldExample4(); } }