这次接着说UNO组件的配置文件,该组件的配置文件是以xcu后缀名结尾的,同其他java中的配置文件一样,它也是xml格式的文件。
xcu配置文件的作用是对OOo插件的在OOo的菜单栏、工具栏之中指定如何定义用户界面扩展,以及菜单被点击后应该触发哪个类的具体方法的指向。例子如下:
该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 条目。可选,用于定义菜单条目的子菜单。
以上是配置一个插件大致需要编写的关于用户界面扩展文件,以及对其的解释,大家可以参考看看。关于脚本调用的配置文件以及讲解,将在下一次随笔中讲述。
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 >
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 条目。可选,用于定义菜单条目的子菜单。
以上是配置一个插件大致需要编写的关于用户界面扩展文件,以及对其的解释,大家可以参考看看。关于脚本调用的配置文件以及讲解,将在下一次随笔中讲述。
本文依据《创作共用约定》之“署名-禁止派生-非商业用途”方式发布,即你可以免费拷贝、分发、呈现和表演当前作品,但是必须基于以下条款:
署名:你必须明确标明作者的名字。
非商业用途:你不可将当前作品用于商业目的。
禁止派生:你不可更改、转变或者基于此作品重新构造为新作品。
对于任何二次使用或分发,你必须让其他人明确当前作品的授权条款。
在得到作者的明确允许下,这里的某些条款可以放弃。