/////////////////////////////////////////////////////////////////
//Copyright (C) 2005 NTT CORPORATION.
//
//	画面カスタマイズ情報取得クラス
//
//		変更履歴
//			2005.02.19  新規作成  村上 靖征
//
//	機能
//
//	このクラスは画面カスタマイズ情報を取得するクラスです。
//
////////////////////////////////////////////////////////////////

package jp.co.ntt.lms.xmf;

import java.io.Serializable;

import org.apache.velocity.tools.view.context.ViewContext;

import jp.co.ntt.lms.xmf.tools.ToolBase;

/**
 *  画面カスタマイズ情報取得クラス
 * 
 *  このクラスは画面カスタマイズ情報を取得するクラスです。
 * 
 *  @author 村上 靖征
 *  @version 1.0
 */
public class ViewManager extends ToolBase implements Serializable {
	
	private FrameLayout topFrame;
	private FrameLayout leftFrame;
	private FrameLayout contentFrame;
			
	/**
	 * レイアウト設定情報を読み込む。
	 * 
	 * @param userId ユーザーID
	 * @param groupId グループID
	 * @return
	 * 		-1 - 既に読み込んでいるため読み込まずに正常終了
	 * 		0  - ユーザー定義を読み込み、正常終了
	 * 		1  - グループ定義を読み込み、正常終了
	 * 		2  - デフォルト定義を読み込み、正常終了
	 * 		3  - 異常終了
	 */
	public int loadLayout(String userId, String groupId)
	{
		int result = -1;
		if (topFrame == null && leftFrame == null && contentFrame == null)
		{
			CustomLayoutManager layoutManager = new CustomLayoutManager();
			ViewContext viewContext = (ViewContext)context;
			result = layoutManager.loadDef(viewContext.getServletContext(), userId, groupId);
			if (result != CustomLayoutManager.RESULT_ERROR)
			{
				topFrame = layoutManager.getTopFrame();
				leftFrame = layoutManager.getLeftFrame();
				contentFrame = layoutManager.getContentFrame();
			}
		}
		return result;
	}
	
	/**
	 * 
	 * 上フレームが表示されるかどうかのフラグを取得する。
	 * 
	 * @return 上フレームが表示されるかどうかのフラグ
	 */
	public boolean isTopFrameVisible()
	{
		return (topFrame != null);
	}
	
	/**
	 * 
	 * 左フレームが表示されるかどうかのフラグを取得する。
	 * 
	 * @return 左フレームが表示されるかどうかのフラグ
	 */
	public boolean isLeftFrameVisible()
	{
		return (leftFrame != null);
	}

	/**
	 * 
	 * 上フレームのレイアウト設定情報を取得する。
	 * 
	 * @return レイアウト設定情報
	 */
	public FrameLayout getTopFrame()
	{
		return topFrame;
	}
	
	/**
	 * 
	 * 左フレームのレイアウト設定情報を取得する。
	 * 
	 * @return レイアウト設定情報
	 */
	public FrameLayout getLeftFrame()
	{
		return leftFrame;
	}

	/**
	 * 
	 * コンテンツフレームのレイアウト設定情報を取得する。
	 * 
	 * @return レイアウト設定情報
	 */
	public FrameLayout getContentFrame()
	{
		return contentFrame;
	}
}
