|
マップ・オブジェクトは、グループ化することができます。グループ化とは、グループ化オブジェクトの中にマップ・オブジェクトをまとめ、ひとかたまりとして扱うものです。グループ化されると、グループ化オブジェクト(jp.carabiner.inkpod.pi.model.PGroupObject)という、1つのマップ・オブジェクトとして扱われます。
グループ化は、PMapModel#groupObject(PMapObject[])メソッドで行います。引数は、グループ化したい2つ以上のオブジェクトの配列で、戻り値は、グループ化されたオブジェクト(PGroupObject)です。グループ化するマップ・オブジェクトは、他のどのグループ化オブジェクトにも属していないマップ・オブジェクトである必要があります。グループ化オブジェクトをさらにグループ化することもできます。
グループ化を解除するには、PMapModel#ungroupObject(PGroupObject)を使います。引数は、グループ化を解除したいグループ化オブジェクト(PGroupObject)です。戻り値は、グループ化されていたマップ・オブジェクトの配列です。何重にもグループ化は可能ですが、グループ化解除できるのは、一番外側のグループ化オブジェクトだけです。
グループ化を解除すると、グループ化のサイズ変更や回転の状態が 、グループ化されていた内側のマップ・オブジェクトに反映されます。
「オブジェクト」メニューに「グループ化」と「グループ化解除」のメニュー項目が追加されます。それぞれ、選択中のオブジェクトをグループ化、グループ化解除します。
function extendUI(event) {
inkpod.ui.actions.addAction({
id : "SAMPLE_GROUP",
text : "グループ化",
action : function(frame, event) {
var model = frame.model;
var objects = model.selectedObjects;
if(objects.length < 2) {
frame.alert("2つ以上のオブジェクトを選択してください");
return;
}
model.groupObject(objects);
}
});
inkpod.ui.actions.addAction({
id : "SAMPLE_UNGROUP",
text : "グループ化解除",
action : function(frame, event) {
var model = frame.model;
var objects = model.selectedObjects;
if(objects.length == 0) {
frame.alert("オブジェクトを選択してください");
return;
}
for(var i=0; i < objects.length; ++i) {
if(!(objects[i] instanceof Packages.jp.carabiner.inkpod.pi.model.PGroupObject)) {
frame.alert("グループオブジェクトを選択してください");
return;
}
}
for(var i=0; i < objects.length; ++i) {
model.ungroupObject(objects[i]);
}
}
});
inkpod.ui.menuBar.objectMenu.addMenuItem("SAMPLE_GROUP");
inkpod.ui.menuBar.objectMenu.addMenuItem("SAMPLE_UNGROUP");
}
function init()
{
inkpod.ui.addUIExtensionListener(extendUI);
}
function dispose()
{
}
plugin = {
init : init,
dispose : dispose
}