import java.awt.*;
import java.awt.event.*;

//メニューパネルクラス
//キャンバスクラスへの参照を持つ
public class BezierCurveMenuPanel extends Panel{
	
	//メンバ
	BezierCurveCanvas canvas;
	Panel pnlMode, pnlDim, pnlThick, pnlType, pnlFill, pnlHint, pnlClear;
	Label lMode,lDim0, lDim1, lThick0, lThick1, lType, lFill, lHint;
	Button btnMode, btnDim0, btnDim1, btnThick0, btnThick1, btnType, btnFill, btnHint, btnClear, btnClear2;
	boolean isClose;
	//コンストラクタ
	public BezierCurveMenuPanel(BezierCurveCanvas c){
		canvas = c;
		this.isClose = canvas.isClose;
		
		//メニュー部分作成
		setLayout(new GridLayout(7,1));
		setBackground(Color.gray);
		setSize(160,480);
		
		//ClearPanel
		pnlClear = new Panel(new GridLayout(2,1));
		btnClear = new Button("AllClear");
		btnClear2 = new Button("DelLast");
		pnlClear.add(btnClear);
		pnlClear.add(btnClear2);
		
		//ModePanel
		pnlMode = new Panel(new GridLayout(2,1));
		lMode = new Label("Mode");
		btnMode = new Button("Draw");
		pnlMode.add(lMode);
		pnlMode.add(btnMode);
		
		//DimPanel
		pnlDim = new Panel(new GridLayout(2,2));
		lDim0 = new Label("次元");
		lDim1 = new Label("" +canvas.dim);
		btnDim0 = new Button("+");
		btnDim1 = new Button("-");
		pnlDim.add(lDim0);
		pnlDim.add(lDim1);
		pnlDim.add(btnDim0);
		pnlDim.add(btnDim1);
		
		//ThickPanel
		pnlThick = new Panel(new GridLayout(2,2));
		lThick0 = new Label("太さ");
		lThick1 = new Label("" +canvas.thick);
		btnThick0 = new Button("+");
		btnThick1 = new Button("-");
		pnlThick.add(lThick0);
		pnlThick.add(lThick1);
		pnlThick.add(btnThick0);
		pnlThick.add(btnThick1);
		
		//TypePanel
		pnlType = new Panel(new GridLayout(2,1));
		lType = new Label("線種（開・閉）");
		btnType = new Button("開曲線");
		pnlType.add(lType);
		pnlType.add(btnType);
		
		//FillPanel
		pnlFill = new Panel(new GridLayout(2,1));
		lFill = new Label("塗りつぶし(yet!)");
		btnFill = new Button("noFill");
		pnlFill.add(lFill);
		pnlFill.add(btnFill);
		
		//HintPanel
		pnlHint = new Panel(new GridLayout(2,1));
		lHint = new Label("補助線");
		btnHint = new Button("true");
		pnlHint.add(lHint);
		pnlHint.add(btnHint);
		
		
		add(pnlMode);
		add(pnlDim);
		add(pnlThick);
		add(pnlType);
		//add(pnlFill);
		add(pnlHint);
		add(pnlClear);
		
		//イベントリスナ作成
		//モードボタン
		btnMode.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent ae){
				if(canvas.changeMode() == 0)
					btnMode.setLabel("Draw");
				else
					btnMode.setLabel("Edit");
			}
		});
		
		//次元変更ボタン
		btnDim0.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent ae){
				if(!canvas.isDrawing){
					canvas.incDim();
					lDim1.setText(""+canvas.dim);
				}
			}
		});
		btnDim1.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent ae){
				if(!canvas.isDrawing){
					canvas.decDim();
					lDim1.setText(""+canvas.dim);
				}
			}
		});
		
		//太さ変更ボタン
		btnThick0.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent ae){
				if(!canvas.isDrawing){
					canvas.incThick();
					lThick1.setText(""+canvas.thick);
				}
			}
		});
		btnThick1.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent ae){
				if(!canvas.isDrawing){
					canvas.decThick();
					lThick1.setText(""+canvas.thick);
				}
			}
		});
		
		//曲線の種類変更ボタン
		btnType.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent ae){
				if(!canvas.isDrawing){
					isClose = canvas.changeType(!isClose);
					if(isClose)
						btnType.setLabel("閉曲線");
					else
						btnType.setLabel("開曲線");
				}
			}
		});
		
		//塗りつぶし変更ボタン
		btnFill.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent ae){
			}
		});
		
		//ヒント変更ボタン
		btnHint.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent ae){
				canvas.changeHint();
				btnHint.setLabel(""+ !canvas.isHideHint);
			}
		});
		
		//クリアボタン
		btnClear.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent ae){
				canvas.clearBezierAll();
			}
		});
		
		btnClear2.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent ae){
				canvas.clearBezierLast();
			}
		});
	}
	
	

}
