view src/samer/core_/viewers/NumberViewer.java @ 5:b67a33c44de7

Remove some crap, etc
author samer
date Fri, 05 Apr 2019 21:34:25 +0100
parents bf79fb79ee13
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.*;


abstract class NumberViewer extends VariableViewer implements
	FocusListener, AdjustmentListener, ActionListener
{
	TextField	t;

	protected NumberViewer(Variable v) 
	{ 
		super(v);
		setLayout(layout); 
	}

	protected void init()
	{
		Component s = createSlider();
		((Adjustable)s).addAdjustmentListener(this);

		t = new TextField(4); 
		t.addFocusListener(this);
		t.addActionListener(this);

		// panel().add(l,"West");
		panel().add(s,"Center");
		panel().add(t,"East");
		update(null,null);
	}

	protected abstract Component createSlider();
	protected abstract void getText() throws Exception;
	protected abstract void setText();
	protected abstract void getSlider();
	protected abstract void setSlider();

	// ....... Viewer bits ...................................

	public void update(Observable o, Object source)
	{ 
		if (source!=this) { // &&&
			setText();
			setSlider();
		}
		super.update(o,source);
	}

/*
	// ??
	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() 
	{
		// enter pressed in text field:
		// read value from text, set slider and
		// notify observers.
		try { 
			getText(); 
			setSlider(); 
			variable.changed(this); 
		}
		catch (Exception ex) { Shell.trace(ex.toString()); }
	}

	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(); 
	}
}