PEXA Clientについて

チュートリアル

定義パターン

定義ファイル

リファレンス

目次

  1. はじめに
  2. Command
  3. VirtualComponent
  4. Action
  5. ContentProcedure
  6. Reference
  7. Document
  8. ErrorHander
  9. NotificationHook
  10. PluginComponent
  11. AccessControlSubstance
  12. ComponentOperator
  13. VTableCellRendererDelegate
  14. VTableCellEditorDelegate


はじめに

このドキュメントは、PEXAクライアントフレームワークで使用できるHelperクラスについて解説するものです。

Helperクラスとは、PEXAクライアントフレームワークの機能を補うために作成する小さなプログラムコードです。
特殊で複雑な画面表示を行ったり、複雑な制御を行う必要がある場合に、それを実現するための処理をJavaプログラムとして作成し、 各定義ファイルでそのクラスを指定することでフレームワークにプラグインすることができます。

HelperクラスはPEXAが用意する各種インタフェースを実装するか、抽象実装クラスを拡張して作成することになります。 このドキュメントでは、そういったHelperクラスについて以下で一つ一つ解説していきます。

Helperクラスを作成する上で使用する各種インタフェース、抽象基底クラス、その他PEXAのライブラリに含まれるクラス群については PEXAのAPIリファレンス(JavaDoc)を参照してください。


Command

プラグインポイント :
  Area定義のcommandタグのimplement属性

インターフェース :
  pexa.client.std.controller.ControlCommand

抽象基底クラス :
  無し

実装すべきメソッド :

/**
 * 制御命令を実行する
 * @param def 制御コマンド定義
 * @param c コントローラ
 * @param e イベント情報
 * @return 遷移先状態名
 * @throws RecoverableException 回復可能な業務例外
 */
public String execute(CommandDefinition def, Controller c, ClientEvent e) throws RecoverableException;

説明 :
Area定義のcommandにプラグインできるHelperクラスです。
Areaが各コンポーネントやContent等からイベントを受信した際に実行する処理をこのHelperクラスで実装することができます。

このHelperクラス内ではクライアントアプリケーションのプラットフォームに依存する画面寄りの処理を実装します。 たとえば各種ダイアログの表示であったり、画面遷移の実行であったり、ファイル入出力等が考えられます。


VirtualComponent

プラグインポイント :
  プラグインプロパティの仮想コンポーネントの実装クラス定義セクション
もしくはアプリケーションプロパティのプラグインプロパティのoverwriteセクション

インターフェース :
ClientFrameworkが標準提供するコンポーネントタグに対する実装置き換えの場合
 pexa.client.std.view.swing.component.virtual.V{コンポーネントタグ名}

ClientFrameworkが標準提供しないプロジェクト固有タグに対する実装の場合
 pexa.client.std.view.swing.SwingVirtualComponent

抽象基底クラス
Swingを使用したリッチクライアントの場合
 pexa.client.std.view.swing.component.virtual.AbstractSwingVirtualComponent

実装すべきメソッド :

/**
 * 画面初期化イベント受信時にコールされる。
 * コンポーネント毎の個別処理を実装クラスでオーバライドしてください。
 * @param e イベント情報
 * @throws RecoverableException 回復可能な業務例外
 */
protected abstract void startLocal(ClientEvent e) throws RecoverableException;

/**
 * 画面更新イベント受信時にコールされる。
 * コンポーネント毎の個別処理を実装クラスでオーバライドしてください。
 * @param e イベント情報
 * @throws RecoverableException 回復可能な業務例外
 */
protected abstract void updateLocal(ClientEvent e) throws RecoverableException;

/**
 * 入力確定イベント受信時にコールされる。
 * コンポーネント毎の個別処理を実装クラスでオーバライドしてください。
 * @param e イベント情報
 * @throws RecoverableException 回復可能な業務例外
 */
protected abstract void inputLocal(ClientEvent e) throws RecoverableException;

/**
 * 終了イベント受信時にコールされる。
 * コンポーネント毎の個別処理を実装クラスでオーバライドしてください。
 */
protected abstract void destroyLocal();

上記に加えて、以下の例に従ってコンストラクタを用意し、その中でinitメソッドを必ずコールしてください。
例 : TextFieldコンポーネントの場合
/**
 * コンストラクタ
 * @param instanceID コンポーネントインスタンスに割り当てられたユニークなID
 * @param params 初期化パラメータ格納Map
 */
public VTextField(String instanceID, Map params){
    super.init(instanceID, params);
}

説明 :
画面のGUIコンポーネントをフレームワークに接続するためのアダプタクラスです。
Area定義のComponentタグに対して実装が用意されるもので、 タグで記述された情報を元に具体的なGUI部品を制御します。
フレームワーク内ではこのモジュールを"仮想コンポーネント"と呼んでいます。
標準の仮想コンポーネントは全てこのインタフェース及び抽象基底クラスを使用して作成されています。

仮想コンポーネントは、フレームワークで各種イベントを受信した際に呼び出されます。
初期化、更新、入力確定、終了という4つのイベントに対応する実装メソッドが決められているので、それぞれに処理を実装してください。
GUIコンポーネントの操作によって発生するイベントをフレームワークに送信したい場合は、仮想コンポーネントのstartLocalメソッド内で GUIコンポーネントに対してSwingの各種イベントリスナーを登録し、そのリスナー内からfireEventTriggeredメソッドをコールしてください。
また、ユーザーによる値の入力を受け付けるコンポーネントでは、fireInputFixedメソッドをコールして、フレームワークに対して入力確定イベントを 発行してください。これにより、仮想コンポーネントのinputLocalメソッドが呼び出されるので、実際の値の入力受付処理はそこで行ってください。

各プロジェクトで個別のこのクラスを作成するケースは以下が考えられます。

  • 標準提供されていないコンポーネントタグをプロジェクトで個別に新規追加する
  • 標準提供されているコンポーネントタグの実装をプロジェクト固有の実装クラスに置き換える
それぞれについて以下で説明します。

標準提供されていないコンポーネントタグをプロジェクトで個別に新規追加する

このケースでは、タグ自体の設計と実装クラス作成が必要になります。
設計したタグはArea定義のDTD(src/client/doctype/client-area.dtd)に追加してください。

その上で、実装クラスを作成します。
extendsする抽象基底クラスはどちらのケースでも同じ物ですが、
この場合にimplementsするべきインタフェースは以下の物になります。

  pexa.client.std.view.swing.SwingVirtualComponent


標準提供されているコンポーネントタグの実装をプロジェクト固有の実装クラスに置き換える

このケースでは、基本的に実装クラス作成のみとなります。
ただし、プロジェクト固有の追加属性値などがある場合は、やはりDTDへの変更が必要になります。
その場合もArea定義のDTD(src/client/doctype/client-area.dtd)に追加してください。

その上で、実装クラスを作成します。
extendsする抽象基底クラスはどちらのケースでも同じ物ですが、
この場合にimplementsするべきインタフェースはPEXA側で用意されている個別のインタフェースとなります。
標準提供されているComponentタグには個別のインタフェースが用意されているので、それを必ずimplementsしてください。

例1:Tableタグの実装をプロジェクト固有クラスで置き換える場合

  pexa.client.std.view.swing.component.virtual.VTable
例2:Labelタグの実装をプロジェクト固有クラスで置き換える場合
  pexa.client.std.view.swing.component.virtual.VLabel
上記のようにインタフェース名は"V + {Componentタグ名}"となっているので、実装するタグ名に合わせて確認してください。



Action

プラグインポイント :
  Content定義のactionタグのimplement属性

インターフェース :
  pexa.client.std.content.ContentAction

抽象基底クラス :
  無し

実装すべきメソッド :

/**
 * アクションを実行する
 * @param actionDef アクション定義
 * @param c 該当コンテンツ
 * @param e イベント情報
 * @throws RecoverableException 回復可能な業務例外
 */
public void execute(ContentActionDefinition actionDef, Content c, ClientEvent e) throws RecoverableException;

説明 :
Content定義のactionにプラグインできるHelperクラスです。
Content項目の操作やサービス接続するといった処理をこのHelperクラスで実装することができます。

このHelperクラス内ではクライアントアプリケーションのプラットフォームに依存しない処理を実装します。 Content項目の操作、特別なサービスの呼び出し、外部機能との接続といったものが考えられます。

プラットフォームに依存する画面寄りに処理はCommandとして実装してArea定義のcommandにプラグインしてください。


ContentProcedure

プラグインポイント :
  Content定義のitemタグのprocedureオプションタグのimplement属性

インターフェース :
  pexa.client.std.content.ContentProcedure

抽象基底クラス :
  pexa.client.std.content.procedure.AbstractContentProcedure

実装すべきメソッド :

/**
 * 値の取得手続きを実装するための抽象メソッド。
 * 個別のContentProcedureではこのメソッドに処理を実装してください。
 * @param source 呼び出しもとコンテント
 * @return 手続きを実行した結果得られた値
 * @throws RecoverableException 手続き実行時にエラー発生
 */
protected abstract Object proceed(Content source) throws RecoverableException;

説明 :
Content定義のitemにプラグインできるHelperクラスです。
あるContent項目の値を決定するのに何かしらのロジックが必要な場合に使用します。
例えば、あるユーザーの生年月日を元にその人の現在の年齢を算出するとか、複数の画面入力項目の組み合わせを元にある区分値を決定するといった場合があります。


Reference

プラグインポイント :
  プラグインプロパティの参照の実装クラス定義セクション
もしくはアプリケーションプロパティのプラグインプロパティのoverwriteセクション

インターフェース :
  pexa.client.std.platform.reference.Reference

抽象基底クラス :
  pexa.client.std.platform.reference.base.AbstractReference

実装すべきメソッド :

/**
 * 値の読み込みを実装するための抽象メソッド。
 * 継承クラスで実装してください。
 * @return 参照結果の値
 * @throws RecoverableException 回復可能な業務例外
 */
protected abstract Object readLocal() throws RecoverableException;

また、以下の形式のコンストラクタを用意して、initメソッドを必ずコールしてください。

/**
 * コンストラクタ
 * @param specificpart 参照先を特定する個別指定部
 * @param source 呼び出し元
 */
public ColorReference(String specificpart, Object source){
	/*
	 * 共通の初期化
	 */
	super.init("color", specificpart, source);
}

説明 :
参照記法により実現させたい機能の実装クラスです。
参照記法は、各定義ファイル内から各種情報に柔軟にアクセスする方法を提供します。
標準で用意されている参照記法も全てこのインタフェース及び抽象基底クラスで作成されています。

抽象基底クラスで用意しているメソッドにより、、定義ファイル上での参照記法の記述及び呼び出し元のオブジェクト(Page, Area, Contentのいずれか) を取得できますので、それらを合わせて各種情報を引き出して呼び出し元に返す形で実装してください。


Document

プラグインポイント :
  プラグインプロパティのSwingViewUtilsセクション
もしくはアプリケーションプロパティのプラグインプロパティのoverwriteセクション

インターフェース :
javax.swing.text.Document
pexa.client.std.view.swing.component.gui.text.ValidatableDocument
pexa.client.std.view.swing.component.gui.text.FormattableDocument
pexa.client.std.view.swing.component.gui.text.InputMethodController

抽象基底クラス :
  pexa.client.std.view.swing.component.gui.text.SizeRestrictedDocument

実装すべきメソッド :

//-----------------------------------------------------------
// for RestrictedDocument
//-----------------------------------------------------------
/**
 * 現在の文字列が正しいかどうかをチェックする
 * @return 正しければtrue を、不正な文字列であればfalseを返す
 */
protected boolean checkRestriction(String str);

//-----------------------------------------------------------
// for ValidatableDocument
//-----------------------------------------------------------
/**
 * コンテントの妥当性検証を行う
 * @exception ComponentValidationException コンポーネントによる妥当性検証でエラー
 */
public void validate() throws ComponentValidationException;

//-----------------------------------------------------------
// for FormattableDocument
//-----------------------------------------------------------
/**
 * コンテントのフォーマットを行う。
 */
public void format();
/**
 * フォーマットのかかっていないコンテントを取得する
 * @return フォーマットされていないコンテント
 */
public String getPlainText();

//-----------------------------------------------------------
// for InputMethodController
//-----------------------------------------------------------
/**
 * JTextFieldでの入力方法の制御を行う
 * @param textfield 制御対象のテキストフィールド
 */
public void changeInputMethod(JTextField textfield);
/**
 * JTextAreaでの入力方法の制御を行う
 * @param jtextarea 制御対象のテキストフィールド
 */
public void changeInputMethod(JTextArea jtextarea);

また、以下のような形式のコンストラクタを用意して下さい。

/**
 * コンストラクタ
 * @param name Document名称
 * @param text 表示文字列
 * @param params パラメータ格納マップ
 */
public HalfDocument(String name, Object text, Map params){
	super(name, text, params);
}

説明 :
Swingを使用したリッチクライアントで、TextFieldやTextAreaにプラグインできるHelperクラスです。
コンポーネント上で入力された内容のチェック、フォーマット、InputMethod(WindowsならFEP,IME)の制御を行うことが出来ます。

入力内容のチェックは、コンポーネント上での入力操作(キー押下やコピー&ペーストなど)が行われる毎に行うことも、最後に入力確定されたタイミングで一括で行う事もできます。

  • 入力操作時でのチェック処理 : checkRestrictionメソッドで実装
  • 入力確定時でのチェック処理 : validateメソッドで実装
また、入力が確定して内容チェックがOKになった時点で入力値を変換することが出来ます。
これは例えば、スラッシュを入れていない日付をスラッシュ付きに変換する(20061010を2006/10/10に変換など)といった処理を行うことが出来ます。 この処理はformatメソッド及びgetPlainTextメソッドで実装します。

最後に、TextFieldやTextAreaにフォーカスが当たったタイミングで、WindowsのFEP(IMEやATOKなど)の制御を行うことが出来ます。 これは、changeInputMethodメソッドで実装します。

上記の3つの機能は、全てを実装する必要はありません。必要なメソッドのみ実装して下さい。


ErrorHandler

プラグインポイント :
  Area定義のerrorhandlerタグのimplement属性

インターフェース :
  pexa.client.std.controller.ErrorHandler.ErrorHandler

抽象基底クラス :
  無し

実装すべきメソッド :

/**
 * コントローラから委譲されてエラー処理を行う。
 * @param handlerDef エラーハンドラ定義情報
 * @param c エラー発生時の担当コントローラ
 * @param e エラー発生時のイベント情報
 * @param cause エラー原因
 * @return エラーハンドリングされた場合はtrue、されなかったらfalse
 */
public boolean handle(ErrorHandlerDefinition handlerDef, Controller c, ClientEvent e, Throwable cause);

説明 :
特定のエラー(Exception)に対するエラーハンドリング処理を実装するためのHelperクラスです。
handleイベントの引数で、フレームワーク側で受信した例外オブジェクトが渡されるので、その型やエラーコードなどを元に対応するエラー処理を行って下さい。

もし、このエラーハンドラーで処理すべき例外ではなかった場合は、何もせずに返値として"false"を返してreturnして下さい。 そうすると、Area定義上のerror-handingセクションで指定されている、次のエラーハンドラーに処理が続きます。


NotificationHook

プラグインポイント :
  Notification定義のpreNotifyタグのimplement属性とafterNotifyタグのimplement属性。

インターフェース :
  pexa.client.std.notification.NotificationHook

抽象基底クラス :
  無し

実装すべきメソッド :

/**
 * フック処理を実行する
 * @param def フック処理定義
 * @param n 通知オブジェクト
 * @return このフック処理の後に通知を続行するならtrue、中止ならfalse
 */
public boolean execute(NotificationHookDefinition def, NotificationManager manager, Notification n);

説明 :
Notification定義のhookにプラグインできるHelperクラスです。
Notification項目の操作やサービス接続するといった処理をこのHelperクラスで実装することができます。

Notification項目の操作、特別なサービスの呼び出し、外部機能との接続といったものが考えられます。


PluginComponent

プラグインポイント :
  Area定義のcomponent-mappingセクションで指定するコンポーネントタグのPluginタグのgui属性。

インターフェース :
  pexa.client.std.view.swing.component.PluginComponent

抽象基底クラス :
  無し

実装すべきメソッド :

/**
 * クライアントフレームワークからコンポーネント初期化時に呼び出されるメソッドです。
 * @param pctx フレームワークとの接続コンテキスト
 * @param e 初期化イベントオブジェクト
 */
public void start(PluginContext pctx, ClientEvent e);

/**
 * クライアントフレームワークから表示更新イベント発生時に呼び出されるメソッドです。
 * @param pctx フレームワークとの接続コンテキスト
 * @param e 更新イベントオブジェクト
 */
public void update(PluginContext pctx, ClientEvent e);

/**
 * クライアントフレームワークから入力イベント発生時に呼び出されるメソッドです。
 * @param pctx フレームワークとの接続コンテキスト
 * @param e 初期化イベントオブジェクト
 */
public void input(PluginContext pctx, ClientEvent e);

/**
 * クライアントフレームワークからコンポーネント破棄時に呼び出されるメソッドです。
 * @param pctx フレームワークとの接続コンテキスト
 */
public void destroy(PluginContext pctx);

説明 :
カスタマイズされた独自のGUI部品をフレームワークと接続するためのインタフェースです。
このインタフェースをimplementsしたGUI部品をJavaクラスとして作成すると、Area定義でPluginタグを使用することでフレームワークと接続して動かすことができます。

なお、このインタフェースを実装するJavaクラスは、SwingのJComponentの系列(親クラスをたどるとJComponentに行き着く)である必要があります。

このインタフェースで定義されている各メソッドは、フレームワークがコールバックするメソッドとなっており、フレームワーク内でコンポーネントに関わるイベントが発生した際に呼び出されます。 それぞれで適切な処理を実装してください。また、フレームワーク側のリソースにアクセスしたり、Pluginタグで指定されたパラメータの読み込みや書き込みを行う場合は各メソッドの引数 として渡されているPluginContextオブジェクトを使用してください。このオブジェクトにはパラメータの読み込みメソッドなどが用意されています。


AccessControlSubstance

プラグインポイント :
  プラグインプロパティの権限チェック機能アダプタの実装クラス定義セクション
もしくはアプリケーションプロパティのプラグインプロパティのoverwriteセクション

インターフェース :
  pexa.client.std.access.AccessControlSubstance

抽象基底クラス :
  無し

実装すべきメソッド :

/**
 * ステートメントに対する実行権限チェックを行う。
 * チェックに引っかかった場合は例外が送信され、チェックOKの場合はそのままスルーされる。
 * @param statement 実行をチェックするステートメントID
 * @param parameters 実行チェック時に参照されるパラメータ
 * @throws AccessControlException 権限チェックに引っかかった場合に送信される。
 */
public void checkPermission(String statement, Map parameters) throws AccessControlException;
/**
 * ステートメントに対する実行権限の有無を返す。
 * @param statement 実行をチェックするステートメントID
 * @param parameters 実行チェック時に参照されるパラメータ
 * @return パーミッションがあればtrue
 */
public boolean getPermission(String statement, Map parameters);

説明 :
ClientFrameworkの実行権限チェック機能と、各プロジェクト毎の実行権限管理機能を接続するためのアダプタを表すインタフェースです。 このインタフェースをimplementsしたJavaクラスを作成して、実際の各プロジェクト毎の実行権限管理機能を呼び出します。

メソッドの引数で渡されるparametersというMapに、プロパティ及びAccessControl定義で指定されたパラメータが格納されているので、 それらと引数のstatementのIDを各プロジェクト毎の実行権限管理機能に渡して実際の実行権限チェックを行います。

getPermissionでは、実行権限チェックの結果として権限が無いと判定された場合はfalseを返してください。

checkPermissionメソッドでは、実行権限チェックの結果として権限が無いと判定された場合は例外をthrowしてClientFrameworkに実行権限がなかったことを通知してください。 この時にthrowすべき例外はpexa.client.std.access.AccessControlExceptionです。


ComponentOperator

プラグインポイント :
  プラグインプロパティのコンポーネント制御命令の実装クラス定義セクション
もしくはアプリケーションプロパティのプラグインプロパティのoverwriteセクション

インターフェース :
  pexa.client.std.view.ComponentOperator

抽象基底クラス :
  無し

実装すべきメソッド :

/**
 * 選択行制御の指示を実行する
 * @param area 呼出元のエリアのインスタンス
 * @param e 実行イベント情報
 */
public void operate(Area area, ClientEvent e) throws RecoverableException;
また、以下の形式のコンストラクタを用意してください。
/**
 * コンストラクタ
 * @param exp 制御命令
 * @param area 対象エリア
 */
public ChangeSelectionOperator(Expression exp, Area area){
    //個々で必要な処理を実行
}

説明 :
Command命令のうち、コンポーネントを制御するタイプの実行命令を表すインタフェースです。
changeSelection命令や、 refresh命令などが該当します。

ComponentOperatorは個別で作成してプラグインされるタイプのクラスではありません。
VirtualComponentもしくは実際のGUIコンポーネントを制御することになるので、それらとセットで実装されます。
テーブルコンポーネントなどをプロジェクト毎にカスタマイズした場合に合わせて実装を入れ替えるような使用方法となります。

なお、このインタフェースを実装するクラスは、以下の引数を持つコンストラクタを用意する必要があります。

  • 第一引数:pexa.client.std.definition.Expression expression
  • 第二引数:pexa.client.std.view.Area area


VTableCellRendererDelegate

プラグインポイント :
  プラグインプロパティのVTableのセルレンダラ実装クラス定義セクション
もしくはアプリケーションプロパティのプラグインプロパティのoverwriteセクション

インターフェース :
  pexa.client.std.view.swing.component.gui.table.editable.VTableCellRendererDelegate

抽象基底クラス :
  pexa.client.std.view.swing.component.gui.table.editable.renderer.AbstractVTableCellRendererDelegate

実装すべきメソッド :

/**
 * TableのCellRendererとなるコンポーネントを取得する。
 * DefaultTableCellRendererを拡張して、チェックボックスによる選択状態
 * の場合の背景色を変更できるようにする。
 * @param table
 * @param value
 * @param isSelected
 * @param hasFocus
 * @param row
 * @param column
 * @return
 */
public Component getTableCellRendererComponent(JTable table, Object value,
        boolean isSelected, boolean hasFocus, int row, int column);
        
/**
 * セルレンダラの詳細設定キー名を返す
 * なければnull。
 * 
 * @return セルレンダラの詳細設定キー名。なければnull。
 */
protected String getTableCellRendererOptionName();
	
/**
 * 個別の終了処理を行う。
 * 派生クラス毎に実装して下さい。
 */
protected void destroyLocal();

また、以下の形式のコンストラクタを用意して、パラメータ必ず親クラスのコンストラクタに渡して下さい。
/**
 * コンストラクタ
 */
public LabelVTableCellRendererDelegate(Option columnOpt, VTable vtable){
    /*
     * 親クラスコンストラクタ
     */
    super(columnOpt, vtable);
	
    /*
     * 以降は個々で必要な処理を実装
     */
	    :
	    :
}

説明 :
Area定義のTableColumnタグのrenderer属性で指定するテーブルセルレンダラの実装クラスです。
標準で用意されているLabel/CheckBox以外に独自でセルレンダラを使用したい場合に作成して下さい。

なお、このインタフェースを実装するクラスは、以下の引数を持つコンストラクタを用意する必要があります。

  • 第一引数:pexa.client.std.definition.Option columnOpt
  • 第二引数:pexa.client.std.view.swing.component.virtual.VTable vtable
上記の引数を、親クラスのコンストラクタにそのまま渡して下さい。


VTableCellEditorDelegate

プラグインポイント :
  プラグインプロパティのVTableのセルエディタ実装クラス定義セクション
もしくはアプリケーションプロパティのプラグインプロパティのoverwriteセクション

インターフェース :
  pexa.client.std.view.swing.component.gui.table.editable.VTableCellEditorDelegate

抽象基底クラス :
  pexa.client.std.view.swing.component.gui.table.editable.editor.AbstractVTableCellEditorDelegate

実装すべきメソッド :

/**
 * テーブルセルのエディタとなるコンポーネントを返す
 * @param table
 * @param value
 * @param isSelected
 * @param row
 * @param column
 * @return テーブルセルのエディタとなるコンポーネント
 */
public Component getTableCellEditorComponent(JTable table, Object value,
		boolean isSelected, int row, int column);

/**
 * エディタに保持された値を返します。 
 * @return エディタに保持された値
 */
public Object getCellEditorValue();
	
/**
 * anEventを使って編集を始められるかどうかをエディタに問い合わせます
 * @param anEvent エディタが編集を始めるかどうかを検討するのに使うイベント
 * @return 編集を開始できる場合はtrue
 */
public boolean isCellEditable(EventObject anEvent);
	
/**
 * 編集終了時に入力内容をチェックする
 * @exception 入力内容チェックに引っかかった場合
 */
protected void validateOnEditingStopped() throws RecoverableException;
	
/**
 * 個別の終了処理を行う
 * 派生クラス側で実装して下さい。
 */
protected void destroyLocal();
	
/**
 * TableCellEditorに対する詳細情報があればそのキー名を返す。
 * 無ければnullを返す。
 * 
 * @return TableCellEditor詳細情報のキー名。なければnull。
 */
protected String getTableCellEditorOptionName()

また、以下の形式のコンストラクタを用意して、パラメータを必ず親クラスのコンストラクタに渡して下さい。
/**
 * コンストラクタ
 */
public TextFieldVTableCellEditorDelegate(Option columnOpt, VTable vtable){
    /*
     * 親クラスコンストラクタ
     */
    super(columnOpt, vtable);
	
    /*
     * 以降は個々で必要な処理を実装
     */
	    :
	    :
}

説明 :
Area定義のTableColumnタグのeditor属性で指定するテーブルセルエディタの実装クラスです。
標準で用意されているTextField/ComboBox/CheckBox以外に独自でセルエディタを使用したい場合に作成して下さい。

なお、このインタフェースを実装するクラスは、以下の引数を持つコンストラクタを用意する必要があります。

  • 第一引数:pexa.client.std.definition.Option columnOpt
  • 第二引数:pexa.client.std.view.swing.component.virtual.VTable vtable
上記の引数を、親クラスのコンストラクタにそのまま渡して下さい。


更新情報

  • 最終更新者 : $Author: morishita $
  • 最終更新日時 : $Date:: 2010-10-08 16:52:32 #$
  • バージョン : $Revision: 5452 $



Copyright © 2006, Atrris Corporation