สำหรับคนที่คิดจะเริ่มทำ extensions ของ OpenOffice.org เป็นครั้งแรกคงหนีไม่พ้น extensions ที่ช่วยทำ extensions อีกทีที่ชื่อว่า BasicAddonBuilder หรือ BAB นั่นเอง สามารถดูได้จาก
http://www.linuxbeacon.com/doku.php/articles:ooobab
ซึ่ง extensions นี้ให้ความสะดวกสบายมากเพราะ จะมี UI มาคอยเก็บค่า configuration ต่างๆที่จำเป็นแล้วนำไปสร้างเป็น Extension ให้เรียบร้อยเลยแต่ว่า มันไม่มีเมนูสำหรับแทรก ปุ่มลงใน toolbar หรือแทรก menu ลงใน menubar เลยสิ มีแค่สร้าง menu ใหม่หรือ toolbar ใหม่เท่านั้น
แต่ เราสามารถทำ ปุ่มหรือ menu ที่เราสร้างไปแทรกอยู่ toolbar หรือ menubar เก่าได้ด้วยวิธีการแก้ไข file Addon.xcu โดยเราต้องเพิ่ม MergePoint ครับเช่น
<prop oor:name="MergePoint">
<value>.uno:PickList\.uno:SetDocumentProperties</value>
</prop>
หมายความว่า จุดที่เราจะ Merge นั้นอยู่ที่ Menu File ตำแหน่ง Properties ซึ่งค่าตัวแปรต่างๆ ที่ใช้นั้นเราสามารถดูได้จาก uno function ครับ ในส่วนต่อมาเราจะต้องบอกว่าเราจะแทรกก่อนหรือหลัง ส่วนที่เราระบุไปเมื่อครู่ โดยการใช้ MergeCommand เช่น
<prop oor:name="MergeFallback">
<value>AddPath</value>
</prop>
หลังจากเรากำหนดจุด MergePoint, MergeCommand และ MergeFallback แล้วเราก็ทำการเพิ่ม Menu ได้เลยครับดังนี้
<node oor:name="MenuItems">
<node oor:name="m1" oor:op="replace">
<prop oor:name="Context" oor:type="xs:string">
<value>com.sun.star.text.TextDocument, com.sun.star.sheet.SpreadsheetDocument, com.sun.star.drawing.DrawingDocument, com.sun.star.presentation.PresentationDocument </value>
</prop>
<prop oor:name="URL" oor:type="xs:string">
<value>vnd.sun.star.script:EasyMigration.PageSetup.PageSetup?language=Basic&location=application</value>
</prop>
<prop oor:name="Title" oor:type="xs:string">
<value>Page Setup</value>
</prop>
</node>
</node>
ในส่วนของ Context นั้นเป็นตัวบอกว่าเราจะทำใน Application อะไรส่วน URL นั้นบอกว่าเราจะทำอะไรเช่นในตัวอย่างนั้นจะเรียก Macro ตัวนึงครับ ส่วน Title นั้นก็เป็น ชื่อของ Menu ของเรานั่นเอง
เราสามารถเพิ่ม Submenu ได้ด้วยครับ อ่านเพิ่มเติมได้จาก
http://wiki.services.openoffice.org/wiki/Framework/Article/Addon_Menu_Toolbar_Merging
ปล. ลิ้งด้านบน มีข้อมูลในส่วนของ toolbar merging นะจ๊ะ คล้ายๆกัน
Continue Reading...