Initial commit from SVN.
This commit is contained in:
93
Snippets/src/snippets/TextCurrency.java
Normal file
93
Snippets/src/snippets/TextCurrency.java
Normal file
@@ -0,0 +1,93 @@
|
||||
package snippets;
|
||||
|
||||
import java.text.DecimalFormat;
|
||||
import java.text.NumberFormat;
|
||||
import java.text.ParseException;
|
||||
import java.util.Currency;
|
||||
import java.util.Locale;
|
||||
|
||||
import org.eclipse.swt.*;
|
||||
import org.eclipse.swt.events.*;
|
||||
import org.eclipse.swt.layout.GridData;
|
||||
import org.eclipse.swt.layout.GridLayout;
|
||||
import org.eclipse.swt.widgets.*;
|
||||
|
||||
import com.common.debug.Debug;
|
||||
|
||||
public class TextCurrency {
|
||||
public static boolean disableFocusSelection = false;
|
||||
//public static Currency currency = Currency.getInstance(Locale.US);
|
||||
public static NumberFormat defaultFormat = NumberFormat.getCurrencyInstance(Locale.US);
|
||||
public static boolean ignoreModifyEvents = false;
|
||||
public static Text text = null;
|
||||
|
||||
public static void main(String [] args) {
|
||||
Display display = new Display();
|
||||
Shell shell = new Shell(display);
|
||||
shell.setLayout(new GridLayout(1, false));
|
||||
|
||||
text = new Text(shell, SWT.SINGLE | SWT.BORDER);
|
||||
text.setLayoutData(new GridData(150, -1));
|
||||
text.setText(defaultFormat.format(123));
|
||||
text.addModifyListener(new ModifyListener() {
|
||||
public void modifyText(ModifyEvent event) {
|
||||
if(!ignoreModifyEvents) {
|
||||
int caretPosition = text.getCaretPosition();
|
||||
Number newNumber = null;
|
||||
|
||||
try {
|
||||
ignoreModifyEvents = true;
|
||||
newNumber = defaultFormat.parse(text.getText());
|
||||
text.setText(defaultFormat.format(newNumber));
|
||||
}//if//
|
||||
catch(ParseException e) {
|
||||
Debug.log(e);
|
||||
//Reset text.
|
||||
}//catch//
|
||||
finally {
|
||||
ignoreModifyEvents = false;
|
||||
}//finally//
|
||||
|
||||
text.setSelection(caretPosition);
|
||||
}//if//
|
||||
}
|
||||
});
|
||||
text.addFocusListener(new FocusListener() {
|
||||
public void focusLost(FocusEvent e) {
|
||||
}
|
||||
public void focusGained(FocusEvent e) {
|
||||
if(!disableFocusSelection) {
|
||||
text.getDisplay().asyncExec(new Runnable() {
|
||||
public void run() {
|
||||
text.selectAll();
|
||||
}
|
||||
});
|
||||
}//if//
|
||||
}
|
||||
});
|
||||
text.getShell().addShellListener(new ShellListener() {
|
||||
public void shellIconified(ShellEvent e) {
|
||||
}
|
||||
public void shellDeiconified(ShellEvent e) {
|
||||
}
|
||||
public void shellDeactivated(ShellEvent e) {
|
||||
disableFocusSelection = true;
|
||||
}
|
||||
public void shellActivated(ShellEvent e) {
|
||||
text.getDisplay().asyncExec(new Runnable() {
|
||||
public void run() {
|
||||
disableFocusSelection = false;
|
||||
}
|
||||
});
|
||||
}
|
||||
public void shellClosed(ShellEvent e) {
|
||||
}
|
||||
});
|
||||
|
||||
shell.open();
|
||||
while (!shell.isDisposed()) {
|
||||
if (!display.readAndDispatch()) display.sleep();
|
||||
}
|
||||
display.dispose();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user