フレーム、タブの開閉、ユーザーがマップに対して行った操作などのイベントについて、通知を受け取ることができます。
イベントの種類
FrameEventは、jp.carabiner.inkpod.pi.PInkpod#addFrameListener() メソッドで登録された、FrameListenerオブジェクトを通して、通知されるイベントです。
FrameEventによって、Inkpodのウインドウが開いたこと、閉じたことを知ることができます。
importClass(Pacakges.jp.carabiner.inkpod.pi.event.FrameListener); inkpod.addFrameListener(new FrameListener() { frameClosed : function (event) { // フレームが閉じた // event.frame 閉じたフレーム }, frameOpend : function (event { // 新しいフレームが開いた // event.frame 開いたフレーム } });
ReloadPluginEventは、jp.carabiner.inkpod.pi.PInkpod#addReloadPluginListener() メソッドで登録された、ReloadPluginListenerオブジェクトを通して、通知されるイベントです。
ReloadPluginEventで、これからアプリが再読込されることを知ることができます。
アプリによっては、再読込をしてほしくない場合があります。その場合、ReloadPluginEvent#cancel() メソッドを呼び出すことで、再読込をキャンセルできます。
キャンセルするとき、理由等をメッセージダイアログ等で表示することもできます。
inkpod.addReloadPluginListener(function (event) { // アプリの再読込の通知 event.cancel(); //再読込のキャンセル });
TabEventは、jp.carabiner.inkpod.pi.PInkpodFrame#addTabListener() メソッド登録された、TabListenerオブジェクトを通して、通知されるイベントです。
TabEventによって、タブが作られたこと、閉じたこと、また、タブ内部でマップがロードされたこと、アンロードされたことを知ることができます。
TabEventを受け取るには、フレームを取得して、そのaddTabListenerでTabListenerオブジェクトを登録する必要があります。
フレームは、ユーザーによって開かれたり閉じられたりするため、全てのフレームについてTabEventを受け取るには、FrameEventでフレームの開閉のイベントを受け取って、常にフレームにTabListenerが登録された状態を維持する必要があります。
具体的には、以下のようになります。
importClass(Packages.jp.carabiner.inkpod.pi.event.TabListener); importClass(Packages.jp.carabiner.inkpod.pi.event.TabEvent); importClass(Packages.jp.carabiner.inkpod.pi.event.FrameListener); importClass(Packages.jp.carabiner.inkpod.pi.event.FrameEvent); function init () { // 登録したいTabListener var tabListener = new TabListener() { tabCreated : function ( event ) { }, tabClosed : function ( event ) { }, modelLoaded : function ( event ) { }, modelUnloaded : function ( event ) { }, } // init関数の実行時に存在する全てのフレームに、TabListenerオブジェクトを登録 var frames = inkpod.frames for(var i=0; i < frames.length; ++i) { frames[i].addTabListener(tabListener); } // init関数の終了後に開いたフレームにTabListenerオブジェクトを登録し、 // 閉じたフレームからは登録を解除する inkpod.addFrameListener(new FrameListener() { frameOpened : function ( event ) { event.frame.addTabListener(tabListener); }, frameClosed : function ( event ) { event.frame.removeTabListener(tabListener); } }); } plugin = { init : init, dispose : function() {} };
UIExtensionEventは、jp.carabiner.inkpod.pi.PInkpodUI#addUIExtensionListener() メソッドで登録された、UIExtensionListenerオブジェクトを通して、通知されるイベントです。
Inkpodがメニューを構築する際、アプリがメニューを拡張する機会であることを、アプリに通知するためのイベントです。
Inkpodは、起動時にメニューを構築する他、アプリの再読込などのタイミングでメニューを再構築することがあります。そのとき、アプリにアプリ独自のメニュー項目の追加を要求するために、このイベントが通知されます。
具体的な使い方は、メニュー項目の追加を参照してください。
inkpod.ui.addUIExtensionLsitener(function (event) { // ここでメニューを拡張する });
MapEventは、jp.carabiner.inkpod.pi.model.PMapModel#addMapListener() メソッドで登録された、MapListenerオブジェクトを通して、通知されるイベントです。
MapEventによって、マップ上での編集が行われたことを知ることができます。
編集イベントを受け取るには、マップのモデルを取得して、addMapListenerで、MapListenerオブジェクトを登録する必要があります。
TabEventと同様に、すべてのタブの編集内容について、編集イベントを受け取るには、フレームとタブの開閉のイベントを受け取って、常に全てタブのモデルに、MapListenerが登録された状態を維持する必要があります。
具体的には、以下のようにします。
importClass(Packages.jp.carabiner.inkpod.pi.event.TabListener); importClass(Packages.jp.carabiner.inkpod.pi.event.FrameListener); importClass(Packages.jp.carabiner.inkpod.pi.model.event.MapListener); function init() { // 登録したい、MapListenerオブジェクト var mapListener = new MapListener() { objectAppended : function ( event ) { // オブジェクトが追加された }, objectDepthChanged : function ( event ) { // オブジェクトの奥行きが変わった }, objectDuplicated : function ( event ) { // オブジェクトが複製された }, objectPasted : function ( event ) { // オブジェクトが貼り付けられた }, preObjectRemoved : function ( event ) { // オブジェクトがこの後削除される }, objectRemoved : function ( event ) { // オブジェクトが削除された }, objectGrouped : function ( event ) { // オブジェクトがグループ化された }, objectUngrouped : function ( event ) { // オブジェクトがグループ化解除された }, objectPropertyChagned : function ( event ) { // オブジェクトのプロパティが変化した }, shapePropertyChagned : function ( event ) { // シェイプのプロパティが変化した }, undo : function ( event ) { // UNDOされた }, redo : function ( event ) { // REDOされた }, }; // MapListenerオブジェクトを登録/解除するための、TabListenerオブジェクト var tabListener = new TabListener() { tabCreated : function (event) { event.model.addMapListener(mapListener); }, tabClosed : function (event) { event.model.removeMapListener(mapListener); } }; // init関数実行時に存在する全てのフレームに、TabListenerオブジェクトを登録し、 // また、全てのモデルに、MapListenerを登録する var frames = inkpod.frames for(var i=0; i<frames.length; ++i) { frames[i].addTabListener(tabListener); var models = frames[i].models; for(var j=0; j<models.length; ++j) { models[j].addMapListener(mapListener); } } // init関数の終了後に開いたフレームにTabListenerオブジェクトを登録し、 // 閉じたフレームからは登録を解除する inkpod.addFrameListener(new FrameListener() { frameOpened : function ( event ) { event.frame.addTabListener(tabListener); }, frameClosed : function ( event ) { event.frame.removeTabListener(tabListener); } }); } plugin = { init : init, dispose : function() {} }
編集操作の種類によって、MapListenerインタフェースのそれぞれ違うメソッドが呼ばれます。
どのメソッドが呼ばれた場合でも、MapEventオブジェクトが引数として渡されます。ただし、編集操作の種類によって、MapEventオブジェクトのプロパティの意味が異なります。
model (PMapModel) | 編集されたマップのモデル |
---|---|
type (int) | 編集の種類を表す整数値MapEvent.OBJECT_APPENDED, MapEvent.OBJECT_REMOVED 等です。詳細は以下のjavadocを参照してくださいjp.carabiner.inkpod.carabiner.inkpod.pi.model.event.MapEvent |
オブジェクトが追加されたときに呼び出されます。
MapEventオブジェクトのプロパティ
object | 追加されたオブジェクト |
---|---|
triggetEvent | オブジェクトを追加する操作のきっかけとなったイベント java.awt.InputEventオブジェクトです |
オブジェクトの奥行きが変化したときに呼び出されます。
MapEventオブジェクトのプロパティ
objects | 奥行きが変化したオブジェクトの配列 |
---|
オブジェクトが複製された時、呼び出されます。
MapEventオブジェクトのプロパティ
objects | 複製され、新しく追加されたオブジェクトの配列 |
---|
オブジェクトが貼りつけられた時に呼び出されます。
MapEventオブジェクトのプロパティ
objects | 貼り付けられたオブジェクトの配列 |
---|
これからオブジェクトが削除される時に呼び出されます。
MapEventオブジェクトのプロパティ
objects | これから削除されるオブジェクトの配列 |
---|
オブジェクトが削除されたときに呼び出されます。
MapEventオブジェクトのプロパティ
objects | 削除されたオブジェクトの配列 |
---|
オブジェクトがグループ化されたときに呼び出されます。
MapEventオブジェクトのプロパティ
object | グループ化されたグループ化オブジェクト |
---|
グループ化オブジェクトがグループ化解除したときに呼び出されます。
PMapObjectオブジェクトのプロパティの変化を知ることができます。
MapEventオブジェクトのプロパティ
object | プロパティが変更されたオブジェクト |
---|---|
propertyChagneEvent | プロパティの変更を知らせるPropertyChangeEventオブジェクト |
シェイプのプロパティが変更されたときに呼び出されます。
PMapObject#getShape() で得られるPObjectShapeオブジェクトのプロパティが変化を知ることができます。
MapEventオブジェクトのプロパティ
object | シェイプのプロパティが変更されたオブジェクト |
---|---|
propertyChagneEvent | プロパティの変更を知らせるPropertyChangeEventオブジェクト |
「元に戻す」操作が行われたときに呼び出されます。
「やり直し」操作が行われたときに呼び出されます。
MapObjectSelectionEventは、jp.carabiner.inkpod.pi.model.PMapModel.addMapObjectSelectionListener() メソッドで登録された、MapObjectSelectionListenerオブジェクトを通して、通知されるイベントです。
ユーザーが選択しているオブジェクトが変化したことを、知ることができます。
MapEventと同様に、すべてのタブで選択状態の変化を知りたい場合、タブのモデルにMapObjectSelectionListenerを登録されている状態を維持する必要があります。方法は、MapEventの場合と同じ方法ですので、そちらを参照してください。
var model = ... // PMapModelオブジェクトがすでに得られていると仮定して… model.addMapObjectSelectionListener(function ( event ) { // event.model でマップのモデルが得られる });