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