package asandatabasebrowser.action;

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

import net.sourceforge.swingx.SxOptionPane;

import asandatabasebrowser.Global;
import asandatabasebrowser.AsanDatabaseBrowser;
import asandatabasebrowser.model.FavoriteTable;
import asandatabasebrowser.model.VvDatabase;
import asandatabasebrowser.view.DbTreeView;



public class OpenExecuteFrameAction extends AbstractAction {
	AsanDatabaseBrowser tools;
	DbTreeView tree;
	public OpenExecuteFrameAction(AsanDatabaseBrowser tools, DbTreeView tree) {
		super("実行ウィンドウ");
		putValue(SHORT_DESCRIPTION, "実行ウィンドウを開きます");
		putValue(LONG_DESCRIPTION, "実行ウィンドウルを開きます");
		putValue(SMALL_ICON, Global.getImageIcon("/resources/UpdateView.png"));
		this.tools = tools;
		this.tree = tree;
	}

	public void actionPerformed(ActionEvent ev) {
    	// 選択されているツリーを取得
    	VvDatabase db = null;
		int index = tools.getTreeFrame().tab.getSelectedIndex();
		if (index == 0) {
	    	db = tools.getTreeFrame().getTree().getSelectedDatabase(true);
			if (db == null) return;
		} else {
			// 選択されたテーブルを取得する。DBに接続されていること。
			Object obj = tools.getTreeFrame().getFavTree().getSelectionNodeObject();
			if (obj instanceof FavoriteTable) {
				FavoriteTable favtable = (FavoriteTable) obj;
				db = tools.doc.getDatabaseFromFavorite(favtable);
				if (db == null) {
					tools.showMessage(tools.getTreeFrame(),
							"指定されたデータベースがありません。:"+favtable.dbName, null, 
							SxOptionPane.ERROR_MESSAGE);
					return;
				}
				if (db.getConnection() == null) {
					tools.showMessage(tools.getTreeFrame(),
							"データベースに接続されていません。:"+favtable.dbName, null, 
							SxOptionPane.ERROR_MESSAGE);
					return;
				}
			}
		}

		// フレームを開く
		tools.openExecuteFrame(db);
	}
}

