??? 这次接着说UNO组件的配置文件,该组件的配置文件是以xcu后缀名结尾的,同其他java中的配置文件一样,它也是xml格式的文件。
??? xcu配置文件的作用是对OOo插件的在OOo的菜单栏、工具栏之中指定如何定义用户界面扩展,以及菜单被点击后应该触发哪个类的具体方法的指向。例子如下:
???
?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">病例报表</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">中医词条搜索</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">数据库</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是脚本调用和直接调用都要用到的文件,它的根节点为oor:component-data,在
<node oor:name="AddonUI">节点下可以设置三个不同地点显示的信息的子节点,它们分别是
<node oor:name="OfficeMenuBar">、<node oor:name="OfficeToolBar">、
<node oor:name="OfficeHelp">,从xml文件的易读性我们可以看出这些分别是设置菜单栏、工具栏和帮助信息的。
???
用于定义加载项菜单的支持的 org.openoffice.Office.Addons集??? OfficeMenuBar?? 此集中定义的菜单将成为 StarSuite 菜单栏中的顶层菜单。
??? AddonMenu?? ??? 此集中定义的菜单将成为弹出式菜单,是位于工具菜单底部的“加载项”菜单项的一部分。
???
模板 MenuItem 的属性
??? oor:name? 字符串型。配置节点的名称。名称必须以 ASCII 字母字符开始。 该名称在 Office-MenuBar 集中必须是唯一的。因此,必须使用诸如org.openoffice.<developer>.<product>.<addon name> 或com.<company>.<product>.<addon name> 之类的模式以避免产生名称冲突。请记住,您的配置文件将合并到 OOo 配置分支中。您不知道当前安装了哪些 加载项或者安装了多少加载项。因此子菜单的菜单项的节点名称在其子菜单中必须是唯一的。配置集不能保证其条目的顺序,因此您应该使用字符串 + 编号(如 “m1”)这样的模式作为排序条目时使用的名称。
???
URL?? ??? 字符串型。指定用户激活菜单条目时应该分发的命令 URL。如果 MenuItem 是子菜单的
标题,则该属性将被忽略。要定义分隔符,您可以使用特殊的命令 URL ""private:separator。分隔符将忽略所有其他属性。
???
Title???? 字符串型。包含顶层菜单项的标题。 此属性支持本地化:默认字符串(在 StarSuite 无法找到其当前语言的字符串定义时使用)使用不带属性的 value 元素。您可以使用xml:lang 属性为特定语言定义字符串。为属性指定语言/语言环境,例如<value xml:lang="en-US">string</value>。
???
Target??? 字符串型。为命令 URL 指定目标框架。通常,加载项会使用以下某个预设的目标名称:
??? ??? ??? ??? ??? _top?? 返回调用的框架的顶层框架,它是在向上遍历分层时 isTop() 返回 true 的第一个框架。
??? ??? ??? ??? ??? _parent 返回框架分层中位于次高的框架。
??? ??? ??? ??? ??? _self?? 返回框架本身,其名称与空白目标框架的名称相同。也就是说,您正在搜索一个已经存在而且合法的框架。
??? ??? ??? ??? ??? _blank? 创建新的顶层框架,其父级框架是桌面框架。
???
Context??? 字符串型。服务名称的列表,以逗号分隔,指定加载项菜单功能应在哪个上下文中出现。空的 Context 表示功能应该在所有上下文中出现。StarSuite 应用程序模块使用以下服务名称:
??? ??? ??? 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
加载项的上下文服务名称由绑定到框架的模型的服务名称确定,它与 UI 元素(工具栏、菜单栏等)相关。因此,Writer 模型的服务名称是com.sun.star.text.TextDocument。这表示,上下文名称被绑定到应用程序模块的模型。如果开发者实现具有模型的新桌面组件,可以将其服务名称作为加载项 UI 项的上
下文。
???
Submenu?? 一组MenuItem 条目。可选,用于定义菜单条目的子菜单。
??? 以上是配置一个插件大致需要编写的关于用户界面扩展文件,以及对其的解释,大家可以参考看看。关于脚本调用的配置文件以及讲解,将在下一次随笔中讲述。