Mercurial > hg > jslab
diff src/samer/core_/util/heavy/TextualNumberViewer.java @ 0:bf79fb79ee13
Initial Mercurial check in.
author | samer |
---|---|
date | Tue, 17 Jan 2012 17:50:20 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/samer/core_/util/heavy/TextualNumberViewer.java Tue Jan 17 17:50:20 2012 +0000 @@ -0,0 +1,47 @@ +package samer.core.util.heavy; +import samer.core.*; +import java.awt.*; +import java.awt.event.*; + +public class TextualNumberViewer extends VPanel + implements NumberViewer, FocusListener, ActionListener +{ + TextField rt; + NumberSink model; + boolean real; + + public TextualNumberViewer(String label, int flags, NumberSink model) + { + setLayout(new BorderLayout()); + setName(label); + + rt = new TextField(Shell.getInt("field.width",4)); + rt.setBackground(Shell.getColor("field.background",null)); + rt.setForeground(Shell.getColor("field.foreground",null)); + add( rt,"East"); + + if (model!=null) { + this.model=model; + rt.addFocusListener(this); + rt.addActionListener(this); + real = ((flags & INTEGER)==0); + } + } + + public void set(int num) { + rt.setText(String.valueOf(num)); + } + public void set(double num) { + rt.setText(X.string(num)); + } + + private void textChanged() { + if (real) model.set(X.parseDouble(rt.getText())); + else model.set(Integer.decode(rt.getText()).intValue()); + } + + public void focusGained( FocusEvent e) {} + public void focusLost( FocusEvent e) { textChanged(); } + public void actionPerformed( ActionEvent e) { textChanged(); } +} +