/*
 * 作成日: 2007/10/21
 */
package asandatabasebrowser.action;

import java.awt.event.ActionEvent;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.util.List;

import javax.swing.AbstractAction;
import javax.swing.JPanel;

import net.sourceforge.swingx.jspread.JSpread;
import asandatabasebrowser.AsanDatabaseBrowser;
import asandatabasebrowser.Global;
import asandatabasebrowser.view.DbTableFrame2;


/**
 * 作者専用のメニュー.
 * 
 * @author Asan
 */
public class AsanDebugAction extends AbstractAction {
	public AsanDebugAction() {
		super("Asan専用多目的 でばっぐ アクション(D)");
		putValue(MNEMONIC_KEY, new Integer('D'));
		putValue(SHORT_DESCRIPTION, "Asan専用多目的 でばっぐ アクション");
		putValue(LONG_DESCRIPTION, "Asan専用多目的 でばっぐ アクション");
		putValue(SMALL_ICON, Global.getImageIcon("/resources/Debug.png"));
	}
	public void actionPerformed(ActionEvent e) {
		System.out.println(e);
		//testDownload();
		//showSelectCellValue();
		// 最初のフレーム
		DbTableFrame2 frame = null;
		List list = AsanDatabaseBrowser.theApp.getFrameList();
		for (int i=0; i<list.size(); i++) {
			// テーブルフレームのとき
			if (list.get(i) instanceof DbTableFrame2) {
				frame = (DbTableFrame2) list.get(i);
				break;
			}
		}
		if (frame == null) return;
		JPanel panel = frame.tableView;
		System.out.println(panel.getBounds());
		System.out.println(panel.getComponent(0).getBounds());
	}
	private void showSelectCellValue() {
		// 最初のフレーム
		DbTableFrame2 frame = null;
		List list = AsanDatabaseBrowser.theApp.getFrameList();
		for (int i=0; i<list.size(); i++) {
			// テーブルフレームのとき
			if (list.get(i) instanceof DbTableFrame2) {
				frame = (DbTableFrame2) list.get(i);
				break;
			}
		}
		if (frame == null) return;
		// 選択されたセルの値を表示
		for (int r=0; r<frame.tableView.getCellCount(JSpread.ROW); r++) {
			for (int c=0; c<frame.tableView.getCellCount(JSpread.COLUMN); c++) {
				if (frame.tableView.getCellSelection(r, c)) {
					Object value = frame.tableView.getValueAt(r, c);
					System.out.print("(row="+r+" col="+c+")="+value);
					if (value != null) {
						System.out.print("  "+value.getClass());
					}
					System.out.println();
				}
			}
		}		
	}
	// -DproxySet=true -DproxyHost=ncproxy1.csk.co.jp -DproxyPort=8089
	private void testDownload() {
		try {
			// 最新版をダウンロード
			System.setProperty("proxySet", "true");
			System.setProperty("proxyHost", "ncproxy1.csk.co.jp");
			System.setProperty("proxyPort", "8089");
			URL url = new URL("http://www.hcn.zaq.ne.jp/no-ji/AsanDatabaseBrowser20080108.zip");
			downloadFile(url, new File("/AsanDatabaseBrowser20080108.zip"));
			// そのあとどうする？
		} catch (Exception e1) {
			// TODO 自動生成された catch ブロック
			e1.printStackTrace();
		}		
	}
	/** 指定されたURLからドキュメントを取得し、ファイルに保存する。 */
	public void downloadFile(URL url, File file) throws IOException {
		InputStream in = null;
		OutputStream out = null;
		try {
			in = url.openStream();
			out = new FileOutputStream(file);
			byte[] buffer = new byte[4096];
			int bytes_read;
			while((bytes_read  = in.read(buffer)) != -1) {
				out.write(buffer, 0, bytes_read);
			}
		} finally {
			try { in.close(); out.close(); } catch(Exception e) {}
		}
	}	
}
