|
フレーム、タブの開閉、ユーザーがマップに対して行った操作などのイベントについて、通知を受け取ることができます。
イベントの種類
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 でマップのモデルが得られる
});