/*
 * @(#)DefaultApplication.java
 *
 * Copyright 2001 by Intelligent Technology Inc. All rights reserved.
 */
package jp.co.iti.fagot.doc;

import javax.swing.JFrame;

import jp.co.iti.fagot.ZApp;
import jp.co.iti.fagot.IZApp;
import jp.co.iti.fagot.IZFileable;

import jp.co.iti.fagot.ui.UIFactory;

import jp.co.iti.fagot.util.ZDebug;
import jp.co.iti.fagot.util.ZFile;
/**
 * アプリケーションのデフォルト動作を定義します。
 *
 * @author  福島康治
 * @version 1.01 2001/03/22
 */
public class DefaultApplication implements IApplication {

	/**
	 * デフォルトコンストラクタ
	 */
	protected DefaultApplication() {
	}

	//## IApplication #################################################
	/**
	 * 初期化
	 * @param frame アプリケーションフレーム
	 */
	public boolean initApplication(JFrame frame) {
	return true;
	}

	/**
	 * 終了
	 */
	public void exitApplication() {
	}

	/**
	 * 開く
	 * @param szFile ファイル名
	 */
	public boolean open(String szFile) {
	mFileName = szFile;
	fileChanged();
	return true;
	}

	/**
	 * 保存
	 */
	public boolean save() {
	return true;
	}

	/**
	 * 名前を付けて保存
	 * @param szFile ファイル名
	 */
	public boolean saveAs(String szFile) {
	mFileName = szFile;
	if ( !canSave() ) {
		return false;
	}
	fileChanged();
	return save();
	}

	/**
	 * 保存可能か問い合わせ
	 */
	public boolean canSave() {
	if ( mFileName == null ) {
		return false;
	}
	return true;
	}

	/**
	 * ファイルが更新されたか問い合わせ
	 */
	public boolean isModified(){
	return false;
	}

	/**
	 * ファイル名の取得
	 * @return ファイル名
	 */
	public String getFileName() {
	return mFileName;
	}

	/**
	 * ファイル名の更新（open,saveAs）時
	 */
	protected void fileChanged() {

	// ファイル履歴の更新
	IZApp app = ZApp.getTheApp();
	UIFactory fact = app.getUIFactory();
	if ( fact != null ) {
		fact.updateRecent( (IZFileable)app, "recent", getFileName() );
	}

	// カレントディレクトリの変更
	if ( getFileName() != null ) {
		String szPjDir = ZFile.getParent(getFileName()) ;
		System.setProperty("user.dir",szPjDir);
	}

	// ウィンドウタイトルの表示
	JFrame frame = (JFrame)app.getFrame();
	String szApp = ZApp.getTheApp().getResource().getString("app.main.title");
	String szTitle = getFileName() ;
	if ( szTitle == null ) {
		szTitle = "Unsaved";
	}
	frame.setTitle(szApp+"["+szTitle+"]");

	}

	//## アトリビュート################################################
	/**
	 * ファイル名
	 */
	protected String mFileName = null;
}
