package com.interpress_project.modernshare.client.controller.actions;

import com.interpress_project.modernshare.client.controller.command.TaskManager;
import com.interpress_project.modernshare.client.view.ViewManager;

/**
 *@stereotype action
 */
final public class ExitAction extends ActionAdaptor {
	private final ViewManager vmgr;
	private boolean bTerminated = false;

	/**
	 * ExitAction
	 * @param vmgr
	 */
	public ExitAction(ViewManager vmgr) {
		setText("終了(&X)");
		setToolTipText("アプリケーションを終了します。");
		try {
			setImageDescriptor(ImageFactory.getInstance().getImageDescriptor("exit"));
		}
		catch (Exception ex) {
			sb.getLogger().fatal("リソース設定のエラーが発生しました。", ex);
			System.exit(-1);
		}
		this.vmgr = vmgr;
	}

	/**
	 * run
	 * vmgr.close()だけを実行すること。各種マネージャのdispose()はViewManager内の
	 * 終了ハンドル内で実行させること。
	 */
	public void run() {
		TaskManager taskmgr = TaskManager.getInstance();
		taskmgr.stop();

		bTerminated = vmgr.getDialogManager().createYesNoMessageDialog("アプリケーションの終了確認", "HotShot Clientを終了します。よろしいですか?");
		if (bTerminated) {
			vmgr.close(); // Kick ViewManager.dispose();
		}
		else {
			taskmgr.start();
		}
	}

	/**
	 * isTerminated
	 * @return
	 */
	public boolean isTerminated() {
		return bTerminated;
	}
}
