|
マップ・オブジェクトの色などの外観を変更するには、マップ・オブジェクト(PMapObject)のshapeプロパティの各プロパティを変更します。shapeプロパティの指すオブジェクトは、jp.carabiner.inkpod.pi.shape.PObjectShapeインターフェースを実装したオブジェクトです。このほかに、シェイプの種類ごとに異なるインタフェースを持ち、プロパティも異なります。
よって、プロパティにアクセスする前にシェイプの種類を調べ、そのプロパティが存在することを確認してください。シェイプの種類を調べるには、PObjectShape#getObjectShapeTypeName()呼び出してシェイプの名前を得るか、JavaScriptのinstanceof演算子で、目的のインタフェースを実装しているかどうか調べます。存在しないプロパティを読み書きしようとすると例外が発生します。
ただし、ある程度のプロパティは共通しています。jp.carabiner.inkpod.pi.shape.PDefaultObjectShapeインターフェースは、現在のところ全てのシェイプが実装しているため、このインタフェースの持つプロパティは全ての種類のシェイプで使用できます。
オブジェクトの色や線の太さを変更するサンプルです。
「オブジェクト」-「赤枠に変更」を選ぶと、選択中のオブジェクトの枠が赤になり、線の幅が5になります。
function extendUI(event) {
inkpod.ui.actions.addAction({
id : "SAMPLE_CHANGE_STYLE",
text : "赤枠に変更",
action : function(frame, event) {
var model = frame.model;
var objects = inkpod.objectUtils.toFlat(model.selectedObjects);
for(var i=0; i < objects.length; ++i) {
if(objects[i] instanceof Packages.jp.carabiner.inkpod.pi.model.PNodeObject) {
objects[i].shape.lineColor = java.awt.Color.RED; // 色を赤に設定
objects[i].shape.lineWidth = 5; // 枠線の幅を5に設定
}
}
}
});
inkpod.ui.menuBar.objectMenu.addMenuItem("SAMPLE_CHANGE_STYLE");
}
function init()
{
inkpod.ui.addUIExtensionListener(extendUI);
}
function dispose()
{
}
plugin = {
init : init,
dispose : dispose
}(現在のInkpodのシェイプはすべて、このインタフェースを実装します)