マップ・オブジェクトは、グループ化することができます。グループ化とは、グループ化オブジェクトの中にマップ・オブジェクトをまとめ、ひとかたまりとして扱うものです。グループ化されると、グループ化オブジェクト(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 }