package asandatabasebrowser.action;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;

import javax.swing.*;

import asandatabasebrowser.Global;
import asandatabasebrowser.AsanDatabaseBrowser;
import asandatabasebrowser.model.VvDatabase;
import asandatabasebrowser.view.*;

import net.sourceforge.swingx.SxOptionPane;



public class DatabasePropertyAction extends AbstractAction {
	AsanDatabaseBrowser tools;
	public DatabasePropertyAction(AsanDatabaseBrowser tools) {
		super("プロパティ(P) ...");
		putValue(MNEMONIC_KEY, new Integer('P'));
		putValue(SHORT_DESCRIPTION, "データベースのプロパティ");
		putValue(LONG_DESCRIPTION, "データベースのプロパティ");
		putValue(SMALL_ICON, Global.getImageIcon("/resources/Property.png"));
		this.tools = tools;
	}

    public void actionPerformed(ActionEvent ev) {
		DbTreeFrame frame = tools.getTreeFrame();
    	// 選択されているツリーを取得
		DbTreeView tree = tools.getTreeFrame().getTree();
    	VvDatabase db = tree.getSelectedDatabase(true);
    	if (db == null) return;
		// ダイアログで入力
    	if (true) {
    		int rc = DatabaseDialog.show(frame, db);
    		if (rc != SxOptionPane.OK) return;
    	} else {
			DatabaseDialog chooser = new DatabaseDialog();
			chooser.setDatabase(db);
			SxOptionPane pane = new SxOptionPane(frame, "データベースのプロパティ",
					SxOptionPane.OK_CANCEL_OPTION, SxOptionPane.PLAIN_MESSAGE);
			pane.getContentPane().add(chooser, BorderLayout.CENTER);
			pane.pack();
			pane.setLocationRelativeTo(frame);
			pane.setVisible(true);
			// 戻り値を返す。
			if (pane.getReturnValue() != SxOptionPane.OK) return;
			
	        VvDatabase newdb = chooser.getDatabase();
	        db.copyFrom(newdb);
    	}
        AsanDatabaseBrowser.theApp.doc.setModified(true);
        frame.updateMainFrame();
        // ツリーの名前を変える。
        tree.名前が変わった();
    }
}

