A、定义F7窗体从list继承, 新建的F7窗体需实现implements KDPromptSelector,实现了KDPromptSelector就可以在f7窗体类中添加方法getData
B、 //弹出窗口的代码
private OrgListUI prmtorg_F7ListUI;
prmtFixcenter.addSelectorListener(new SelectorListener() {
public void willShow(SelectorEvent e) {
try {
prmtorg_F7ListUI = new com.kingdee.eas.utils.client.OrgListUI();
} catch (Exception e1) {
// TODO 自动生成 catch 块
e1.printStackTrace();
}
HashMap ctx = new HashMap();
ctx.put("bizUIOwner", javax.swing.SwingUtilities.getWindowAncestor(prmtorg_F7ListUI));
prmtorg_F7ListUI.setF7Use(true, ctx);
prmtFixcenter.setSelector(prmtorg_F7ListUI);
}
});
C、 //写f7窗口返回的内容放到数组中
public Object getData() {
HashMap data = new HashMap();
List psnlst = new ArrayList();
List orglst = new ArrayList();
TreePath []path = treeMain.getSelectionPaths();
for(int i=0;i<path.length;i++){
TreePath item = path[i];
Object ob = item.getLastPathComponent();
if (ob instanceof KDTreeNode) {
KDTreeNode node = (KDTreeNode) ob;
Object usrobj =node.getUserObject();
//添加组织
if (usrobj instanceof AdminOrgUnitInfo) {
orglst.add(usrobj);
this.visitOrgNodes(node,orglst);
}
}
}
data.put("ORG",orglst);
return data;
}
D、调用界面接收f7返回的内容
定义ArrayList listOrg
prmtFixcenter.addChangeListener(new ChangeListener(){
public void stateChanged(ChangeEvent changeevent){
KDBizPromptBox sourceBox = (KDBizPromptBox)changeevent.getSource();
Object obj = sourceBox.getData();
HashMap data = (HashMap)obj;
if (data != null)
listOrg = (ArrayList)data.get("ORG");
}
});
E、F7窗口添加
private boolean isF7Use;
protected F7Render f7Delegate;
public void setF7Use(boolean isF7Use,HashMap ctx) {
this.isF7Use = isF7Use;
if(isF7Use){
try{
this.setPreferredSize(new Dimension(800,600));
if (ctx == null) {
ctx = new HashMap();
}
f7Delegate = new PsnF7Render(this, ctx);
f7Delegate.init();
this.initLayout();
}
catch(Exception e) {
handUIException(e);
}
}
}
public void show() {
if (isF7Use) {
f7Delegate.show();
}
else {
super.show();
}
}
EAS BOS f7弹出指定窗体 的操作方法
如何扩展标准产品F7弹出窗口的功能
第一步:编写扩展类,继承自com.kingdee.bos.ctrl.extendcontrols.KDCommonPromptDialog
如下示例:
package com.kingdee.eas.custom.medianterface.client;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import com.kingdee.bos.BOSException;
import com.kingdee.bos.ctrl.extendcontrols.KDCommonPromptDialog;
import com.kingdee.bos.ctrl.swing.KDWorkButton;
import com.kingdee.eas.common.EASBizException;
import com.kingdee.eas.custom.util.MediaUtil;
import com.kingdee.eas.fi.cas.PaymentBillFactory;
import com.kingdee.eas.fi.cas.PaymentBillInfo;
/**
* 在标准F7弹出窗的toolbar上添加一个按钮,并实现按钮的功能
* @author Tommy.Xiao
*/
public class UserKDCommonPromptDialog extends KDCommonPromptDialog {
public UserKDCommonPromptDialog() {
super();
}
// @Override
protected void dialogInit() {
super.dialogInit();
//请在此处修改F7弹出窗口,可进行添加按钮,菜单等
addUriButton();
}
protected void addUriButton()
{
KDWorkButton bar = new KDWorkButton();
bar.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
//实现按钮功能
ActionUri_actionPerformed(e);
}});
bar.setText("查看影像 ");
getSkinRootPane().getBarPartAreaOfOrientation(1).getToolBars()[0].add(bar);
}
protected void ActionUri_actionPerformed(ActionEvent e )
{
ArrayList list = getSelectedIdValues();
if(list.size() > 0){
String id = list.get(0).toString();
String oql = "select * where id='" + id + "'";
try {
PaymentBillInfo payment = PaymentBillFactory.getRemoteInstance().getPaymentBillInfo(oql);
String barcode = payment.getBarcode();
MediaUtil.viewImg(barcode);
} catch (EASBizException e1) {
e1.printStackTrace();
} catch (BOSException e1) {
e1.printStackTrace();
}
}
}
}
第二步:选中单据上的F7控制。设置其defaultF7UIName属性值上一步定义的类全路径。示例如下:
第三步:发布上一步修改的UI元数据。在其扩展类的onload()方法中添加以下代码:
QueryAgent agent = new QueryAgent();
MetaDataPK pk = new MetaDataPK("com.kingdee.eas.custom.medianterface.app", "PaymentBillMediaQuery"); //具体的Query根据实际情况填写
agent.setQueryInfoPK(pk);
UserKDCommonPromptDialog userF7 = new UserKDCommonPromptDialog();
userF7.setQueryInfo(agent.getQueryInfo());
kDBizPayment.setSelector(userF7);
示例如下:
package com.kingdee.eas.fi.fa.manage.client;
import com.kingdee.bos.ctrl.extendcontrols.QueryAgent;
import com.kingdee.bos.metadata.MetaDataPK;
import com.kingdee.eas.custom.medianterface.client.UserKDCommonPromptDialog;
public class FaCurCardEditUICTEx extends FaCurCardEditUI{
public FaCurCardEditUICTEx() throws Exception {
super();
}
@Override
public void onLoad() throws Exception {
super.onLoad();
QueryAgent agent = new QueryAgent();
MetaDataPK pk = new MetaDataPK("com.kingdee.eas.custom.medianterface.app", "PaymentBillMediaQuery");
agent.setQueryInfoPK(pk);
UserKDCommonPromptDialog userF7 = new UserKDCommonPromptDialog();
userF7.setQueryInfo(agent.getQueryInfo());
kDBizPayment.setSelector(userF7);
}
}