JBKプラグインが提供するアプレットへの終了問合せ機能を説明します。
JBKプラグインは、ユーザがブラウザのウィンドウを閉じようとしたときに、そのウィンドウ上で実行しているアプレットに対して終了の問合せを行う機能を提供しています。この機能を使用するアプレットは、JBKプラグインからの終了問合せに対して、終了の許可/不許可を返答することができます。
それぞれの場合の動作は以下のようになります。
終了を許可した場合には、JBKプラグインはアプレットの終了処理を行った後にブラウザのウィンドウを閉じます。
終了を許可しなかった場合には、ブラウザのウィンドウを閉じる処理はキャンセルされ、アプレットの実行はそのまま継続します。
この機能を用いると、アプレットがある特定の処理(例えばデータベースへの接続処理など)を行っている場合に、ブラウザの終了を一時的に抑止することが可能になります。
アプレットへの終了問合せ機能
アプレットからJBKプラグインの終了問合せ機能を使用するには、アプレットにPluginAppletCallbackインタフェースを実装してください。PluginAppletCallbackインタフェースはJBKプラグインが提供するインタフェースです。PluginAppletCallbackインタフェースのAPIは以下のとおりです。
インタフェース名:
com.fujitsu.jbk.plugin.browser.PluginAppletCallback
(extends java.lang.Object)
メソッド:
destroyRequested
ブラウザのウィンドウが閉じるときに、アプレットに終了を問い合わせるために呼び出されます。
public abstract boolean destroyRequested() |
終了を許可する場合はtrueを返してください。許可しない場合はfalseを返してください。
destroyCancelled
ブラウザのウィンドウを閉じる処理がキャンセルされたときに呼び出されます。
public abstract void destroyCancelled() |
例
終了問合せ機能を使用するアプレットの例
import java.applet.*; import com.fujitsu.jbk.plugin.browser.PluginAppletCallback; /** * 終了問い合わせを使用するアプレット */ public class DestroySample extends Applet implements PluginAppletCallback { /** * アプレットの終了問い合わせ時に呼び出されるメソッド */ public boolean destroyRequested() { // アプレットの終了を許可しない場合にはfalseを返してください。 if (/* アプレットの終了を許可しない場合 */) { return false; } // アプレットの終了を許可する場合にはtrueを返してください。 return true; } /** * アプレットの終了が不許可となり、ブラウザのウィンドウを閉じる処理が * キャンセルされたときに呼び出されるメソッド */ public void destroyCancelled() { // ブラウザのウィンドウを閉じる処理がキャンセルされたときに // 何か処理を行う必要がある場合には、ここに記述してください。 } } |
注意
destroyRequested()メソッドおよびdestroyCancelled()メソッドの中では、ダイアログ表示およびキーボードやマウ
ス入力などのGUI操作を伴う処理を行わないようにしてください。これらの処理を行うと、ブラウザが処理を受け付けなくなる場合があります。
複数のアプレットが実行されている場合
ブラウザのウィンドウ上で複数のアプレットが実行されている場合には、JBKプラグインはそれらすべてのアプレットに対して順番にdestroyRequested()メソッドを呼び出します。
すべてのアプレットが終了を許可した(trueを返した)場合には、ブラウザのウィンドウが閉じられます。
1つでも終了を許可しない(falseを返した)アプレットがあった場合には、JBKプラグインはその時点でdestroyRequested()メソッドの呼出しを止め、ブラウザのウィンドウを閉じる処理をキャンセルし、その後ですべてのアプレットに対してdestroyCancelled()メソッドを呼び出します。
したがって、各アプレットは自分が終了を許可した場合にも、他のアプレットが終了を許可しなかったということを知ることができます。
終了問合せを無効にする方法
誤ってdestroyRequested()メソッドが常にfalseを返すようなアプレットを作成した場合、ブラウザのウィンドウを閉じる処理は常にキャンセルされ、ブラウザが終了できなくなります。このような状態になった場合は、以下のようにしてください。
JBKのクラスフォルダ(JBKをインストールしたフォルダの下の“classes”フォルダ)に、“jbkplugin.shutdown”という名前の空のファイルを作成してください。
このファイルがあるときには、JBKプラグインはアプレットに終了問合せを行わずに、アプレットの終了処理を呼び出してブラウザのウィンドウを閉じます。この方法は万が一の回避方法としてお使いください。
なお、JBKプラグインはブラウザの終了時にjbkplugin.shutdownファイルを削除しますが、ファイルの削除権がない場合、あるいは、jbkplugin.shutdownがフォルダとして作成されている場合には削除しません。jbkplugin.shutdownファイルが残ったままの状態では終了問合せは常に行われなくなりますので、この方法を用いた場合には、ブラウザの終了後にjbkplugin.shutdownファイルが残っていないかどうかを確認してください。残っている場合には、手動でファイルを削除するようにしてください。