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

import java.awt.event.ActionEvent;

import jp.co.iti.fagot.IZApp;

import jp.co.iti.fagot.ui.UFrame;
/**
 * UI系アクションです。
 *
 * @author  福島康治
 * @version 1.01 2000/10/12
 */
public class ZUIAction extends ZAction {
	/**
	 * 唯一のコンストラクタです。
	 * @param app      アプリケーションクラス
	 * @param frame    フレーム
	 * @param szAction アクション名
	 */
	public ZUIAction(IZApp app, UFrame frame,String szAction) {
    super(app,szAction);
	mFrame = frame ;
	}

	/**
	 * アクション実行
	 */
	public void doAction(ActionEvent e) {
	// Look & Feel系アクション
	String szLF = null;
	if ( getActionName().equals( LF_METAL ) ) {
		szLF = CL_METAL;
	} else if ( getActionName().equals( LF_MOTIF ) ) {
		szLF = CL_MOTIF;
	} else if ( getActionName().equals( LF_WINDOWS ) ) {
		if ( System.getProperty("os.arch").equals("ppc") ) {
			szLF = CL_MAC;
		} else {
			szLF = CL_WINDOWS;
		}
	}
	getApp().getResource().putString(ENV_LF,szLF);
	mFrame.setLookAndFeel();
	}

	/**
	 * UI更新
	 */
	public void update() {
	boolean bValue = true;
	String szLF = getApp().getResource().getString(ENV_LF);
	// Look & Feel系アクション
	if ( getActionName().equals( LF_METAL ) ) {
		if ( !szLF.equals(CL_METAL) ) {
			bValue = false;
		}
	} else if ( getActionName().equals( LF_MOTIF ) ) {
		if ( !szLF.equals(CL_MOTIF) ) {
			bValue = false;
		}
	} else if ( getActionName().equals( LF_WINDOWS ) ) {
		if ( System.getProperty("os.arch").equals("ppc") ) {
			if ( !szLF.equals(CL_MAC) ) {
				bValue = false;
			}
		} else {
			if ( !szLF.equals(CL_WINDOWS) ) {
				bValue = false;
			}
		}
	}
	firePropertyChange(ZAction.CHECKED,null,new Boolean(bValue));
	}

	//## アトリビュート ###############################################
    /**
     * コンポーネント
     */
	protected UFrame mFrame = null ;

    /**
     * アクション定義プロパティ
     */
	final static public String ENV_LF		= "app.lookandfeel" ;

    /**
     * アクション名（Look & Feel）：Metal
     */
	final static public String LF_METAL		= "lf_metal" ;

    /**
     * アクション名（Look & Feel）：Motif
     */
	final static public String LF_MOTIF		= "lf_motif" ;

    /**
     * アクション名（Look & Feel）：Windows
     */
	final static public String LF_WINDOWS	= "lf_windows" ;

    /**
     * Look & Feelクラス名：Metal
     */
	final static public String CL_METAL		= "javax.swing.plaf.metal.MetalLookAndFeel" ;

    /**
     * Look & Feelクラス名：Motif
     */
	final static public String CL_MOTIF		= "com.sun.java.swing.plaf.motif.MotifLookAndFeel" ;

    /**
     * Look & Feelクラス名：Windows
     */
	final static public String CL_WINDOWS	= "com.sun.java.swing.plaf.windows.WindowsLookAndFeel" ;

    /**
     * Look & Feelクラス名：Mac
     */
	final static public String CL_MAC		= "com.apple.mrj.swing.MacLookAndFeel" ;
//	final static public String CL_MAC		= "apple.laf.AquaLookAndFeel" ;	// Mac OS X
}
