/*************************************************
 * Author: 	Evelyn Lai-Tee Cheok
 *			Department of Electrical Engineering
 *			Center for Telecommunications Research
 *			Schapiro Research Building
 *			Columbia University
 *
 * Email: 	laitee@ctr.columbia.edu
 *
 **************************************************/
import java.lang.*;
import java.awt.*;
import ChoiceBar;
import ObjType;
import ProcessCmd;

public class ObjPanel extends ChoiceBar
{
	int ObjSelected = 0;
	ProcessCmd procCmd;

    String[] help =
    {   
        "Line drawing", "Rectangle drawing", "Rounded Rectangle drawing",
        "Polygon drawing", "Oval drawing", "Pie drawing", "Arc drawing",
        "Text writng", "Picture reference", "Draw Reference", "Select Drawings",
        "Add URL"
    };
   
    public ObjPanel(ProcessCmd procCmd, int num_of_objs, int direction)
    {
        super(num_of_objs, direction);
        //setHelp(help);
		this.procCmd = procCmd;
        setSelectedItem(0);
    }
   
    /**
     * implement's abstract method in Bar
     * @param g : graphics
     * @param i : button index in Bar
     * @param rc : drawing area
     * @see Bar
     */
    void drawCell(Graphics g, int i, Rectangle rc)
    {
        Polygon shapePolygon, shapeSelect;
        g.setColor(Color.blue);
   
        switch (i)
        {
        case ObjType.LINE:
            g.drawLine(rc.x, rc.y, rc.x + rc.width, rc.y + rc.height);
            break;

        case ObjType.RECT:
            g.drawRect(rc.x, rc.y, rc.width, rc.height);
            break;

        case ObjType.CIRCLE:
            g.drawOval(rc.x, rc.y, rc.width, rc.height);
            break;

        case ObjType.OVAL:
            g.drawOval(rc.x, rc.y + 3, rc.width, rc.height - 5);
            break;

        case ObjType.TEXT:
			g.setFont(new Font("TimesRoman", Font.PLAIN, 12));
			g.drawString("ABC", rc.x, rc.y + 13);
            break;

		case ObjType.DELETE:
			g.setFont(new Font("TimesRoman", Font.PLAIN, 12));
			g.drawString("DEL", rc.x, rc.y + 13);
			break;

		case ObjType.MOVE:
			g.setFont(new Font("TimesRoman", Font.PLAIN, 10));
			g.drawString("MOV", rc.x, rc.y + 13);
			break;

		case ObjType.SELECT:
			g.setFont(new Font("TimesRoman", Font.PLAIN, 10));
			g.drawString("SEL", rc.x, rc.y + 13);
			break;

		case ObjType.COPY:
			g.setFont(new Font("TimesRoman", Font.PLAIN, 10));
			g.drawString("CPY", rc.x, rc.y + 13);
			break;

		case ObjType.PASTE:
			g.setFont(new Font("TimesRoman", Font.PLAIN, 10));
			g.drawString("PAS", rc.x, rc.y + 13);
			break;

		case ObjType.GIF:
			g.setFont(new Font("TimesRoman", Font.PLAIN, 10));
			g.drawString("GIF", rc.x, rc.y + 13);
			break;
		}
	}

    void setSelectedItem(int i)
    {
		ObjSelected = i;
		procCmd.procCommand(i);

    }

	int getSelectedObj() {
		return ObjSelected;
	}

	public Dimension getObjPanelDim() {
		return getDimension();
	}

    /** Provides offset of the object panel from the boundary **/
    public Insets insets() {
        return (new Insets(0, 20, 0, 0));
    }
}
