package fr.umlv.uidemo.slider;

import java.awt.GridLayout;
import java.util.Hashtable;

import javax.swing.*;

/**
 * @author Remi Forax
 *
 */
public class SimpleSliderExample {
 
  private static JSlider createPlainSlider() {
    return new JSlider(0,100,50);
  }
  
  private static JSlider createNoTrackSlider() {
    JSlider slider=createPlainSlider();
    slider.setPaintTrack(false);
    return slider;
  }
  
  private static JSlider createTicksSlider() {
    JSlider slider=createPlainSlider();
    slider.setPaintTicks(true);
    slider.setMajorTickSpacing(10);
    slider.setMinorTickSpacing(2);
    return slider;
  }
  
  private static JSlider createSnapToTicksSlider() {
    JSlider slider=createTicksSlider();
    slider.setSnapToTicks(true);
    return slider;
  }
  
  private static JSlider createFillSlider() {
    JSlider slider=createTicksSlider();
    slider.putClientProperty("JSlider.isFilled", Boolean.TRUE);
    return slider;
  }
  
  private static JSlider createInvertedSlider() {
    JSlider slider=createFillSlider();
    slider.setInverted(true);
    return slider;
  }
  
  private static JSlider createLabelSlider() {
    JSlider slider=createTicksSlider();
    slider.setPaintLabels(true);
    return slider;
  }
  
  private static JSlider createCustomLabelSlider() {
    JSlider slider=createTicksSlider();
    slider.setPaintLabels(true);
    
    Hashtable table=new Hashtable();
    for(int i=0;i<=100;i+=20)
      table.put(new Integer(i),new JLabel("text "+i));
    
    slider.setLabelTable(table);
    return slider;
  }

  public static void main(String[] args) {
    
    Object[] sliders=new Object[]{
      "Plain",        createPlainSlider(),
      "NoTrack",      createNoTrackSlider(),
      "Ticks",        createTicksSlider(),
      "Snap",         createSnapToTicksSlider(),
      "Fill",         createFillSlider(),
      "Inverted",     createInvertedSlider(),
      "Label",        createLabelSlider(),
      "Custom Label", createCustomLabelSlider()
    };
    
    
    JPanel panel=new JPanel(new GridLayout(sliders.length/2,0));
    for(int i=0;i<sliders.length;i+=2) {
      JSlider slider=(JSlider)sliders[i+1];
      slider.setBorder(BorderFactory.createTitledBorder(
        (String)sliders[i]));
      panel.add(slider);
    }
    
    JFrame frame=new JFrame("SimpleSliderExample");
    frame.setContentPane(panel);
    frame.setSize(600,400);
    frame.show();
    
  }
}
