jp.co.fujitsu.reffi.client.swing.controller
クラス AbstractController

java.lang.Object
  上位を拡張 jp.co.fujitsu.reffi.client.swing.controller.AbstractController
すべての実装されたインタフェース:
java.util.EventListener, Controller, WindowOpenShutListener
直系の既知のサブクラス:
BaseController

public abstract class AbstractController
extends java.lang.Object
implements Controller, WindowOpenShutListener

[概 要]

アプリケーションを制御する抽象コントローラです。

[詳 細]

JVM上のウィンドウレベルコンポーネントの開閉を監視して、 を行います。

コンポーネントに対するイベントリスナ追加

EventBinderフィールドがコンポーネントとアクションをイベントタイプ毎に紐付け管理します。
この情報は具象コントローラを作成し、bind(EventBinder)メソッドをオーバーライド、 実装することで蓄積されます。
ウィンドウコンポーネントの画面表示イベントを監視して、包含するコンポーネントを走査、 EventBinderに登録されているコンポーネント名であれば 「handlerFacade(EventObject, Class, String, EventListener) をコールするイベントリスナプロキシ」をそのコンポーネントに対して設定します。

イベント発生時のハンドラ集約

上記イベントリスナの自動追加により、Reffi使用アプリケーションのイベントハンドラは全て、 このクラスのhandlerFacadeメソッドになります。
Swingコーディングにおけるイベントハンドラ追加の常套手段である、

        jbutton.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent evt) {
                        ....
                }
        });
 
や、
        JButton button = new JButton(new LoginAction());
 
といった画面クラスで行うイベント追加と、イベントリスナ処理の実装は不要です。

[備 考]

[環 境] JDK 6.0 Update 11

Copyright (c) 2008-2009 FUJITSU Japan All rights reserved.

作成者:
Project Reffi

コンストラクタの概要
AbstractController()
          [概 要] デフォルトコンストラクタです。
 
メソッドの概要
 void addListener(java.awt.Component component, java.lang.Class<? extends java.util.EventListener> listenerType, java.util.List<java.lang.String> eventTypes)
          [概 要] 追加されたコンポーネントに対してイベントリスナを追加します。
protected  void bind(EventBinder eventBinder)
          [概 要] UIコンポーネントとアクションを紐付ける、EventBinderオブジェクトを作成するメソッドです。
 void bindEvents(java.awt.Component addedComponent)
          [概 要] 追加されたコンポーネントに対して予約されているリスナ追加をaddListenerメソッドに委譲します。
protected  ParameterMapping createParameterMapping(java.util.EventObject e, java.lang.Class<? extends java.util.EventListener> listenerType, java.lang.String eventType, java.util.EventListener eventListenerProxy)
          [概 要] MVC各レイヤを巡回するParameteraMappingオブジェクトを生成、初期化します。
 ClientConfig getClientConfig()
          [概 要] フレームワーク挙動情報を保持するオブジェクトを取得します。
 java.util.Map<java.lang.Integer,java.util.Map<java.lang.Integer,java.util.Map<java.lang.String,java.lang.Object>>> getErrorComponentSnapshot()
          [概 要] バリデーションエラーを起こしているコンポーネントの情報を管理するオブジェクトを返却します。
 EventBinder getEventBinder()
          [概 要] イベント紐付けオブジェクトを取得します。
 java.util.Map<java.lang.Object,java.lang.Object> getPermanent()
          [概 要] アプリ起動~終了まで存在するデータ保存領域を取得します。
 WindowManager getWindowManager()
          [概 要] JVM上のウィンドウコンポーネントを管理するオブジェクトを返却します。
 void handlerFacade(java.util.EventObject e, java.lang.Class<? extends java.util.EventListener> listenerType, java.lang.String eventType, java.util.EventListener eventListenerProxy)
          [概 要] 全ユーザ定義イベントをハンドルする入り口になるメソッドです。
protected  void initialize(ClientConfig config)
          [概 要] 初期化処理が記述可能なメソッドです。
protected  void postInitialize(ClientConfig config)
          [概 要] ClientConfigの値に依存するクライアント初期化設定を行います。
 void registWindow(java.awt.Window window)
          [概 要] ウィンドウコンポーネントをReffi管理画面にします。
 void setClientConfig(ClientConfig clientConfig)
          [概 要] フレームワーク挙動情報を保持するオブジェクトを設定します。
 void setErrorComponentSnapshot(java.util.Map<java.lang.Integer,java.util.Map<java.lang.Integer,java.util.Map<java.lang.String,java.lang.Object>>> errorComponentSnapshot)
          [概 要] バリデーションエラーを起こしているコンポーネントの情報を管理するオブジェクトを設定します。
 void setEventBinder(EventBinder eventBinder)
          [概 要] イベント紐付けオブジェクトを設定します。
 void setPermanent(java.util.Map<java.lang.Object,java.lang.Object> Permanent)
          [概 要] アプリ起動~終了まで存在するデータ保存領域を設定します。
 void setWindowManager(WindowManager windowManager)
          [概 要] JVM上のウィンドウコンポーネントを管理するオブジェクトを設定します。
protected  void shutdown()
          [概 要] JVMのシャットダウン時にコールされるフックハンドラです。
 void windowOpen(java.awt.AWTEvent evt)
          [概 要] ウィンドウコンポーネント表示時にコールされるイベントハンドラです。
 void windowShut(java.awt.AWTEvent evt)
          [概 要] ウィンドウコンポーネントクローズ時にコールされるイベントハンドラです。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
インタフェース jp.co.fujitsu.reffi.client.swing.controller.Controller から継承されたメソッド
invoke
 

コンストラクタの詳細

AbstractController

public AbstractController()

[概 要]

デフォルトコンストラクタです。

[詳 細]

コントローラの初期化を行います。

を行った後、イベント紐付け登録読込みの為、bind(EventBinder)メソッドを テンプレートコールします。

イベント紐付け情報が正常に読み込まれた後、アプリケーション初期化の為のinitialize がコールされます。

[備 考]

メソッドの詳細

getEventBinder

public EventBinder getEventBinder()

[概 要]

イベント紐付けオブジェクトを取得します。

[詳 細]

eventBinderフィールドオブジェクトを返却します。

[備 考]

戻り値:
イベント紐付けオブジェクト

setEventBinder

public void setEventBinder(EventBinder eventBinder)

[概 要]

イベント紐付けオブジェクトを設定します。

[詳 細]

eventBinderフィールドオブジェクトを設定します。

[備 考]

パラメータ:
eventBinder - イベント紐付けオブジェクト

getPermanent

public java.util.Map<java.lang.Object,java.lang.Object> getPermanent()

[概 要]

アプリ起動~終了まで存在するデータ保存領域を取得します。

[詳 細]

permanentフィールドオブジェトを返却します。

[備 考]

戻り値:
アプリ起動~終了まで存在するデータ保存領域

setPermanent

public void setPermanent(java.util.Map<java.lang.Object,java.lang.Object> Permanent)

[概 要]

アプリ起動~終了まで存在するデータ保存領域を設定します。

[詳 細]

permanentフィールドオブジェクトを設定します。

[備 考]

パラメータ:
permanent - アプリ起動~終了まで存在するデータ保存領域

getClientConfig

public ClientConfig getClientConfig()

[概 要]

フレームワーク挙動情報を保持するオブジェクトを取得します。

[詳 細]

clientConfigフィールドを返却します。

[備 考]

戻り値:
フレームワーク挙動情報を保持するオブジェクト

setClientConfig

public void setClientConfig(ClientConfig clientConfig)

[概 要]

フレームワーク挙動情報を保持するオブジェクトを設定します。

[詳 細]

clientConfigフィールドを設定します。

[備 考]

パラメータ:
clientConfig - フレームワーク挙動情報を保持するオブジェクト

getWindowManager

public WindowManager getWindowManager()

[概 要]

JVM上のウィンドウコンポーネントを管理するオブジェクトを返却します。

[詳 細]

windowManagerフィールドを返却します。

[備 考]

戻り値:
JVM上のウィンドウコンポーネントを管理するオブジェクト

setWindowManager

public void setWindowManager(WindowManager windowManager)

[概 要]

JVM上のウィンドウコンポーネントを管理するオブジェクトを設定します。

[詳 細]

windowManagerフィールドを設定します。

[備 考]

パラメータ:
windowManager - JVM上のウィンドウコンポーネントを管理するオブジェクト

getErrorComponentSnapshot

public java.util.Map<java.lang.Integer,java.util.Map<java.lang.Integer,java.util.Map<java.lang.String,java.lang.Object>>> getErrorComponentSnapshot()

[概 要]

バリデーションエラーを起こしているコンポーネントの情報を管理するオブジェクトを返却します。

[詳 細]

errorComponentSnapshotフィールドを返却します。

[備 考]

戻り値:
バリデーションエラーを起こしているコンポーネントの情報を管理するオブジェクト

setErrorComponentSnapshot

public void setErrorComponentSnapshot(java.util.Map<java.lang.Integer,java.util.Map<java.lang.Integer,java.util.Map<java.lang.String,java.lang.Object>>> errorComponentSnapshot)

[概 要]

バリデーションエラーを起こしているコンポーネントの情報を管理するオブジェクトを設定します。

[詳 細]

errorComponentSnapshotフィールドを設定します。

[備 考]

パラメータ:
errorComponentSnapshot - バリデーションエラーを起こしているコンポーネントの情報を管理するオブジェクト

initialize

protected void initialize(ClientConfig config)

[概 要]

初期化処理が記述可能なメソッドです。

[詳 細]

Document、ClientSessionが生成されるタイミングでテンプレートコールされます。 デフォルトの処理は有りません。

[備 考]

業務固有の初期化処理が必要な場合は、具象コントローラ内でこのメソッドを オーバーライドして下さい。
又、Reffiの挙動設定をこのタイミングで設定することが出来ます。

使用例)

        protected void initialize(ClientConfig config){
                // デフォルトJMS接続環境を設定
                Hashtable jmsEnvironment = new Hashtable();
                jmsEnvironment.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
                jmsEnvironment.put(Context.PROVIDER_URL, "localhost:1099");
                jmsEnvironment.put("java.naming.rmi.security.manager", "yes");
                jmsEnvironment.put(Context.URL_PKG_PREFIXES, "org.jboss.naming");
                config.setDefaultJmsEnvironment(jmsEnvironment);
                
                // デフォルトEJB接続環境を設定
                Hashtable ejbEnvironment = new Hashtable();
                ejbEnvironment.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.NamingContextFactory");
                ejbEnvironment.put(Context.PROVIDER_URL, "jnp://localhost:1099");
                config.setDefaultEjbEnvironment(ejbEnvironment);
                
                // デフォルトDatabase接続環境を設定
                Hashtable dbEnvironment = new Hashtable();
                dbEnvironment.put(DatabaseCore.DB_DRIVER_FQCN, "org.postgresql.Driver");
                dbEnvironment.put(DatabaseCore.DB_URL, "jdbc:postgresql://localhost:5432/RFD");
                dbEnvironment.put(DatabaseCore.DB_USER, "nakanishi");
                dbEnvironment.put(DatabaseCore.DB_PASSWORD, "shingon");
                dbEnvironment.put(DatabaseCore.DB_AUTO_COMMIT, "true");
                config.setDefaultDatabaseEnvironment(dbEnvironment);
                
                Hashtable httpEnvironment = new Hashtable();
                httpEnvironment.put(HTTPRequestCore.HTTP_URL_PREFIX, "http://localhost:8080/RFDforSwingWeb/");
                config.setDefaultHttpEnvironment(httpEnvironment);
        }
 

パラメータ:
config - フレームワーク挙動情報を保持するオブジェクト

postInitialize

protected void postInitialize(ClientConfig config)

[概 要]

ClientConfigの値に依存するクライアント初期化設定を行います。

[詳 細]

[備 考]

パラメータ:
config - フレームワーク挙動情報を保持するオブジェクト

bindEvents

public void bindEvents(java.awt.Component addedComponent)

[概 要]

追加されたコンポーネントに対して予約されているリスナ追加をaddListenerメソッドに委譲します。

[詳 細]

ContainerListenerImplが検知したコンポーネント追加イベント時にコールされます。
追加されたコンポーネントの名前がEventBinderに紐付け予約されているものである場合、
追加すべきイベントリスナ分addListenerメソッドを呼び出します。

[備 考]

パラメータ:
addedComponent - 画面に追加されたコンポーネント

addListener

public void addListener(java.awt.Component component,
                        java.lang.Class<? extends java.util.EventListener> listenerType,
                        java.util.List<java.lang.String> eventTypes)

[概 要]

追加されたコンポーネントに対してイベントリスナを追加します。

[詳 細]

引数listenerTypeのプロキシオブジェクトを生成して、 引数componentにイベントリスナとして追加します。

Swingコンポーネントはイベントタイプによってイベント追加メソッド名が異なります。
生成されたプロキシはJavaの命名規則「"add" + listenerTypeクラス名」に沿って 追加メソッド名を以下のように動的判別します。

                String addMethodName = "add" + listenerType.getSimpleName();
                Method addMethod = component.getClass().getMethod(addMethodName, listenerType);
                addMethod.invoke(component, eventListener);
 

[備 考]

プロキシ内のハンドラでは発生したイベントタイプを引数eventTypesと比較、 eventTypesに含まれるハンドラメソッドが呼ばれる場合は handlerFacade(EventObject, Class, String, EventListener) をコールします。

パラメータ:
component - イベントリスナプロキシを追加するコンポーネント
listenerType - プロキシの原型
eventTypes - イベントハンドラメソッド名リスト

handlerFacade

public void handlerFacade(java.util.EventObject e,
                          java.lang.Class<? extends java.util.EventListener> listenerType,
                          java.lang.String eventType,
                          java.util.EventListener eventListenerProxy)

[概 要]

全ユーザ定義イベントをハンドルする入り口になるメソッドです。

[詳 細]

発生したイベントタイプ、イベントを起こしたコンポーネント名を元に、
イベント紐付けオブジェクト(EventBinder)から対応するアクションクラス型を取得します。
取得したアクションクラス型を引数にしてController.invoke(Class, ParameterMapping)に処理委譲します。

[備 考]

パラメータ:
e -
listenerType -
eventType -
eventListenerProxy -

createParameterMapping

protected ParameterMapping createParameterMapping(java.util.EventObject e,
                                                  java.lang.Class<? extends java.util.EventListener> listenerType,
                                                  java.lang.String eventType,
                                                  java.util.EventListener eventListenerProxy)

[概 要]

MVC各レイヤを巡回するParameteraMappingオブジェクトを生成、初期化します。

[詳 細]

イベント発生の際、Controller、Action、Modelを流れるデータマップを作成します。
このメソッドによって、以下の情報がParameterMappingオブジェクトに設定されます。

[備 考]

パラメータ:
e - イベントオブジェクト
listenerType - イベントリスナクラス型
eventType - イベントタイプ(イベントハンドラメソッド名)
eventListenerProxy - イベントリスナインスタンス
戻り値:
MVC各レイヤを巡回するパラメータオブジェクト

bind

protected void bind(EventBinder eventBinder)

[概 要]

UIコンポーネントとアクションを紐付ける、EventBinderオブジェクトを作成するメソッドです。

[詳 細]

コントローラ実装クラスでこのメソッドをオーバーライドして、
eventBinder.addEventBinding("コンポーネント名", "イベントリスナ型", "イベントハンドラメソッド名", BaseAction継承クラス);
のように紐付け処理を列挙して下さい。
ex.)eventBinder.addEventBinding("loginFrame.jbLogin", ActionListener.class, "actionPerformed", LoginAction.class);

[備 考]

パラメータ:
eventBinder - イベント紐付けオブジェクト

windowOpen

public void windowOpen(java.awt.AWTEvent evt)

[概 要]

ウィンドウコンポーネント表示時にコールされるイベントハンドラです。

[詳 細]

WindowOpenShutListener.windowOpen(AWTEvent)を実装します。
表示された画面が包含するコンテナへのContainerListenerImple追加と、 走査されたコンポーネントにイベントリスナを追加する為のメソッドをコールします。

[備 考]

定義:
インタフェース WindowOpenShutListener 内の windowOpen
パラメータ:
evt - ウィンドウオープンイベントオブジェクト

windowShut

public void windowShut(java.awt.AWTEvent evt)

[概 要]

ウィンドウコンポーネントクローズ時にコールされるイベントハンドラです。

[詳 細]

WindowOpenShutListener.windowShut(AWTEvent)を実装します。
ClientConfig.isAutoWindowDispose()がtrueの場合、 閉じたウィンドウコンポーネントのdisposeを行います。

[備 考]

定義:
インタフェース WindowOpenShutListener 内の windowShut
パラメータ:
evt - ウィンドウクローズイベントオブジェクト

registWindow

public void registWindow(java.awt.Window window)

[概 要]

ウィンドウコンポーネントをReffi管理画面にします。

[詳 細]

searchComponent(Component)に処理委譲します。

[備 考]

パラメータ:
window - Reffi管理下に置くウィンドウコンポーネント

shutdown

protected void shutdown()

[概 要]

JVMのシャットダウン時にコールされるフックハンドラです。

[詳 細]

具象コントローラでこのメソッドをオーバーライドして、 アプリケーションの終末処理を記述します。

[備 考]



Copyright © 2008-2010. All Rights Reserved.