/**
 * @version 1.00 1999-07-17
 * @author Cay Horstmann
 */

import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.event.*;
import Composants.PlafMenu;

public class CurseurTest {
  public static void main(String[] args) {
    JFrame f = new JFrame();
		f.setTitle("Test de curseurs");
		f.setContentPane(new CurseurPanel());
		JMenuBar bMenu = new JMenuBar();
    bMenu.add(new PlafMenu());
    f.getRootPane().setJMenuBar(bMenu);

		f.setSize(600, 400);
		f.addWindowListener(new WindowAdapter() {
				public void windowClosing(WindowEvent e) {
          System.exit(0);
				}
		} );
		f.show();
	}
}

class CurseurPanel extends JPanel {
  private GridBagConstraints gbc = new GridBagConstraints();

	public CurseurPanel() {
    setLayout(new GridBagLayout());
		gbc.weighty = 1;
		gbc.gridwidth = 1;
		gbc.gridheight = 1;
		gbc.gridy = 0;

    JSlider curseur;

		curseur = new JSlider();
		addSlider(curseur, "Plain");

		curseur = new JSlider();
		curseur.setPaintTicks(true);
		curseur.setMajorTickSpacing(20);
		curseur.setMinorTickSpacing(5);
		addSlider(curseur, "Marques");

		curseur = new JSlider();
		curseur.setPaintTicks(true);
		curseur.setSnapToTicks(true);
		curseur.setMajorTickSpacing(20);
		curseur.setMinorTickSpacing(5);
		addSlider(curseur, "Snap to ticks");

		curseur = new JSlider();
		curseur.setPaintTicks(true);
		curseur.setMajorTickSpacing(20);
		curseur.setMinorTickSpacing(5);
		curseur.putClientProperty("JSlider.isFilled", Boolean.TRUE);
		addSlider(curseur, "Remplie");

		curseur = new JSlider();
		curseur.setPaintTicks(true);
		curseur.setMajorTickSpacing(20);
		curseur.setMinorTickSpacing(5);
		curseur.putClientProperty("JSlider.isFilled", Boolean.TRUE);
		curseur.setInverted(true);
		addSlider(curseur, "Inversée");

		curseur = new JSlider();
		curseur.setPaintTicks(true);
		curseur.setPaintLabels(true);
		curseur.setMajorTickSpacing(20);
		curseur.setMinorTickSpacing(5);
		addSlider(curseur, "Etiquettes");

		curseur = new JSlider();
		curseur.setPaintLabels(true);
		curseur.setPaintTicks(true);
		curseur.setMajorTickSpacing(20);
		curseur.setMinorTickSpacing(5);

		Hashtable labelTable = new Hashtable();
		labelTable.put(new Integer(0), new JLabel("A"));
		labelTable.put(new Integer(20), new JLabel("B"));
		labelTable.put(new Integer(40), new JLabel("C"));
		labelTable.put(new Integer(60), new JLabel("D"));
		labelTable.put(new Integer(80), new JLabel("E"));
		labelTable.put(new Integer(100), new JLabel("F"));
		
		curseur.setLabelTable(labelTable);
		addSlider(curseur, "Etiquettes personnalisées");

		curseur = new JSlider();
		curseur.setPaintTicks(true);
		curseur.setPaintLabels(true);
		curseur.setSnapToTicks(true);
		curseur.setMajorTickSpacing(20);
		curseur.setMinorTickSpacing(20);

		labelTable = new Hashtable();
		labelTable.put(new Integer(0),
				 new JLabel(new ImageIcon("9h.gif")));
		labelTable.put(new Integer(20),
         new JLabel(new ImageIcon("10h.gif")));
		labelTable.put(new Integer(40),
         new JLabel(new ImageIcon("jh.gif")));
		labelTable.put(new Integer(60),
         new JLabel(new ImageIcon("qh.gif")));
		labelTable.put(new Integer(80),
         new JLabel(new ImageIcon("kh.gif")));
		labelTable.put(new Integer(100),
         new JLabel(new ImageIcon("ah.gif")));

		curseur.setLabelTable(labelTable);
		addSlider(curseur, "Icones en étiquettes");
	}

	public void addSlider(JSlider s, String description) {
    final TextField textField = new TextField(3);
      
    s.addChangeListener(new ChangeListener() {
			public void stateChanged(ChangeEvent event) {
			  JSlider source = (JSlider)event.getSource();
				textField.setText("" + source.getValue());
			}
		});
		textField.setText("" + s.getValue());
		gbc.gridx = 0;
		gbc.anchor = GridBagConstraints.WEST;
		gbc.fill = GridBagConstraints.NONE;
		gbc.weightx = 0;
		gbc.ipadx = 12;
		add(new JLabel(description), gbc);

		gbc.gridx++;
		gbc.anchor = GridBagConstraints.CENTER;
		gbc.fill = GridBagConstraints.HORIZONTAL;
		gbc.weightx = 1;
		add(s, gbc);
		
		gbc.gridx++;
		gbc.anchor = GridBagConstraints.WEST;
		gbc.fill = GridBagConstraints.NONE;
		gbc.weightx = 0;
		gbc.ipadx = 0;
		add(textField, gbc);

		gbc.gridy++;
	}
}
