package jp.ac.kyutech.mns.ist;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;

import jp.ac.kyutech.mns.ist.sheetmap.SeatmapController;
import jp.ac.kyutech.mns.ist.util.QuickMenuActionManager;
import jp.ac.kyutech.mns.ist.util.SelectableJTable;

public class ConfigPanel_Seatmap extends ConfigPanel implements Runnable {
	private static final long serialVersionUID = -1308877143307915884L;
	Thread t;
	final SimpleATN satn;

	public int x=7,y=7;
	int smap;
	JTextField tx,ty, smaptf;
	public static Font sans30 = new Font("sansserif", Font.BOLD, 30);
	JLabel status,status2;
	
	public ArrayList<SeatmapController> smaps;
	SelectableJTable<SeatmapController> table;
	public SeatmapController active_smap = null;//筆記が新規ではいったときに，自動レイアウトするときのマップ

	public ConfigPanel_Seatmap(final SimpleATN satn, JFrame parent){
		super(parent);
		this.satn = satn;
		smaps = new ArrayList<SeatmapController>();

		//設定画面用の画面
		tabIcon = QuickMenuActionManager.createNavigationIcon("_seatmap_mono"+"24");
		tabTitle = "筆席マップ";

		//		setBorder(BorderFactory.createTitledBorder("背景画像"));
		setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));

		JPanel p1 = new JPanel();
		p1.setBorder(BorderFactory.createTitledBorder("筆席マップの設定"));
		//		currentP.setLayout(new BoxLayout(currentP, BoxLayout.Y_AXIS));
		//		currentP.setAlignmentX(CENTER_ALIGNMENT);
		p1.add(new JLabel("筆席マップの座席数（横x縦）"));
		tx = new JTextField(" 7");
		tx.setFont(sans30);
		p1.add(tx);
		JLabel jlx = new JLabel("x");
		jlx.setFont(sans30);
		p1.add(jlx);
		ty = new JTextField(" 7");
		ty.setFont(sans30);
		p1.add(ty);
		JButton ok = new JButton("設定");
		ok.addActionListener(new ActionListener(){
			@Override
			public void actionPerformed(ActionEvent arg0) {
				update();
			}
		});
		p1.add(new JLabel(" "));
		p1.add(ok);

		status = new JLabel(" ");
		add(p1);
		add(status);

		
//		add(new JLabel(" "));
//		add(new JLabel(" "));
		add(new JLabel(" "));
		JPanel p2 = new JPanel();
//		p2.setLayout(new BoxLayout(p2, BoxLayout.Y_AXIS));
		p2.setLayout(new BorderLayout());
		p2.setBorder(BorderFactory.createTitledBorder("筆席マップの設定方法"));
		p2.add(new JLabel("筆席マップを設定するには，右ドラッグでマップの領域を範囲指定後，Mキー",JLabel.CENTER), BorderLayout.CENTER);
		p2.add(new JLabel("または左クリックで表示されるメニューで筆跡マップを選択してください．",JLabel.CENTER), BorderLayout.SOUTH);
		add(p2);
		
		JPanel p3 = new JPanel();
		p3.setBorder(BorderFactory.createTitledBorder("現在設定されている筆席マップ (アクティブは選択状態)"));
		p3.setLayout(new BorderLayout());

		table = new SelectableJTable<SeatmapController>(smaps,
				new String[]{"info",""},
				new String[]{"info",""},
				new String[]{"open","layout","active"},
				new int[]{300,300},
				null);
		p3.add(table, BorderLayout.CENTER);
		
		add(p3);
		update();
	}
	public JFrame findActiveParent(){
		if (frame.isShowing()) return frame;
		else return satn;
	}
	public void update(){
		String txstr = tx.getText();
		String tystr = ty.getText();
		try{
			x = Integer.parseInt(txstr.trim());
			y = Integer.parseInt(tystr.trim());
		}catch(NumberFormatException nfex){
			status.setText("筆席マップの座席数（横x縦）は，まだ設定されていません");
			return;
		}
		if (x>0 && y>0) {
			status.setText("筆席マップの座席数（横x縦）を "+x+" x "+y+" に設定しました");
		} else {
			status.setText("筆席マップの座席数（横x縦）は，まだ設定されていません");
		}
		
		DefaultTableModel dm = (DefaultTableModel)table.getModel();
		dm.fireTableDataChanged(); // notifies the JTable that the model has changed
		table.setPreferredSize(new Dimension(500,100));
		table.setRowSelectedByObj(active_smap);
		table.repaint();
		
//		String smapstr = smaptf.getText();
//		try{
//			smap = Integer.parseInt(smapstr.trim());
//		}catch(NumberFormatException nfex){
//			status2.setText("筆席マップを印刷したシートの番号は，まだ設定されていません");
//			return;
//		}
//		if (smap>0) {
//			status2.setText("筆席マップを印刷したシートの番号を "+smap+"番  に設定しました");
//		} else {
//			status2.setText("筆席マップを印刷したシートの番号は，まだ設定されていません");
//		}
	}

	@Override
	public void run() {
	}

}
