??? 這次接著說UNO組件的配置文件,該組件的配置文件是以xcu后綴名結(jié)尾的,同其他java中的配置文件一樣,它也是xml格式的文件。
??? xcu配置文件的作用是對(duì)OOo插件的在OOo的菜單欄、工具欄之中指定如何定義用戶界面擴(kuò)展,以及菜單被點(diǎn)擊后應(yīng)該觸發(fā)哪個(gè)類的具體方法的指向。例子如下:
???
?1?<node?oor:name="AddonMenu">
?2?????????????<node?oor:name="cn.ac.cintcm.openoffice.plugin"?oor:op="replace">
?3?????????????????<prop?oor:name="Title"?oor:type="xs:string">
?4?????????????????????<value?xml:lang="en-US">CRF?report</value>
?5?????????????????????<value?xml:lang="zh-CN">病例報(bào)表</value>
?6?????????????????</prop>
?7?????????????????<prop?oor:name="Context"?oor:type="xs:string">
?8?????????????????????<value>com.sun.star.text.TextDocument</value>
?9?????????????????</prop>
10?????????????????<node?oor:name="Submenu">
11?????????????????????<node?oor:name="m1"?oor:op="replace">
12?????????????????????????<prop?oor:name="URL"?oor:type="xs:string">
13?????????????????????????????<value>cn.ac.cintcm.openoffice.plugin.lemma:LemmaDialog</value>
14?????????????????????????</prop>
15?????????????????????????<prop?oor:name="ImageIdentifier"?oor:type="xs:string">
16?????????????????????????????<value/>
17?????????????????????????</prop>
18?????????????????????????<prop?oor:name="Title"?oor:type="xs:string">
19?????????????????????????????<value/>
20?????????????????????????????<value?xml:lang="en-US">TCM?lemma?search</value>
21?????????????????????????????<value?xml:lang="zh-CN">中醫(yī)詞條搜索</value>
22?????????????????????????</prop>
23?????????????????????????<prop?oor:name="Target"?oor:type="xs:string">
24?????????????????????????????<value>_self</value>
25?????????????????????????</prop>
26?????????????????????</node>
27?????????????????????<node?oor:name="m2"?oor:op="replace">
28?????????????????????????<prop?oor:name="URL"?oor:type="xs:string">
29?????????????????????????????<value>cn.ac.cintcm.openoffice.plugin.database:DataBase</value>
30?????????????????????????</prop>
31?????????????????????????<prop?oor:name="ImageIdentifier"?oor:type="xs:string">
32?????????????????????????????<value/>
33?????????????????????????</prop>
34?????????????????????????<prop?oor:name="Title"?oor:type="xs:string">
35?????????????????????????????<value/>
36?????????????????????????????<value?xml:lang="en-US">DataBase</value>
37?????????????????????????????<value?xml:lang="zh-CN">數(shù)據(jù)庫</value>
38?????????????????????????</prop>
39?????????????????????????<prop?oor:name="Target"?oor:type="xs:string">
40?????????????????????????????<value>_self</value>
41?????????????????????????</prop>
42?????????????????????</node>
43?????????????????</node>
44?????????????</node>
45?????????</node>

??? 該xml文件為了避免和命名沖突使用了xmlns:oor="http://openoffice.org/2001/registry"、xmlns:xs="http://www.w3.org/2001/XMLSchema"的命名空間。
??? Addons.xcu是腳本調(diào)用和直接調(diào)用都要用到的文件,它的根節(jié)點(diǎn)為oor:component-data,在
<node oor:name="AddonUI">節(jié)點(diǎn)下可以設(shè)置三個(gè)不同地點(diǎn)顯示的信息的子節(jié)點(diǎn),它們分別是
<node oor:name="OfficeMenuBar">、<node oor:name="OfficeToolBar">、
<node oor:name="OfficeHelp">,從xml文件的易讀性我們可以看出這些分別是設(shè)置菜單欄、工具欄和幫助信息的。
??? 用于定義加載項(xiàng)菜單的支持的 org.openoffice.Office.Addons集
??? OfficeMenuBar?? 此集中定義的菜單將成為 OOo 菜單欄中的頂層菜單。
??? AddonMenu?? ??? 此集中定義的菜單將成為彈出式菜單,是位于工具菜單底部的“加載項(xiàng)”菜單項(xiàng)的一部分。
??? 模板 MenuItem 的屬性
??? oor:name
? 字符串型。配置節(jié)點(diǎn)的名稱。名稱必須以 ASCII 字母字符開始。 該名稱在 Office-MenuBar 集中必須是唯一的。因此,必須使用諸如org.openoffice.<developer>.<product>.<addon name> 或com.<company>.<product>.<addon name> 之類的模式以避免產(chǎn)生名稱沖突。請(qǐng)記住,您的配置文件將合并到 OOo 配置分支中。您不知道當(dāng)前安裝了哪些 加載項(xiàng)或者安裝了多少加載項(xiàng)。因此子菜單的菜單項(xiàng)的節(jié)點(diǎn)名稱在其子菜單中必須是唯一的。配置集不能保證其條目的順序,因此您應(yīng)該使用字符串 + 編號(hào)(如 “m1”)這樣的模式作為排序條目時(shí)使用的名稱。
??? URL?? ??? 字符串型。指定用戶激活菜單條目時(shí)應(yīng)該分發(fā)的命令 URL。如果 MenuItem 是子菜單的
標(biāo)題,則該屬性將被忽略。要定義分隔符,您可以使用特殊的命令 URL ""private:separator。分隔符將忽略所有其他屬性。
??? Title???? 字符串型。包含頂層菜單項(xiàng)的標(biāo)題。 此屬性支持本地化:默認(rèn)字符串(在 StarSuite 無法找到其當(dāng)前語言的字符串定義時(shí)使用)使用不帶屬性的 value 元素。您可以使用xml:lang 屬性為特定語言定義字符串。為屬性指定語言/語言環(huán)境,例如<value xml:lang="en-US">string</value>。
??? Target??? 字符串型。為命令 URL 指定目標(biāo)框架。通常,加載項(xiàng)會(huì)使用以下某個(gè)預(yù)設(shè)的目標(biāo)名稱:
??? ??? ??? ??? ??? _top?? 返回調(diào)用的框架的頂層框架,它是在向上遍歷分層時(shí) isTop() 返回 true 的第一個(gè)框架。
??? ??? ??? ??? ??? _parent 返回框架分層中位于次高的框架。
??? ??? ??? ??? ??? _self?? 返回框架本身,其名稱與空白目標(biāo)框架的名稱相同。也就是說,您正在搜索一個(gè)已經(jīng)存在而且合法的框架。
??? ??? ??? ??? ??? _blank? 創(chuàng)建新的頂層框架,其父級(jí)框架是桌面框架。
??? Context??? 字符串型。服務(wù)名稱的列表,以逗號(hào)分隔,指定加載項(xiàng)菜單功能應(yīng)在哪個(gè)上下文中出現(xiàn)。空的 Context 表示功能應(yīng)該在所有上下文中出現(xiàn)。StarSuite 應(yīng)用程序模塊使用以下服務(wù)名稱:
??? ??? ??? Writer:com.sun.star.text.TextDocument
??? ??? ??? Spreadsheet:com.sun.star.sheet.SpreadsheetDocument
??? ??? ??? Presentation:com.sun.star.presentation.PresentationDocument
??? ??? ??? Draw:com.sun.star.drawing.DrawingDocument
??? ??? ??? Formula:com.sun.star.formula.FormulaProperties
??? ??? ??? Chart:com.sun.star.chart.ChartDocument
??? ??? ??? Bibliography:com.sun.star.frame.Bibliography
加載項(xiàng)的上下文服務(wù)名稱由綁定到框架的模型的服務(wù)名稱確定,它與 UI 元素(工具欄、菜單欄等)相關(guān)。因此,Writer 模型的服務(wù)名稱是com.sun.star.text.TextDocument。這表示,上下文名稱被綁定到應(yīng)用程序模塊的模型。如果開發(fā)者實(shí)現(xiàn)具有模型的新桌面組件,可以將其服務(wù)名稱作為加載項(xiàng) UI 項(xiàng)的上
下文。
??? Submenu?? 一組MenuItem 條目。可選,用于定義菜單條目的子菜單。

??? 以上是配置一個(gè)插件大致需要編寫的關(guān)于用戶界面擴(kuò)展文件,以及對(duì)其的解釋,大家可以參考看看。關(guān)于腳本調(diào)用的配置文件以及講解,將在下一次隨筆中講述。

本文依據(jù)《創(chuàng)作共用約定》之“署名-禁止派生-非商業(yè)用途”方式發(fā)布,即你可以免費(fèi)拷貝、分發(fā)、呈現(xiàn)和表演當(dāng)前作品,但是必須基于以下條款:

  • 署名:你必須明確標(biāo)明作者的名字。

  • 非商業(yè)用途:你不可將當(dāng)前作品用于商業(yè)目的。

  • 禁止派生:你不可更改、轉(zhuǎn)變或者基于此作品重新構(gòu)造為新作品。

對(duì)于任何二次使用或分發(fā),你必須讓其他人明確當(dāng)前作品的授權(quán)條款。

在得到作者的明確允許下,這里的某些條款可以放棄。