Pentaho Data Integration 界面开发

简介:

1,简介

PDI界面使用了xul技术。通过配置xul文件就可以修改界面了。其次,具体图形界面的开发也用到了eclipse swt 和 Jface包。本文记录如何修改PDI的主界面的菜单栏,并新添加的菜单栏上做一些操作。

2,PDI中的xul配置

主要的配置文件有两个spoon.xul 和 menubar.xul。它们在项目主目录的 ui 目录下。spoon.xul 中定义了主界面的菜单栏、工具栏,同时也引用了 menubar.xul

<pen:include src="menubar.xul" ignoreroot="true"/>

munubar.xul 用来定义主界面的菜单。修改menubar.xul就可以修改菜单栏了。

 此外,启动界面的修改主要在这里:

Splash splash = new Splash(display);

 

3,具体操作步骤

根据menubar.xul中已有的格式新增一个菜单栏:

<menuitem id="submit-to-storm" label="${Spoon.Menu.File.SubmitToStorm}" command="spoon.submitToStorm()" />

其中, id 将会在PDI的main 类 Spoon.java 中相关语句用到。id 用来定位此菜单栏。 label 表示在该菜单栏上显示的内容,为了国际化,使用了一个单独的message文件来保存内容,在

src\org\troy\di\ui\spoon\messages 目录下的 zh 文件中新增该菜单显示的内容即可。效果图如下:

 

再分析下PDI是如何解析xul文件的:

复制代码
1 mainSpoonContainer = xulLoader.loadXul(XUL_FILE_MAIN, new XulSpoonResourceBundle());//XUL_FILE_MAIN=spoon.xul
2 
3  mainSpoonContainer.addEventHandler(this);//add listener
4 
5 mainSpoonContainer.getDocumentRoot().getElementById("spoon-menubar");//add menubar
6 
7  mainToolbar = (XulToolbar) mainSpoonContainer.getDocumentRoot().getElementById("main-toolbar");//add toolbar
复制代码

 

增加了menu之后,那么点击该menu之后,如何响应呢?这是由menubar.xul中的 “command” 来定义。它指定了当点击menu时,在Spoon类中需要执行的方法。比如,可以在点击menu之后,弹出一个文件选择对话框,只需要在"command"指定的方法里面生成一个FileDialog即可。

String[] filterExtensions = {"*.ktr", "*.kjb"};//设置过滤文件
FileDialog dialog = new FileDialog(shell, SWT.OPEN);//生成一个文件对话框
dialog.setFilterExtensions(filterExtensions);
String fname = dialog.open();//fname 获得在文件对话框中选择了哪个文件的路径

这样,使用 fname 就可以对该文件进行进一步操作了。

 

4,PDI界面编程

PDI中的各种对话框、选择框……主要是用 eclipse swt 和 jface 包中的类来实现的。对于 eclipse swt 编程需要import 以下的包:

import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;

然后需要 Display对象和 Shell 对象持有 swt 中的各种组件。然后就可以往 shell 中添加各种组件了。

Display display = new Display(); 
Shell shell = new Shell(display);

 

5,PDI中的文件操作

PDI借助 Java IO包和 org.apache.commons.vfs 包 实现KettleVFS.java ,通过KettleVFS类来实现文件系统的各种操作。比如实现文件复制:

复制代码
 1         BufferedInputStream fis = null;
 2         BufferedOutputStream fos = null;
 3 
 4         try {
 5 
 6             fis = new BufferedInputStream(KettleVFS.getInputStream(in));
 7             fos = new BufferedOutputStream(KettleVFS.getOutputStream(out, false));
 8 
 9             byte[] buf = new byte[1024 * 1024]; // copy in chunks of 1 MB
10             int i = 0;
11             while ((i = fis.read(buf)) != -1) {
12                 fos.write(buf, 0, i);
13             }
14             fos.flush();
15             fos.close();
16             fis.close();
复制代码

 

5,参考资料

swt 编程参考文档


本文转自hapjin博客园博客,原文链接:http://www.cnblogs.com/hapjin/,如需转载请自行联系原作者

相关文章
|
Java Maven
使用maven构建项目报错Cannot change version of project facet Dynamic Web Module to 3.0解决方案
使用maven构建项目报错Cannot change version of project facet Dynamic Web Module to 3.0解决方案
使用maven构建项目报错Cannot change version of project facet Dynamic Web Module to 3.0解决方案
|
Java BI 开发框架
pentaho Report Designer 入门教程(二)
       采用Pentaho Report Designer5.1版本,也是最新的版本。 一、       安装和介绍 介绍部分内容略,首先安装jdk,并配置java相关环境变量,下载pentaho report并解压,直接运行即可。 二、       第一个示例 三、在Swing程序中集成 示例程序主要有三个部分,程序目录如下图:
3573 0
|
JavaScript Linux 开发工具
APICloud-Tools-Core-APICloud 开发工具核心库
APICloud 开发工具核心库,支持新建页面模板,新建应用模板,WiFi 同步等核心功能。 开发者可基于此核心库,定制各种编辑器插件或者将 APICloud 的开发调试功能与已有的自动化业务流程结合,提升开发效率。
149 0
|
前端开发 开发者
webpack4.0各个击破(10)—— Integration篇
webpack作为前端最火的构建工具,是前端自动化工具链最重要的部分,使用门槛较高。本系列是笔者自己的学习记录,比较基础,希望通过问题 + 解决方式的模式,以前端构建中遇到的具体需求为出发点,学习webpack工具中相应的处理办法。
1344 0