UAP新增按钮的实现
一、扩展说明
1.按钮扩展的实现有两种方法
- 按钮继承:NCAction,MenuAction
- 拦截器实现:ActionInterceptor
此处是通过按钮继承实现的
2.UAP扩展开发新增按钮一般就三步
- 新建action类,扩展xml文件
此处以销售订单维护为例,效果如下
3.节点查找路径
:动态建模平台 -> 开发配置 -> 功能管理 -> 功能注册
- 销售订单维护节点
:供应链 -> 销售管理 -> 销售订单 -> 销售订单维护
二、按钮实现
第一步 - 功能节点查看
1.新建UAP项目
新建销售po模块的UAP项目,新建组件命名自定义;
选中项目右键启动中间件服务;
本次扩展添加的按钮是销售订单维护节点下的。
看到'B'部分参数注册内层红框就是当前节点的xml配置文件,这个后面要用到;
第二步 - 按钮类及配置文件实现
1.创建action类及xml扩展文件
在新建的项目中client下新建action类及xml配置文件;
命名最好规范化可以参考标准产品相似功能节点的命名
结构如下:
action类就是按钮对应的java类,该类继承NCAction,覆盖doAction()方法,按钮的响应后的逻辑操作可在此方法中编写;
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即可。