/**
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();
}
}
|