import java.awt.*;
import java.awt.event.*;
import java.util.Vector;
import javax.swing.*;

/**
 * MiniDraw_Tools
 * <p>
 *   <b>History</b> :
 *   <ul>
 *      <li>Version 0.1 : Initial version</li>
 *   </ul>
 * </p>
 * @author Pierrick Calvet & Florian Delclaux
 */
public class MiniDraw_Tools extends JPanel implements ActionListener, ItemListener{

  private MiniDraw minidraw;
  public JTextField tfHeight;
  public JTextField tfWidth;
  public JCheckBox chkFilled;

/**
 * Build MiniDraw_Tools's object
 * @param minidraw Reference of MiniDraw's object
 */
  public MiniDraw_Tools(MiniDraw minidraw){
    this.minidraw = minidraw;
    setLayout(new FlowLayout(FlowLayout.LEFT));
    ButtonGroup btngroup = new ButtonGroup();

    /* Arrow Button */
    JToggleButton tbArrow = new JToggleButton(new ImageIcon("Pictures/Arrow.gif"));
    btngroup.add(tbArrow);
    tbArrow.setActionCommand("Arrow");
    tbArrow.addActionListener(this);
    add(tbArrow);

    /* Circle Button */
    JToggleButton tbCircle = new JToggleButton(new ImageIcon("Pictures/Circle.gif"), true);
    btngroup.add(tbCircle);
    tbCircle.setActionCommand("Circle");
    tbCircle.addActionListener(this);
    add(tbCircle);

    /* Ellipse Button */
    JToggleButton tbEllipse = new JToggleButton(new ImageIcon("Pictures/Ellipse.gif"));
    btngroup.add(tbEllipse);
    tbEllipse.setActionCommand("Ellipse");
    tbEllipse.addActionListener(this);
    add(tbEllipse);

    /* Square Button */
    JToggleButton tbSquare = new JToggleButton(new ImageIcon("Pictures/Square.gif"));
    btngroup.add(tbSquare);
    tbSquare.setActionCommand("Square");
    tbSquare.addActionListener(this);
    add(tbSquare);

    /* Rectangle Button */
    JToggleButton tbRectangle = new JToggleButton(new ImageIcon("Pictures/Rectangle.gif"));
    btngroup.add(tbRectangle);
    tbRectangle.setActionCommand("Rectangle");
    tbRectangle.addActionListener(this);
    add(tbRectangle);


    /* Filled CheckBox */
    chkFilled = new JCheckBox("Filled", MiniDraw.DEFAULT_FILLED);
    chkFilled.addItemListener(this);
    add(chkFilled);

    /* Width TextField */
    add(new JLabel("Width :"));
    tfWidth = new JTextField("100");
    add(tfWidth);
    
    /* Height TextField */
    add(new JLabel("Height :"));
    tfHeight = new JTextField("50");
    tfHeight.setEnabled(false);
    add(tfHeight);
    
    /* Clear Button */
    JButton btnClear = new JButton("Clear");
    btnClear.addActionListener(this);
    add(btnClear);
  }

/* When JCheckBox change */
  public void itemStateChanged(ItemEvent event){
    minidraw.display.filledShape = chkFilled.isSelected();
    minidraw.statebar.refresh(chkFilled.isSelected());
  }

  public void actionPerformed(ActionEvent event){
    /* Arrow button selected */
    if(event.getActionCommand().equals("Arrow")){
      minidraw.display.selectedShape = MiniDraw.NOSHAPE;
      tfHeight.setEnabled(false);
      tfWidth.setEnabled(false);
      minidraw.statebar.refresh("Arrow");
      return;
    }
    /* Circle button selected */
    if(event.getActionCommand().equals("Circle")){
      minidraw.display.selectedShape = MiniDraw.CIRCLE;
      tfHeight.setEnabled(false);
      tfWidth.setEnabled(true);
      minidraw.statebar.refresh("Circle");
      return;
    }

    /* Ellipse button selected */
    if(event.getActionCommand().equals("Ellipse")){
      minidraw.display.selectedShape = MiniDraw.ELLIPSE;
      tfHeight.setEnabled(true);
      tfWidth.setEnabled(true);
      minidraw.statebar.refresh("Ellipse");
      return;
    }

    /* Square button selected */
    if(event.getActionCommand().equals("Square")){
      minidraw.display.selectedShape = MiniDraw.SQUARE;
      tfHeight.setEnabled(false);
      tfWidth.setEnabled(true);
      minidraw.statebar.refresh("Square");
      return;
    }

    /* Rectangle button selected */
    if(event.getActionCommand().equals("Rectangle")){
      minidraw.display.selectedShape = MiniDraw.RECTANGLE;
      tfHeight.setEnabled(true);
      tfWidth.setEnabled(true);
      minidraw.statebar.refresh("Rectangle");
      return;
    }

    /* Clear button */
    if(event.getActionCommand().equals("Clear") && minidraw.display.shapes.size() > 0) {
      if(minidraw.toSave){
        int ans = JOptionPane.showConfirmDialog(minidraw, "Save your design ?", "Warning", JOptionPane.YES_NO_CANCEL_OPTION);

        if(ans == JOptionPane.CANCEL_OPTION )
          return;

        if(ans == JOptionPane.YES_OPTION)
          minidraw.saveFile();
      }
      minidraw.display.clear();
      minidraw.toSave = false;
    }
  }
}
