package fr.umlv.uidemo.slider;

import java.util.ArrayList;

import javax.swing.*;
import javax.swing.event.*;
import javax.swing.event.ChangeListener;

/**
 * @author Remi Forax
 *
 */
public class SliderExample {

  static class FirstSliderModel implements BoundedRangeModel {

    public int getExtent() {
      if (value==getMinimum() || value==getMaximum())
        return 0;
      else
        return 1;
    }

    public int getMaximum() {
      return 100;
    }

    public int getMinimum() {
      return 0;
    }

    public int getValue() {
      return value;
    }

    public boolean getValueIsAdjusting() {
      return isAdjusting;
    }

    public void setExtent(int newExtent) {
      throw new UnsupportedOperationException();
    }

    public void setMaximum(int newMaximum) {
      throw new UnsupportedOperationException();
    }

    public void setMinimum(int newMinimum) {
      throw new UnsupportedOperationException();
    }

    public void setValue(int newValue) {
      this.value=newValue;
      if (value<getMinimum())
        value=getMinimum();
      else
        if (value>getMaximum())
          value=getMaximum();
        
      fireValueChanged();
    }

    public void setRangeProperties(int value, int extent, int min, int max, boolean adjusting) {
      throw new UnsupportedOperationException();
    }

    public void setValueIsAdjusting(boolean isAdjusting) {
      this.isAdjusting=isAdjusting;
    }

    public void addChangeListener(ChangeListener l) {
      list.add(l);
    }

    public void removeChangeListener(ChangeListener l) {
      list.remove(l);
    }
    
    protected void fireValueChanged() {
      ChangeEvent event=new ChangeEvent(this);
      for(int i=list.size();--i>=0;)
        ((ChangeListener)list.get(i)).stateChanged(event);
    }
    
    private int value;
    private boolean isAdjusting;
    private ArrayList list=new ArrayList();
  }

  public static void main(String[] args) {
    
    BoundedRangeModel model=new FirstSliderModel(); 
    //BoundedRangeModel model=new DefaultBoundedRangeModel(0,1,0,100);
    
    JSlider slider1=new JSlider(model);
    JSlider slider2=new JSlider(model);
    
    JFrame frame=new JFrame("TreeExample");
    frame.setContentPane(new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,
      slider1,slider2));
    frame.pack();
    frame.show();
  }
}
