首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > Java > OpenOffice.org之恋(三)
【标  题】:OpenOffice.org之恋(三)
【关键字】:OpenOffice.org
【来  源】:http://www.blogjava.net/stme/archive/2006/12/16/87516.html

OpenOffice.org之恋(三)


??? 接上次讲到界面扩展的配置文件,这次说直接调用和脚本调用的配置文件。
之前我说过脚本调用的包的结构为:
脚本调用的包:
??? ?? ?? zip--|
??? ?? ?? ????? |-jarName文件夹--|--jarName.jar
??? ?? ?? ?? ?? |?? ?? ?? ?? ?? ?? |
??? ?? ?? ?? ?? |?? ?? ?? ?? ?? ?? |--parcel-descriptor.xml
??? ?? ?? ????? |
??? ?? ?? ????? |-addons.xcu
??? ?? ?? ????? |
??? ?? ?? ????? |-META-INF--|--manifest.xml

META-INF文件夹中manifest.xml文件的内容可能为:

<?xml?version="1.0"?encoding="UTF-8"?>
<manifest:manifest>
?
<manifest:file-entry?manifest:full-path="Addon.xcu"?manifest:media-type="application/vnd.sun.star.configuration-data"/>
<manifest:file-entry?manifest:full-path="LemmaDialog/"?manifest:media-type="application/vnd.sun.star.basic-library"/>
</manifest:manifest>
??? 上面两项分别是配置显示扩展所用的Addon.xcu配置文件,和你所要添加的业务组件的zip包内所在的文件夹名,后面的类型说明标明了其类型。
??? 说到脚本调用,我们就应该了解OOo的脚本调用框架,ScriptingFramework 的目标在于使OOo支持地语言编写的宏可以:
??? ??? *执行
??? ??? *显示
?? ?? ? *被管理
??? ??? *被指定到 OOo 事件、组合键、菜单和工具栏项目
??? 通过部署满足 com.sun.star.script.provider.LanguageScriptProvider 指定服务定义要求的UNO 组件,来添加新语言支持,即可实现上述目标。ScriptingFramework 通过找出满足服务规范并遵守命名约定? “com.sun.star.script.provider.ScriptProviderFor[Language]” 的可用组件来检测支持的语言。默认情况下,OOo 安装了许多参考 LanguageScriptProvider。下面是OOo现在支持的语言列表:
Java??? ??? ??? com.sun.star.script.provider.ScriptProviderForJava
JavaScript????? com.sun.star.script.provider.ScriptProviderForJavaScript
BeanShell?????? com.sun.star.script.provider.ScriptProviderForBeanShell
Basic?????????? com.sun.star.script.provider.ScriptProviderForBasic

所有 BeanShell、JavaScript 与 Java 宏都附带一种类型变量
com.sun.star.script.provider.XScriptContext(可用它来访问 OOo API)。此类型有三
种方法:
??? ??? * com.sun.star.frame.XModel getDocument(? )
??? 返回为其调用宏的文档的 XModel 接口
??? ??? * com.sun.star.frame.XDesktop getDesktop(? )
??? 返回应用程序的 XDesktop 接口,用于访问打开的文档和加载文档
??? ??? * com.sun.star.uno.XComponentContext getComponentContext(? )
??? 返回 XComponentContext 接口,用于创建服务实例
??? 根据语言的不同,宏以不同的方式访问 XScriptContext 类型:
??? ??? *Java:传递到宏方法的第一个参数总是属于类型 XScriptContext
??? Xmodel xDocModel = xScriptContext.getDocument();
??? 因为 Java 是一种编译语言,所以不能直接在 OOo 中将 Java 源代码作为宏来执行。该代码必须
先编译,然后部署在 OOo 安装和文档内。
??? 以下步骤介绍如何使用 HelloWorld 示例代码创建Java 宏:
  1. 为宏创建一个 LemmaDialog 目录
  2. 使用 LemmaDialog源代码创建一个 LemmaDialog.java 文件
  3. 编译 LemmaDialog.java 文件。下列来自于 OOo安装的 program/classes 目录的 jar 文件必须位于类路径中:ridl.jar、unoil.jar、sandbox.jar、jurt.jar
  4. 创建一个包含 LemmaDialog.class 文件的 LemmaDialog.jar 文件
  5. 为宏创建一个 parcel-descriptor.xml 文件
其parcel-descriptor.xml文件如下:
?1?<?xml?version="1.0"?encoding="UTF-8"?>?
?2?<parcel?language="Java"?xmlns:parcel="scripting.dtd">?
?3?????<script?language="Java">
?4????????<locale?lang="en">
?5?????????????<displayname?value="cn.ac.cintcm.oo.plugin.lemma.LemmaDialog.lemmaDialog"/>
?6?????????????<description>
?7?????????????????Prints?"Lemma?Dialog".
?8?????????????</description>
?9?????????</locale>
10?????????<functionname?value="cn.ac.cintcm.oo.plugin.lemma.LemmaDialog.lemmaDialog"/>
11?????<logicalname?value="cn.ac.cintcm.oo.plugin.lemma.LemmaDialog.lemmaDialog"/>
12?????????<languagedepprops>
13?????????????<prop?name="classpath"?value="LemmaDialog.jar"/>
14?????????</languagedepprops>
15?????</script>
16?</parcel>
第13行,说明了宏调用的具体业务代码是LemmaDialog.jar包中的类,而且是从第10行 cn.ac.cintcm.oo.plugin.lemma.LemmaDialog.lemmaDialog这个全路径所表示的类中的方法开始中注入XScriptContext这个参数开始的。接下来就可以调用XScriptContext的对象进行一系列的操作了。
??? com.sun.star.awt中有很多与awt、swing相类似的组件可以调用,com.sun.star.beans.XPropertySet是对这些组件进行参数设置的接口。
??? 下次介绍有关于使用Java调用OOo具体类的业务代码,在OOo中调用其sdk的service与我们一般编写java代码有一定的区别,下回大家就可明白这其中的区别了。



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

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

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

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

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

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


Eclipse 3.3M4 发布:【上一篇】
强烈推荐!敏捷开发的必要技巧整本:【下一篇】
【相关文章】
  • OpenOffice.org之恋(二)
  • OpenOffice.org之恋(一)
  • 用OpenOffice.org管理MySql数据库
  • 64位中的openoffice.org&&运行32位多媒体软件的一些想法
  • openoffice.org2.0中文版下载
  • 让OpenOffice.orgWrite显示中文
  • 【随机文章】
  • samba printer
  • Windows系统进程完全解析
  • Avaya Cajun交换机存在没有公开的帐户
  • 3389密码的嗅探
  • 网络打印机安装脚本(rundll32 printui.dll,PrintUIEntry用法示例)
  • 初级物理模型的构建(AS)-力学1 三星系统的构建
  • Flash 缓存问题的解决
  • 【ZT】ADSL之IP端口的设定及应用
  • Linux Programming by Exemple(第五章 目录和文件元数据)-练习2
  • Cross HighLight Table
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.