import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

public class OngletsDemo2 extends JApplet {
  AudioClip layoutson;
  AudioClip tabson;		

  public void init() {
    JLabel loading = new JLabel("Initialisation en cours...", JLabel.CENTER);
    setContentPane(loading);
		setVisible(true);		
		getRootPane().revalidate();
    try{
	    Thread.sleep(1000);
		}
		catch (InterruptedException e) {};
		layoutson = getAudioClip(getCodeBase(), "switch.wav");
		tabson = getAudioClip(getCodeBase(), "tab.wav");
		Panneau panneau = new Panneau();
		panneau.addAudioClips(layoutson,tabson);
    setContentPane(panneau);
	}
}
class Panneau extends JPanel  implements ActionListener {
	String [] imageNames = {
    "arques","berstel","crochemore","desarmenien","duris",
    "laporte","lascoux","michelin","perrin","revuz",
    "roussel","thibon"};
  ImageIcon[] images = new ImageIcon[imageNames.length];
  ImageIcon tabimage;
  JTabbedPane tabbedPane;
  String[] boutonNames = {"TOP","BOTTOM","LEFT","RIGHT","add","remove"};
  JButton[] boutons= new JButton[boutonNames.length];
  JLabel statut; 
  AudioClip layoutson;
  AudioClip tabson;
  // setStatus() affiche message
  // createTab() ajoute feuille
  // killTab() enleve feuille
  // actionPerformed() change les onglets de place

	Panneau() {
		tabimage = new ImageIcon("gifs/tabimage.gif");
		for (int i = 0 ; i < images.length; i++)
			images[i] = new ImageIcon("gifs/" + imageNames[i] +".jpg");  
		for (int i = 0; i < boutons.length; i++)
			boutons[i] = new JButton(boutonNames[i]);
		statut = new JLabel();

		JPanel buttonPanel = new JPanel();
		buttonPanel.setLayout(new GridLayout(0,1));
		for (int i = 0; i < boutons.length ; i++){
			boutons[i].addActionListener(this);
	    buttonPanel.add(boutons[i]);
		}
		JPanel leftPanel = new JPanel();
		leftPanel.add(buttonPanel);
		//lowerPanel.add(statut, BorderLayout.SOUTH);

		tabbedPane = new JTabbedPane(SwingConstants.TOP);
		createTab();
		createTab();
		createTab();
		createTab();

		tabbedPane.addChangeListener(new ChangeListener(){
			public void stateChanged(ChangeEvent e) {
				setStatus(((JTabbedPane) e.getSource()).getSelectedIndex());
				tabson.play();
			}
		});
       
		setLayout(new BorderLayout()); 
		add(leftPanel, BorderLayout.WEST);
		add(statut, BorderLayout.SOUTH);
		add(tabbedPane, BorderLayout.CENTER);
		//getRootPane().revalidate(); 
  }

	void addAudioClips(AudioClip layoutson, AudioClip tabson) {
		this.layoutson = layoutson;
		this.tabson = tabson;
	}

  public void createTab() {
    JLabel feuille = null;
    int ong = tabbedPane.getTabCount();
    feuille = new JLabel(imageNames[ong % images.length], 
      images[ong % images.length], SwingConstants.CENTER);
    feuille.setOpaque(true);
    feuille.setBackground(Color.green);
    tabbedPane.addTab("Onglet No " + ong, tabimage, feuille);
		tabbedPane.setSelectedIndex(ong);
    setStatus(ong);
  }

  public void killTab() {
    if (tabbedPane.getTabCount() > 0) {
      tabbedPane.removeTabAt(tabbedPane.getTabCount()-1);
      setStatus(tabbedPane.getSelectedIndex());
    }
    else
      setStatus(-1);
  }

  public void setStatus(int index) {
    if (index > -1)
      statut.setText(" Feuille choisie: " + index);
    else
      statut.setText(" Pas de feuille choisie");
  }

  public void actionPerformed(ActionEvent e) {
    String lib = ((JButton) e.getSource()).getActionCommand();
    if (lib.equals(boutonNames[0])) {
      tabbedPane.setTabPlacement(SwingConstants.TOP);
      layoutson.play();
    }
    else if(lib.equals(boutonNames[1])) {
      tabbedPane.setTabPlacement(SwingConstants.BOTTOM);
      layoutson.play();
    }
    else if(lib.equals(boutonNames[2])) {
      tabbedPane.setTabPlacement(SwingConstants.LEFT);
      layoutson.play();
    }
    else if(lib.equals(boutonNames[3])) {
      tabbedPane.setTabPlacement(SwingConstants.RIGHT);
      layoutson.play();
    }
    else if(lib.equals(boutonNames[4])) 
      createTab();
    else if(lib.equals(boutonNames[5])) 
      killTab();
 } 
}
