/*
 * 作成日: 2005/09/25
 */
package asandatabasebrowser.action;

import java.awt.event.ActionEvent;
import java.util.ArrayList;

import javax.swing.*;

import asandatabasebrowser.*;
import asandatabasebrowser.model.*;
import asandatabasebrowser.view.*;
import blanco.commons.sql.format.BlancoSqlRule;


public class DatabaseAddAction extends AbstractAction {
	AsanDatabaseBrowser tools;
	public DatabaseAddAction(AsanDatabaseBrowser tools) {
		super("データベース接続を追加(A) ...");
		putValue(MNEMONIC_KEY, new Integer('A'));
		putValue(SHORT_DESCRIPTION, "データベース接続を追加");
		putValue(LONG_DESCRIPTION, "データベース接続を追加");
		putValue(SMALL_ICON, Global.getImageIcon("/resources/database_new.png"));
		this.tools = tools;
	}

    public void actionPerformed(ActionEvent ev) {
		DbTreeFrame parent = tools.getTreeFrame();
//		// すべてのデータベースが切断されているかどうか調べる。
//		boolean all_disconnect = true;
//		for (int i=0; i<Global.databaseList.size(); i++) {
//			AxDatabase db = (AxDatabase) Global.databaseList.get(i);
//			if (db.getConnection() != null) {
//				all_disconnect = false;
//				break;
//			}
//		}
//		// 問い合わせる
//		if (! all_disconnect) {
//			int rc = JOptionPane.showConfirmDialog(parent, 
//				"いったんすべてのデータベースを切断します。\nよろしいですか？",
//				"データベースを追加", JOptionPane.YES_NO_OPTION);
//		    if (rc!=JOptionPane.YES_OPTION) return;
//		}
		// ダイアログで入力
		VvDatabase db = new VvDatabase("新規作成", "", "", "", "", new ArrayList(), "other", null, 
				true, true, true, false, false, false, BlancoSqlRule.KEYWORD_NONE, "");
		DatabaseDialog chooser = new DatabaseDialog();
		chooser.setDatabase(db);
        int ans = JOptionPane.showConfirmDialog(parent, 
        	chooser,
            "データベース接続を追加", 
            JOptionPane.OK_CANCEL_OPTION,
            JOptionPane.PLAIN_MESSAGE);
        if (ans != JOptionPane.OK_OPTION) return;
        db = chooser.getDatabase();
        VvDocument doc = tools.doc;
        doc.databaseList.add(0,db);
        doc.setModified(true);
        System.out.println(doc.databaseList.size());
        // ツリーに新しい枝を追加する。
        DbTreeView tree = parent.getTree();
        tree.新しいＤＢを追加する(db);
        tree.expandRow(0);
        tools.getTreeFrame().updateMainFrame();
    }
}

