- - PR -
SWTで一定時間操作がなければアプリケーションを終了したい
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-09-23 14:22
SWTでグループウェアを作成中です。
各個人に権限を変化させる為、アプリケーションを立ち上げっぱなしにして、離席されるとセキュリティの問題が出てきます。 そこで、例えば10分間、キー入力等、ユーザーの操作がなければ、特定の動作を行いたいと思っております。 (特定の動作→終了やスクリーンセーバーのようなものを出現させる等) Shellにmousemoveやmousehover、keypressed等のリスナーをつければ、 ユーザーが操作をしたかどうかは判別がつくのですが、 ShellにComposite等を設置すると、そのリスナーは機能しなくなってしまいます。 イメージとしてはDisplayをリスニングできれば良いと思ったのですが、そういったリスナーが見当たりません。 全てのオブジェクトに同一のリスナーをつける必要があるのでしょうか。 どなたか、良い方法があれば、教えて頂いてもよろしいでしょうか。 よろしくお願い致します。 | ||||||||||||
|
投稿日時: 2005-09-27 16:48
これって、やっぱり不可能なんでしょうか・・・。
| ||||||||||||
|
投稿日時: 2005-09-27 16:53
SWTは知りませんが、Swing でも同じく内包する全てのコンポーネントにたいしてリスナを設定する必要があった気がします。
再起的に内包するComponent(SWTではたぶん違う用語ですが、GUIを構成するオブジェクトのこと)を再起的に走査してリスナを設定する必要があるのではないでしょうか。 | ||||||||||||
|
投稿日時: 2005-09-27 19:17
Swing/AWTならToolkitにイベントリスナーを登録することで、アプリケーション全体のイベントを取得することができます。
SWTならこの方法しかないでしょうね。多分。 例えば以下のようなコードを使って。
ちなみにSWTでSwing/AWTのComponentに該当するのはWidgitかControlですね。 | ||||||||||||
|
投稿日時: 2005-09-28 02:29
>Swing/AWTならToolkitにイベントリスナーを登録することで、アプリケーション全体のイベントを取得するこ
>とができます。 おぉっと、存じあげませんでした。勉強になりました。ありがとうございます。 | ||||||||||||
|
投稿日時: 2005-09-28 02:43
SWT の Display に
addFilter(int eventType, Listener listener) という関数があるのでそれでいけると思います。 ただ、気をつけなくてはいけないのは、このリスナーは登録した Display に対して本当にグローバルなリスナーですので、関数内でエラーを起こしてしまうと、その後の処理が完全にストップしてしまいます。 具体的には、ダイアログなどが一切表示できなくなったりします。 過去にそれではまった事がありました。 | ||||||||||||
|
投稿日時: 2005-09-28 12:08
インギさん、Wataさん、NULLさん、ありがとうございました。
色んな方法があるのですね。 addFilter、早速試してみます。ありがとうございます。 再帰的にリスナーを設定する方法は、他にも使えそうですね。勉強になりました。ありがとうございます。 今朝思いついたのは、 Displayに対して、getCursorControl()を使って、マウスの移動がなされているかどうかをリスニングしようと考えておりました。 キーボードは全くリスニング出来ないですけど、無いよりはマシかと・・・。 アドバイス頂けて良かったです。 | ||||||||||||
|
投稿日時: 2005-10-06 01:52
メッセージループ内でイベントを監視する、ってほうほうもあります。
手を抜いてDisplay#timerExecを使ったので、ちと重いかもしませんが。 ------------------------------------------------ InactiveTimer.java * 3秒間 (3 * 1000) なにも操作しないと、ダイアログを表示します。
|
1