这次接着说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   此集中定义的菜单将成为 OOo 菜单栏中的顶层菜单。
    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 条目。可选,用于定义菜单条目的子菜单。

    以上是配置一个插件大致需要编写的关于用户界面扩展文件,以及对其的解释,大家可以参考看看。关于脚本调用的配置文件以及讲解,将在下一次随笔中讲述。

本文依据《创作共用约定》之“署名-禁止派生-非商业用途”方式发布,即你可以免费拷贝、分发、呈现和表演当前作品,但是必须基于以下条款:

  • 署名:你必须明确标明作者的名字。

  • 非商业用途:你不可将当前作品用于商业目的。

  • 禁止派生:你不可更改、转变或者基于此作品重新构造为新作品。

对于任何二次使用或分发,你必须让其他人明确当前作品的授权条款。

在得到作者的明确允许下,这里的某些条款可以放弃。