/*
 * Created on Nov 2, 2005
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package de.tuberlin.polymake.common;

import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JSpinner;
import javax.swing.SpinnerNumberModel;



/**
 * @author wotzlaw
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class JRealitySpinner extends JSpinner implements ActionListener{
	
	protected Box hBox = new Box(BoxLayout.X_AXIS);
	protected double defaultValue;
	protected SpinnerNumberModel numModel;
	protected JLabel label;
	//protected JButton reset = new JButton("\u25ab");
	protected JButton reset = new JButton("reset");
	//protected JSpinner spinner;
	
	//protected JRealityFrame parent;
	
	public JRealitySpinner(
			String labelText,
			double defaultValue, double min, double max,double stepsize ) {
		
		super();
		
		//this.parent = parent;
		
		this.defaultValue = defaultValue;
		numModel = new SpinnerNumberModel(
				new Double(defaultValue),
				new Double(min),
				new Double(max),
				new Double(stepsize)
		);		
		reset.setMargin(new java.awt.Insets(0,0,0,0));
		reset.setPreferredSize(
				new java.awt.Dimension(20,20)
		);
		reset.setMaximumSize(
				new java.awt.Dimension(20,20)
		);
		reset.setAlignmentY(Box.CENTER_ALIGNMENT);
		
		reset.addActionListener(this);
		numModel.setValue(new Double(defaultValue));
		
		this.setModel(numModel);
		//self=new javax.swing.JSpinner(ingr0);
		this.setPreferredSize(
				new java.awt.Dimension(60,20)
		);
		this.setMaximumSize(
				new java.awt.Dimension(60,20)
		);
		this.setBorder(
				new javax.swing.border.CompoundBorder(
						new javax.swing.border.EmptyBorder(0,2,0,2),
						this.getBorder()
				)
		);
		
		
		//spinner.addChangeListener(this);
		label = new JLabel(labelText);
		label.setBorder(
				new javax.swing.border.EmptyBorder(0,4,0,2)
		);
		hBox.add(label);
		hBox.add(this);
		hBox.add(reset);
		
		
	}
	public void setVisible(boolean vis) {
		super.setVisible(vis);
		label.setVisible(vis);
		reset.setVisible(vis);
	}
	
	public Component getComponent() {
		return hBox;
	}
	
	/* (non-Javadoc)
	 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
	 */
	public void actionPerformed(ActionEvent e) {
		Object source = e.getSource();
		if(source == reset) {
			numModel.setValue(new Double(defaultValue));
		}		
	}
	
	
}


syntax highlighted by Code2HTML, v. 0.9.1