この章には、次の項が含まれています。
Oracle Formsには、標準のユーザー・インタフェース・コンポーネント(ボタン、テキスト領域、ラジオ・ボタンのグループ、リスト項目など)の外観と動作を定義するJavaクラスが用意されています。Formsのプラグ可能なJavaコンポーネント(PJC)は、デフォルトのFormsクライアント・コンポーネントの拡張機能とみなすことができます。PJCを作成するときは、用意されているデフォルト・クラスの機能を拡張するように、独自のJavaコードを記述します。
標準のFormsユーザー・インタフェース・コンポーネントの機能を拡張できるだけでなく、Java Swingユーザー・インタフェース・コンポーネントがフォームに含まれるPJCを作成することもできます。プラグ可能なJavaコンポーネントにより、Formsで用意されているクラス(oracle.forms.ui.VBean
)を拡張し、Formsキャンバスで表示されるようにBean領域で活用します。Bean領域には独自のユーザー・インタフェースはありませんが、コンテナになります。実装クラスを関連付けてユーザー・インタフェース・コンポーネントをいくつか追加するまでは、レイアウト・エディタやキャンバスで、空の矩形のみ表示されます。
以前のリリースのOracle Formsでは、Formsユーザー・インタフェース・コンポーネントには、IViewインタフェースが実装されていました。しかし、プラグ可能なJavaコンポーネントやビューからCustomListenerの追加や削除を行う特別な方法はありませんでした。Oracle Forms 11gでは、CustomListenerの追加や削除がIViewインタフェースでできます。
Oracle Forms 11gでは、パラメータとペイロード付きのCustomEventが簡単にディスパッチされます。パブリック・メソッドdispatchCustomEvent
を公開することでJavaBeanクラスでこれが行われるので、PJCで同じメソッドを追加する必要があります。dispatchCustomEvent
メソッドをPJCからコールして、CustomEventをディスパッチします。
CustomEventは一般的にパラメータと関連付けられているので、Formsでは追加する方法が用意されています。JavaBeanでは、getHandler().setProperty()
メソッドを使用して、パラメータを設定できます。ユーザーは、PJCで同じことができる必要があります。詳細は、第7.2.2項「実行時のカスタム項目イベント・トリガーについて」を参照してください。
Oracle Forms 11gでは、設計時にWHEN-CUSTOM-ITEM-EVENT
トリガーを項目に追加でき、実行時にトリガーを起動させるようにプラグ可能なJavaコンポーネントをコーディングできます。フォームのJavaBeanカスタム・コンポーネントによってイベントが発生すると、このトリガーが起動します。WHEN-CUSTOM-ITEM-EVENT
トリガーを使用して、カスタム・コンポーネントの値の選択や変更に応答できます。システム変数SYSTEM.CUSTOM_ITEM_EVENT_PARAMETERS
には、カスタム・コントロールによって起動するイベントの補足的引数を収めたパラメータの名前が格納されます。コントロールのイベント名では大文字と小文字が区別されます。
トリガーを項目に追加する最も一般的な方法は、「トリガー」ノードにフォーカスがあるときに、Oracle Forms Developerにあるオブジェクト・ナビゲータ用ツールバーで「作成」ボタンをクリックするか、対応するショートカット・キーを押すことです。Forms Developerでは、使用可能なトリガーの一覧が、そのレベルかその項目に対して表示されます。
一般的に使用されるトリガーをいくつか追加する別の方法は、オブジェクト・ナビゲータで項目のトリガー・ノードを右クリックすることです。そして、「スマート・トリガー」メニューの一覧で、トリガーのいずれかを選択します。
トリガーでの作業方法の詳細は、Oracle Forms Developerのオンライン・ヘルプを参照してください。
Oracle Forms 11gでは、プラグ可能なJavaコンポーネントで、WHEN-CUSTOM-ITEM-EVENT
トリガーを起動できます。この機能強化版トリガーでは、クライアントとサーバーとの間における通信の内容をより綿密に制御できます。
Formsクライアントでは、プラグ可能なJavaコンポーネントを介して、CustomEvent
がディスパッチされます。これによって、WHEN-CUSTOM-ITEM-EVENT
トリガーがForms Serviceで起動されます。WHEN-CUSTOM-ITEM-EVENT
トリガーには、CustomEventを介してクライアントのプラグ可能なJavaコンポーネントから渡されたイベント名とパラメータ値を取得する簡単な方法が用意されています。イベント名は、SYSTEM.CUSTOM_ITEM_EVENT
に格納されます。パラメータ(名前と値)は、SYSTEM.CUSTOM_ITEM_EVENT_PARAMETERS
に格納されます。
Formsビルトインのget_parameter_attr
は、SYSTEM.CUSTOM_ITEM_EVENT_PARAMETERS
から異なるパラメータと値を取得するために使用します。get_parameter_attrから返される値やペイロードでサポートされているデータ型は、VARCHAR2
文字列です。
この例では、File Openオプションを使用してクライアント・ファイルを選択できるようにし、そのパスをサーバーに返すプッシュ・ボタンのJavaクラスを作成します。
次のような単純なPJCコードにより、プッシュ・ボタンのJavaクラスを作成します。
// MyButtonPJC.java import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JFileChooser; import oracle.forms.ui.CustomEvent; import oracle.forms.ui.VButton; import oracle.forms.properties.ID; public class MyButtonPJC extends VButton implements ActionListener { private static final ID CLIENT_SELECTED_FILE = ID.registerProperty("CLIENT_SELECTED_FILE"); public MyButtonPJC() { addActionListener(this); } public void actionPerformed(ActionEvent event) { JFileChooser fc = new JFileChooser(); if(fc.showOpenDialog(getHandler().getApplet()) == JFileChooser.APPROVE_OPTION) { CustomEvent ce = new CustomEvent(getHandler(), "MyButtonPJC_Event"); ce.setProperty(CLIENT_SELECTED_FILE, fc.getSelectedFile().getAbsolutePath()); this.dispatchCustomEvent(ce); } } public void destroy() { removeActionListener(this); super.destroy(); } }
該当の環境でCLASSPATH変数を定義し、$ORACLE_HOME/forms/java/frmall.jar
を追加します。
このJavaクラスをコンパイルします。後でJARを容易に作成できるように、javac(Javaコンパイラ)の-d <output-directory>
オプションを使用することで、独立したディレクトリに出力クラス・ファイルを置きます。
出力ディレクトリに移動し、次のコマンドを使用して、生成したクラス・ファイルを収めたJARファイル(MyButtonPJC.jarなど)を作成します。
jar cvf <jar-file-path> *
MyButtonPJC.jarは、Formsアプレットに配置する前に署名が必要です。$ORACLE_INSTANCE\bin
ディレクトリにあるsign_webutil.sh
(Windowsではsign_webutil.bat
)を使用してJARファイルに署名できます。詳細は、Forms Builderのオンライン・ヘルプを参照してください。
MyButtonPJC.jarを$ORACLE_HOME/forms/java
ディレクトリにコピーします。
FORMS_BUILDER_CLASSPATHにMyButtonPJC.jarのパスを追加します。これにより、このJARに収めたクラス・ファイルをForms Builderで利用できるようになります。
Formsアプリケーションのレイアウトにプッシュ・ボタンを追加します。
プッシュ・ボタンの「プロパティ・パレット」で、MyButtonPJCを実装クラスとして設定します。
WHEN-CUSTOM-ITEM-EVENT
トリガーをプッシュ・ボタンに追加します。
プッシュ・ボタンのWHEN-CUSTOM-ITEM-EVENT
トリガーに、次のPL/SQLコードを追加します。このコードはPJCによってディスパッチされたCustomEventを処理し、イベントのパラメータを抽出します。
declare filePath VARCHAR2(1024); dataType PLS_INTEGER; begin Message('Custom Event Name='||:SYSTEM.CUSTOM_ITEM_EVENT); get_parameter_attr(:SYSTEM.CUSTOM_ITEM_EVENT_PARAMETERS,'CLIENT_SELECTED_FILE',dataType, filePath); Message('The selected client file path is '|| filePath); end;
Forms構成ファイル(formsweb.cfg
)のarchive
パラメータで、JARのカンマ区切りリストにMyButtonPJC.jarを追加します(フル・パスではなく、JARファイル名のみを記述します)。これにより、クライアント側でFormsアプレットにこのJARファイルがロードされるようになります。