UAP扩展开发 - 新增按钮
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即可。