iDempiere 主题风格设计



文件位置

zk web的主题文件位置:源码:org.adempiere.ui.zk/theme/ 非源码:\idempiere-server\plugins\org.adempiere.ui.zk_3.1.0.v20160311-0602\theme\

---theme---default(默认主题),该目录下结构如下图:

制作主题

直接修改default主题 ● 拷贝default目录所有文件到新目录,作为新主题目录(比如busninessteam) ● 修改布局和素材,如下图

修改主题

修改别人制作的主题 ● 拷贝,解压缩jar文件到相应目录,只拷贝theme目录(比如busninessteam)到default目录平行位置。 ● 修改布局和素材。

主题发布

  1. 开发环境:1.1 新建 fragment project,使用 org.adempiere.ui.zk 作为一个host plugin1.2 该项目的根目录,即为1.2的主题结构和文件,含busninessteam/css | images | zul等。1.3 Eclipse中,复制server.product的启动配置参数,新增-DZK_THEME=busninessteam,新增该主题项目到你的工作区插件列表1.4 测试调整成功后,前台使用system用户登录,进入system configuration(系统配置),设置ZK_THEME=busninessteam,刷新浏览器。

  2. 已编译环境2.1 前台使用system用户登录,进入system configuration(系统配置),设置ZK_THEME=busninessteam,刷新浏览器。

主题开发

1、eclipse下创建2个项目,一个官方版本项目(比如ad380),一个自定义项目(比如myXyz,依赖前者,fork源码https://github.com/mckayERP/template)。2、在第一个项目的工作空间,新增forked的代码。3、修改utils_dev/buildCustomization.properties指向实际的路径。4、重点开始了,自定义zk webui。5、删除zkwebui文件夹下的所有东西,除了保留build_custom.xml文件。6、拷贝ad380项目中的zkwebui所有东西,记得不要覆盖build_custom.xml。7、删除zkwebui/WEB-INF/src源码树,只留下你想要修改的文件。8、myXyz只有一个自定义文件--LoginPanel.java,只是简单修改了组件“login header”的Title为“我的定制成功了!”9、eclipse的tools/lauchers中,修改myXyz的启动器为正确的名字,比如myXyz ZK(待测试,我没有环境) 10、启动myXyz ZK,这将从ad380项目中拷贝所有需要的类到myXyz项目。11、依赖Adempiere的版本,你需要手动修改utils_dev/build.xml文件,最后刷新项目文件。12、如果你自定义zk webui,新增一个服务器,并将这个模版项目加入到这个服务器。在服务器启动器上,类路径需要包含如下:C:/dev/apache/tomcat-6.0/bin/bootstrap.jar (由于iDempiere已经变成jetty,这里需要修改)adempiereTrunk/tools/lib/jnlp.jar(修改成ad380,你的项目名称)adempiereTrunk/tools/lib/javaee.jaradempiereTrunk/tools/lib/jcommon-1.0.18.jaradempiereTrunk/tools/lib/jfreechart-1.0.15.jaradempiereTrunk/tools/lib/log4j.jaradempiereTrunk/JasperReportsTools/lib/jasperreports-5.1.0.jaradempiereTrunk/tools/lib/c3p0-0.9.1.2.jaradempiereTrunk/tools/lib/iText-2.1.7.jaradempiereTrunk/tools/lib/poi-3.9-20121203.jaradempiereTrunk/lib/postgresql.jaradempiereTrunk/tools/lib/commons-net-1.4.0.jaradempiereTrunk/tools/lib/commons-collections-3.1.jaradempiereTrunk/tools/lib/barbecue-1.5-beta1.jar13、这些是启动器的缺省文件,你需要指向你自己的ad380项目名称。14、开始测试啦。15、比较Ad380和myXyz的根目录下的build.xml(或其他build*.xml文件),修改并增加自定义类。(不懂细节,截图2张)16、如果你启动服务器,你就可以看到zk文件的变化。(重启才能看到更新)17、导出自定义jar文件。18、服务器启动时已经构建了自定义jar文件,本例中,这2个文件(customization.jar 、 zkcustomization.jar)已经添加到库目录中。19、直接安装(RUN_Setup)就可以看到变化了。

index.zul

布局文件:所有布局文件都在theme/zul目录下,所有java类都在/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui目录下。

index.zul: 主题定义: /org.adempiere.ui.zk/theme.zsjava定义:/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/AdempiereWebUI.java

desktop.zul

布局定义:org.adempiere.ui.zk/theme/default/zul/desktop/java定义:org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/DefaultDesktop.java,关键代码如下:

        Center windowArea = layout.getCenter();

        windowContainer.createPart(windowArea);

        homeTab = new Tabpanel();
        windowContainer.addWindow(homeTab, Util.cleanAmp(Msg.getMsg(Env.getCtx(), "Home")), false, null);
        homeTab.getLinkedTab().setSclass("desktop-hometab");
        ((Tab)homeTab.getLinkedTab()).setDisableDraggDrop(true);
        homeTab.setSclass("desktop-home-tabpanel");
        BusyDialog busyDialog = new BusyDialog();
        busyDialog.setShadow(false);
        homeTab.appendChild(busyDialog);

ADTabpanel.java

ADTabpanel(一个adtab-content)主窗口区的tab面板,布局文件desktop.zul。java代码:/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java

FedexLabelWindow

这是一个自定义的打印快递标签的窗口例子。java代码:/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/PrintLabelApplet.java,关键代码如下:

public LabelAppletWindow(List<byte[]> list) 
	{
		super();
		
		Div div = new Div();
		appendChild(div);
		
		Applet applet = new Applet();
		applet.setCode("PrintLabelApplet.class");
		applet.setArchive("labelapplet.jar");
		ZKUpdateUtil.setWidth(applet, "0");
		ZKUpdateUtil.setHeight(applet, "0");
		applet.setParam("size", list.size() + "");

		for(int i = 0; i < list.size(); i++)
		{
			try
			{				
				MArchive archive = new MArchive(Env.getCtx(), 0, null);
				archive.setName("file_" + i);
				archive.setBinaryData(list.get(i));
				archive.saveEx();				
				applet.setParam("file_" + i, archive.getAD_Archive_ID() + "");
				if (log.isLoggable(Level.INFO))
					log.info("file_" + i + "=" + archive.getAD_Archive_ID());
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		
		div.appendChild(applet);
		
		ToolBarButton link = new ToolBarButton();
		link.setLabel("Click here to close this popup after printing is completed.");
		link.addEventListener(Events.ON_CLICK, this);
		appendChild(link);
		
		this.setBorder("normal");		
}

UPSHtmlLabelWindow

这也是一个自定义的打印快递标签的窗口例子。java代码:/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/UPSHtmlLabelWindow.java

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值