package jas2.swingstudio;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import jas2.util.*;
import jas2.util.layout.*;

public class RebinSlider extends JToolBar implements ChangeListener, ActionListener 
{
	public RebinSlider() 
	{
		slider = new JSlider();
		slider.setOrientation(JSlider.HORIZONTAL);
		slider.setToolTipText("Rebin Slider");
		text = new JTextField(4);
		text.setToolTipText("Bins");
		text.addActionListener(this);
		xy = new JComboBox(new String[]{"X","Y"});
		xy.setToolTipText("Axis Selector");
		xy.addActionListener(this);
		setState(false);
		xy.setEnabled(false);
		add(slider);
		add(text);
		add(xy);
	}
	public void setModel(BoundedRangeModel xModel, BoundedRangeModel yModel)
	{
		this.xModel = xModel;
		this.yModel = yModel;
		if (xModel != null)
		{
			setModel(xModel);
			xy.setSelectedIndex(0);
		}
		else if (yModel != null)
		{
			setModel(yModel);
			xy.setSelectedIndex(1);
		}
		xy.setEnabled(xModel != null && yModel != null);
		setState(xModel != null || yModel != null);
	}
	private void setModel(BoundedRangeModel model)
	{
		if (model != null)
		{
			slider.setModel(model);
			text.setText(String.valueOf(model.getValue()));
		}	
		
		if (m_model != null) m_model.removeChangeListener(this);
		m_model = model;
		if (m_model != null) m_model.addChangeListener(this);
	}
	public void stateChanged(ChangeEvent ce)
	{
		text.setText(String.valueOf(m_model.getValue()));
	}
	public void actionPerformed(ActionEvent ae)
	{
		Object source = ae.getSource();
		if (source == text)
		{
			try
			{
				m_model.setValue(Integer.parseInt(text.getText()));
			}
			catch (NumberFormatException x) {}
		}
		else if (source == xy)
		{
			int index = xy.getSelectedIndex();
			if (index == 0) setModel(xModel);
			else            setModel(yModel);
		}
	}
	private void setState(boolean state)
	{
		slider.setEnabled(state);
		text.setEnabled(state);
	}
	private JSlider slider;
	private JTextField text;
	private JComboBox xy;
	private BoundedRangeModel m_model;		
	private BoundedRangeModel xModel;
	private BoundedRangeModel yModel;
}

 

Ads help maintain this website.