关闭

[置顶] UAP扩展开发 - 新增按钮

标签: NC65UAP按钮xmlspring-context
209人阅读 评论(0) 收藏 举报
分类:

UAP新增按钮的实现

一、扩展说明

1.按钮扩展的实现有两种方法

- 按钮继承:NCAction,MenuAction

- 拦截器实现:ActionInterceptor

此处是通过按钮继承实现的

2.UAP扩展开发新增按钮一般就三步

- 功能注册找到对应的节点查看全局配置xml文件

- 新建action类,扩展xml文件

- 注册配置文件到功能注册节点下


此处以销售订单维护为例,效果如下



3.节点查找路径

- 功能注册节点

:动态建模平台 -> 开发配置 -> 功能管理 -> 功能注册 

- 销售订单维护节点

:供应链 -> 销售管理 -> 销售订单 -> 销售订单维护

二、按钮实现

第一步 - 功能节点查看

1.新建UAP项目

新建销售po模块的UAP项目,新建组件命名自定义;

选中项目右键启动中间件服务;

本次扩展添加的按钮是销售订单维护节点下的。

进入功能注册找到采购订单维护节点



看到'B'部分参数注册内层红框就是当前节点的xml配置文件,这个后面要用到;

第二步 - 按钮类及配置文件实现

1.创建action类及xml扩展文件

在新建的项目中client下新建action类及xml配置文件;

命名最好规范化可以参考标准产品相似功能节点的命名

结构如下:


action类就是按钮对应的java类,该类继承NCAction,覆盖doAction()方法,按钮的响应后的逻辑操作可在此方法中编写;

xml文件就是扩展按钮的配置文件。

2.文件代码

AddTestAction.java

package nc.ui.extend.pubapp.action;

import java.awt.event.ActionEvent;

import nc.ui.pub.beans.MessageDialog;
import nc.ui.uif2.NCAction;
import nc.ui.uif2.UIState;
import nc.ui.uif2.editor.BillForm;
import nc.ui.uif2.model.AbstractAppModel;

public class AddTestAction extends NCAction { 
	 
	public AddTestAction() {
		super.setBtnName("按钮");
		super.setCode("code");
	}
	 
	private static final long serialVersionUID = -4417976703049420324L; 
	private BillForm editor; 
	private AbstractAppModel model; 

 
	@Override public void doAction(ActionEvent e) throws Exception {
		MessageDialog.showHintDlg(editor, " 提示 ", " 测试自己新按钮按下 ");
	}
	public BillForm getEditor() {
		return this.editor; 
	}
	public AbstractAppModel getModel() {
		return this.model; 
	}
	public void setEditor(BillForm editor) {
		this.editor = editor; 
	}
	public void setModel(AbstractAppModel model) {
		this.model = model;
		model.addAppEventListener(this);
	}
	@Override
	protected boolean isActionEnable() {
		return this.model.getUiState() == UIState.NOT_EDIT;
	}
} 

pubapp_ext_config.xml

<?xml version="1.0" encoding="GBK"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
	<!--  插入按钮 -->
	<bean class="nc.ui.pubapp.plugin.action.InsertActionInfo"> 
		<property name="action" ref ="AddTestAction" />
		
		<!-- 这是插入按钮的目标位置配置   addMenuGroup即为查找的目标按钮  在其后插入测试按钮-->
		<property name="target" ref="addMenuGroup" />
		<property name="pos" value="before" />
		<property name="actionContainer" ref="actionsOfList" /><!-- 卡片,列表 -->
		<property name="actionType" value="notedit" /><!-- notedit 或 edit -->
	</bean>
	
	<bean class="nc.ui.pubapp.plugin.action.InsertActionInfo">
		<property name="action" ref ="AddTestAction" />
		<property name="target" ref="addMenuGroup" /><!-- 目标按钮 -->
		<property name="pos" value="before" /><!-- 位置 -->
		<property name="actionContainer" ref="actionsOfCard" /><!-- 卡片,列表 -->
		<property name="actionType" value="notedit" /><!-- notedit 或 edit -->
	</bean>
	
	<bean id="AddTestAction" class="nc.ui.extend.pubapp.action.AddTestAction">
		<property name="model" ref="manageAppModel" />
		<property name="editor" ref="billFormEditor" />
		
	</bean>
 </beans>

3.xml配置中的参数说明

<bean class="nc.ui.pubapp.plugin.action.InsertActionInfo"> 标识了扩展新增按钮
< bean class="nc.ui.pubapp.plugin.action.ReplaceActionInfo">替换按钮配置
<bean class=" nc.ui.uif2.uiextend.ActionExtInfo">删除按钮配置
<property name="target" ref="addMenuGroup" /> 
<property name="pos" value="before" />新增按钮AddTestAction在按钮addMenuGroup的前面
<bean id="AddTestAction" class="nc.ui.extend.pubapp.action.AddTestAction">
<property name="model" ref="manageAppModel" />
<property name="editor" ref="billFormEditor" />
</bean>
id就是作为一个按钮在xml配置文件中的标识,
class是按钮对应的的Java类
model是销售订单维护节点的xml配置文件中注册的AppModel
editor也是在该节点的xml配置文件中;

以上model,editor,目标按钮都是在xml配置中找;这个xml就是上面功能节点销售订单维护下的参数注册中的saleorder_config.xml配置文件;

找源码有个快捷键Ctrl+Shift+T,会弹出输入框,输入查找的文件名点击确认即可;


打开文件后,可以找到actions,选一个作为目标按钮即可;


关于model可以去查或者按照已有的action跟它配置的model,editor保持一致即可;



第三步 - 配置文件注册

1.注册配置文件到功能节点

就是把xml的全路径配置到销售订单维护节点下的参数注册中;

注意参数的命名有一定的规范,一般PluginBeanConfigFilePath加下划线后跟01,02这样;



到此完成新增按钮;到供应链的销售订单维护打开,此时按钮已被添加成功。


另:如果是二级按钮,或者按钮组;注意选择目标按钮后,将<property name="actionType" value="notedit" />中的notedit换成edit即可。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场