Mercurial > hg > jslab
annotate 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 |
rev | line source |
---|---|
samer@0 | 1 package samer.core.util.heavy; |
samer@0 | 2 import samer.core.*; |
samer@0 | 3 import java.awt.*; |
samer@0 | 4 import java.awt.event.*; |
samer@0 | 5 |
samer@0 | 6 public class TextualNumberViewer extends VPanel |
samer@0 | 7 implements NumberViewer, FocusListener, ActionListener |
samer@0 | 8 { |
samer@0 | 9 TextField rt; |
samer@0 | 10 NumberSink model; |
samer@0 | 11 boolean real; |
samer@0 | 12 |
samer@0 | 13 public TextualNumberViewer(String label, int flags, NumberSink model) |
samer@0 | 14 { |
samer@0 | 15 setLayout(new BorderLayout()); |
samer@0 | 16 setName(label); |
samer@0 | 17 |
samer@0 | 18 rt = new TextField(Shell.getInt("field.width",4)); |
samer@0 | 19 rt.setBackground(Shell.getColor("field.background",null)); |
samer@0 | 20 rt.setForeground(Shell.getColor("field.foreground",null)); |
samer@0 | 21 add( rt,"East"); |
samer@0 | 22 |
samer@0 | 23 if (model!=null) { |
samer@0 | 24 this.model=model; |
samer@0 | 25 rt.addFocusListener(this); |
samer@0 | 26 rt.addActionListener(this); |
samer@0 | 27 real = ((flags & INTEGER)==0); |
samer@0 | 28 } |
samer@0 | 29 } |
samer@0 | 30 |
samer@0 | 31 public void set(int num) { |
samer@0 | 32 rt.setText(String.valueOf(num)); |
samer@0 | 33 } |
samer@0 | 34 public void set(double num) { |
samer@0 | 35 rt.setText(X.string(num)); |
samer@0 | 36 } |
samer@0 | 37 |
samer@0 | 38 private void textChanged() { |
samer@0 | 39 if (real) model.set(X.parseDouble(rt.getText())); |
samer@0 | 40 else model.set(Integer.decode(rt.getText()).intValue()); |
samer@0 | 41 } |
samer@0 | 42 |
samer@0 | 43 public void focusGained( FocusEvent e) {} |
samer@0 | 44 public void focusLost( FocusEvent e) { textChanged(); } |
samer@0 | 45 public void actionPerformed( ActionEvent e) { textChanged(); } |
samer@0 | 46 } |
samer@0 | 47 |