import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import com.sun.java.swing.*;

public class WebMenuBar extends JMenuBar implements ActionListener {
    
    Explorer explorer;
    
    public WebMenuBar(Explorer e) {
	
	explorer = e;
	
	// File
	JMenu file = (JMenu) this.add(new JMenu("File"));
	file.setMnemonic('i');
	
	JMenuItem newItem = file.add(new JMenuItem("New"));
	newItem.setHorizontalTextPosition(JButton.RIGHT);
	newItem.setMnemonic('N');
	newItem.setActionCommand("File-New");
	newItem.addActionListener( this );
	
	file.addSeparator();
	
	JMenuItem exit = (JMenuItem) file.add(new JMenuItem("Exit"));
	exit.setHorizontalTextPosition(JButton.RIGHT);
	exit.setMnemonic('x');
	exit.setActionCommand("File-Exit");
	exit.addActionListener( this );

	// options
	JMenu options = (JMenu) this.add(new JMenu("Options"));
	options.setMnemonic('O');
	
	ButtonGroup group = new ButtonGroup();

	JRadioButtonMenuItem noparentItem = (JRadioButtonMenuItem) options.add(new JRadioButtonMenuItem("No Parent"));
	noparentItem.setSelected(true);
	noparentItem.setActionCommand("Option-noparent");
	noparentItem.addActionListener( this );
	group.add(noparentItem);

	JRadioButtonMenuItem parentItem = (JRadioButtonMenuItem) options.add(new JRadioButtonMenuItem("Parent"));
	parentItem.setActionCommand("Option-parent");
	parentItem.addActionListener( this );
	group.add(parentItem);

	// help
	JMenu help = (JMenu) this.add(new JMenu("Help"));
	help.setMnemonic('H');
	
	JMenuItem aboutItem = help.add(new JMenuItem("About ..."));
	aboutItem.setHorizontalTextPosition(JButton.RIGHT);
	aboutItem.setMnemonic('A');
	aboutItem.setActionCommand("Help-About");
	aboutItem.addActionListener( this );
    }
    
    void buildConstraints(GridBagConstraints gbc, int gx, int gy, int gw, int gh, int wx, int wy) {
	gbc.gridx      = gx;
	gbc.gridy      = gy;
	gbc.gridwidth  = gw;
	gbc.gridheight = gh;
	gbc.weightx    = wx;
	gbc.weighty    = wy;
    }
    
    public void actionPerformed(ActionEvent e) {
	String command = e.getActionCommand();
	if (command.equals("File-New")) {
	    ExplorerThread ex = new ExplorerThread();
	    ex.start();
	}
	if (command.equals("File-Exit")) {
	    explorer.destroy();
	}
	if (command.equals("Option-noparent")) {
	    explorer.setExploreParent( false );
	}
	if (command.equals("Option-parent")) {
	    explorer.setExploreParent( true );
	}
	if (command.equals("Help-About")) {
	    final JDialog dialog = new JDialog();
	    GridBagLayout gridBag          = new GridBagLayout();      /* layout */
	    GridBagConstraints constraints = new GridBagConstraints(); /* contraintes du layout */
	    JPanel panel  = new JPanel();
	    JLabel label;

	    constraints.fill = GridBagConstraints.NONE;
	    panel.setLayout(gridBag);

	    label = new JLabel("SiteMapper");
	    buildConstraints(constraints,1,0,1,1,10,10);
	    gridBag.setConstraints(label,constraints);
	    panel.add(label);

	    label = new JLabel("fait par");
	    buildConstraints(constraints,1,1,1,1,10,10);
	    gridBag.setConstraints(label,constraints);
	    panel.add(label);

	    label = new JLabel("Michael PRIVAT");
	    buildConstraints(constraints,1,2,1,1,0,0);
	    gridBag.setConstraints(label,constraints);
	    panel.add(label);

	    label = new JLabel("et");
	    buildConstraints(constraints,1,3,1,1,0,0);
	    gridBag.setConstraints(label,constraints);
	    panel.add(label);

	    label = new JLabel("Emmanuel LANGUILLAT");
	    buildConstraints(constraints,1,4,1,1,0,0);
	    gridBag.setConstraints(label,constraints);
	    panel.add(label);

	    JButton button = new JButton("Ok");
	    button.addActionListener( new ActionListener() {
		public void actionPerformed(ActionEvent e) {
		    dialog.dispose();
		}
	    });
	    constraints.fill = GridBagConstraints.BOTH;
	    buildConstraints(constraints,0,5,2,1,0,0);
	    gridBag.setConstraints(button,constraints);
	    panel.add(button);

	    dialog.getContentPane().add(panel);
	    dialog.setSize(300,200);
	    dialog.setModal(true);
	    dialog.show();
	}
    }
}

