Mercurial > hg > jslab
view src/samer/core_/util/heavy/NumberViewer.java.not @ 0:bf79fb79ee13
Initial Mercurial check in.
| author | samer |
|---|---|
| date | Tue, 17 Jan 2012 17:50:20 +0000 |
| parents | |
| children |
line wrap: on
line source
/* * NumberViewer.java * * Copyright (c) 2000, Samer Abdallah, King's College London. * All rights reserved. * * This software is provided AS iS and WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. */ package samer.core.viewers; import samer.core.util.*; import samer.core.*; import java.awt.*; import java.awt.event.*; import java.util.*; import samer.tools.VMap; public class NumberViewer extends VPanel implements FocusListener, AdjustmentListener, ActionListener { protected static final VLayout layout = new VLayout(1,6); DoubleModel dm; TextField t; Scrollbar s; VMap map; public detach() { dm=null; super.detach(); } protected NumberViewer(Viewer vwr, String label, DoubleModel dm) { super(vwr); setLayout(layout); setName(label); s = new Scrollbar( Scrollbar.HORIZONTAL, 0, 10, 0, map.getIntRange()); s.addAdjustmentListener(this); t = new TextField(4); t.addFocusListener(this); t.addActionListener(this); add(s,"Center"); add(t,"East"); this.dm=dm; } public void set(int num) { t.setText(String.valueOf(num)); s.setValue(num); } public void set(double num) { t.setText(X.string(num)); s.setValue(map.toInt(num)); } public Dimension getMinimumSize() { return getPreferredSize(); } public Dimension getPreferredSize() { Dimension d=super.getPreferredSize(); Dimension dl=l.getPreferredSize(); Dimension dt=t.getPreferredSize(); // Need to make room for scroll bar d.width = dl.width + dt.width + 96; // ?? return d; } // ----------- event handling ------------- private void textChanged() { double n=X.parseDouble(t.getText()); s.setValue(map.toInt(num)); if (model!=null) model.set(n); } public void adjustmentValueChanged(AdjustmentEvent e) { getSlider(); setText(); variable.changed(this); } public void focusGained( FocusEvent e) {} public void focusLost( FocusEvent e) { if (e.getSource()==t) textChanged(); } public void actionPerformed( ActionEvent e) { if (e.getSource()==t) textChanged(); } }
