package fr.umlv.uidemo.slider;

import java.awt.BorderLayout;

import javax.swing.*;
import javax.swing.event.*;
import javax.swing.event.ChangeListener;

/**
 * @author Remi Forax
 *
 */
public class EventSliderExample {

  private static JSlider createSlider(final JSplitPane pane) {
    final BoundedRangeModel model=new DefaultBoundedRangeModel(0,1,0,100);
    JSlider slider=new JSlider(model);
    
    slider.getModel().addChangeListener(new ChangeListener() {
      public void stateChanged(ChangeEvent e) {
        double location=model.getValue()/(double)model.getMaximum();
        pane.setDividerLocation(location);
      }
    });
    
    return slider;
  }

  public static void main(String[] args) {
    
    final JSplitPane hPane=new JSplitPane(
      JSplitPane.VERTICAL_SPLIT,true,
      new JLabel(),new JLabel());
    
    JSplitPane vPane=new JSplitPane(
      JSplitPane.HORIZONTAL_SPLIT,true,
      hPane,new JLabel());
    
    JSlider hSlider=createSlider(hPane);
    hSlider.setOrientation(JSlider.VERTICAL);
    hSlider.setInverted(true);
    JSlider vSlider=createSlider(vPane);
    
    JPanel panel=new JPanel(new BorderLayout());
    panel.add(hSlider,BorderLayout.EAST);
    panel.add(vSlider,BorderLayout.SOUTH);
    panel.add(vPane);
    
    JFrame frame=new JFrame("EventSliderExample");
    frame.setContentPane(panel);
    frame.pack();
    frame.show();
    
  }
}
