package com.vci.client.portal.Formdesign;
|
|
import java.awt.BorderLayout;
|
import java.awt.Color;
|
import java.awt.Component;
|
import java.awt.Dimension;
|
import java.awt.FlowLayout;
|
import java.awt.Font;
|
import java.awt.GridBagConstraints;
|
import java.awt.GridBagLayout;
|
import java.awt.Insets;
|
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionListener;
|
import java.awt.event.FocusEvent;
|
import java.awt.event.FocusListener;
|
import java.awt.event.ItemEvent;
|
import java.awt.event.ItemListener;
|
import java.util.ArrayList;
|
import java.util.Arrays;
|
import java.util.HashMap;
|
import java.util.HashSet;
|
import java.util.Iterator;
|
import java.util.LinkedHashMap;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.Set;
|
import java.util.regex.Matcher;
|
import java.util.regex.Pattern;
|
|
import javax.swing.ButtonGroup;
|
import javax.swing.DefaultListModel;
|
import javax.swing.JButton;
|
import javax.swing.JCheckBox;
|
import javax.swing.JComboBox;
|
import javax.swing.JLabel;
|
import javax.swing.JList;
|
import javax.swing.JOptionPane;
|
import javax.swing.JPanel;
|
import javax.swing.JRadioButton;
|
import javax.swing.JScrollPane;
|
import javax.swing.JTextArea;
|
import javax.swing.JTextField;
|
import javax.swing.border.EmptyBorder;
|
|
import com.vci.client.LogonApplication;
|
import com.vci.client.common.FreeMarkerCommon;
|
import com.vci.client.omd.btm.ui.BtmClient;
|
import com.vci.client.omd.provider.ApProvider;
|
import com.vci.client.omd.provider.EnumProvider;
|
import com.vci.client.portal.Formdesign.object.CompnentGroup;
|
import com.vci.client.portal.Formdesign.util.CompnentUtil;
|
import com.vci.client.portal.utility.DataModelFactory;
|
import com.vci.client.portal.utility.PRMItem;
|
import com.vci.client.ui.swing.VCIOptionPane;
|
import com.vci.common.portal.enums.ControlType;
|
import com.vci.corba.omd.atm.AttribItem;
|
import com.vci.corba.omd.etm.EnumChild;
|
import com.vci.corba.omd.etm.EnumItem;
|
import com.vci.corba.portal.data.PLUILayout;
|
import com.vci.mw.ClientContextVariable;
|
import com.vci.omd.constants.BusinessConstants;
|
import com.vci.omd.objects.OtherInfo;
|
|
public class WidgetPanel extends JPanel {
|
|
private final JPanel contentPanel = new JPanel();
|
private JTextField jdFieldTxt;
|
private JTextField jdNameTxt;
|
private JTextField jdVlueTxt;
|
private ButtonGroup bg;
|
private JRadioButton fullDisRadio;
|
private JRadioButton noDisRadio;
|
private JButton okButton;
|
private JTextField jdValueListName;
|
private JTextField jdValueListVal;
|
private JTextArea jdScriptTxt;
|
private JTextArea jdTipsTxt;
|
private JButton addJdvalueListBtn;
|
private JComboBox jdTypeComBox;
|
// private JComboBox jdListTable;
|
// private JComboBox jdListTxt;
|
// private JComboBox jdListVal;
|
private JTextField jdListTableTxt;
|
private JTextField jdListTxtTxt;
|
private JTextField jdListValTxt;
|
private JPanel panel;
|
private JPanel dynamicPanel;
|
private JPanel sourthPanel;
|
//private String disPlayType = "";
|
private Map<String, String> jdTypeComBoxListMap;
|
private JButton delbutton;
|
//private PortalVI pvi;
|
private PRMItem prmItem;
|
//private PRM prm;
|
private String prmText = "";
|
private JPanel dynamicMainPal;
|
private JPanel dynamicSourthPal;
|
private JLabel label_1;
|
private JScrollPane scrollPane_1;
|
private JTextArea jdStyleTxt;
|
private JList jdValuelist;
|
private DefaultListModel jdValuelistModel;
|
// private int itemListIndex;
|
//private Object selectNodeObject;
|
private JLabel label_2;
|
private JTextArea jdaddfilter;
|
private JCheckBox jdiseditable;
|
private JCheckBox jdisrequired;
|
private JLabel label_3;
|
private JTextField jdctrldisplycond;
|
private JLabel label_4;
|
private JTextField jdctrldisplycol;
|
private JLabel label_5;
|
private JTextField jdcustomclass;
|
private JLabel lblCombobox;
|
private JTextField jdqueryrefields;
|
private JCheckBox jdishttpsave;
|
private JLabel label_6;
|
private JTextField jdhttpvolumnpath;
|
private JLabel label_7;
|
private JTextField jdhttppathfield;
|
private JScrollPane jsouth;
|
private JScrollPane jdy;
|
|
private JLabel lblShowExpression = null;
|
private JTextField txtShowExpression = null;
|
private JLabel lblDateFormat = null;
|
private JTextField txtDateFormat = null;
|
|
/**
|
* 保存组件和属性的关系
|
*/
|
//private Map<String, PRMItem> comPRMItemMap = new HashMap<String, PRMItem>();
|
/**
|
* (注:后加的参数)保存附加属性
|
*/
|
private HashMap<String, String> refParamsMap = new HashMap<String, String>();
|
/**
|
* 存储lab与其后面关联的组件关系
|
*/
|
//private Map<Component, Component> configMap = new HashMap<Component, Component>();
|
/**
|
* 存储属性对应的控件
|
*/
|
//private Map<String, Map<Component, Component>> attrNameAndCompMap = new HashMap<String, Map<Component, Component>>();
|
/**
|
* 存储属性名称和属性对象
|
*/
|
private AttribItem attribItem;
|
/**
|
* 存储组件
|
*/
|
private ArrayList<CompnentGroup> groupList = new ArrayList<CompnentGroup>();
|
private FormDesignDialog formDesignDialog;
|
private JLabel label_8;
|
private JScrollPane scrollPane_2;
|
private JTextArea JD_EditableProgramTxt;
|
private JLabel label_9;
|
private JTextField jd_rightTxt;
|
private JButton rightBtn;
|
|
public String getPrmText() {
|
return prmText;
|
}
|
|
public void setPrmText(String prmText) {
|
this.prmText = prmText;
|
}
|
|
/**
|
* Create the dialog.
|
*/
|
public WidgetPanel(PRMItem prmItem, AttribItem attribItem,
|
ArrayList<CompnentGroup> groupList, FormDesignDialog formDesignDialog) {
|
//this.pvi = pvi;
|
this.prmItem = prmItem;
|
//this.selectNodeObject = object;
|
this.attribItem = attribItem;
|
//this.comPRMItemMap = comPRMItemMap;
|
//this.attrNameAndCompMap = attrNameAndCompMap;
|
this.groupList = groupList;
|
this.formDesignDialog = formDesignDialog;
|
setBounds(100, 100, 679, 735);
|
init();
|
initJdTypeComBoxList();
|
actionListener();
|
initData();
|
initDisControl();
|
}
|
|
private void init() {
|
setLayout(new BorderLayout());
|
{
|
panel = new JPanel();
|
add(panel, BorderLayout.CENTER);
|
JPanel buttonPane = new JPanel();
|
buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
|
add(buttonPane, BorderLayout.SOUTH);
|
{
|
okButton = new JButton("应用");
|
okButton.setPreferredSize(new Dimension(60, 23));
|
buttonPane.add(okButton);
|
}
|
|
panel.setLayout(new BorderLayout(0, 0));
|
JScrollPane conJsp = new JScrollPane();
|
conJsp.setViewportView(contentPanel);
|
// panel.add(contentPanel, BorderLayout.NORTH);
|
panel.add(conJsp, BorderLayout.NORTH);
|
contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
|
GridBagLayout gbl_contentPanel = new GridBagLayout();
|
// gbl_contentPanel.columnWidths = new int[] { 80, 0, 0, 0, 0 };
|
// gbl_contentPanel.rowHeights = new int[] { 0, 0, 0, 0, 50, 52, 0, 0,
|
// 0 };
|
// gbl_contentPanel.columnWeights = new double[] { 0.0, 1.0, 1.0, 1.0,
|
// Double.MIN_VALUE };
|
// gbl_contentPanel.rowWeights = new double[] { 1.0, 0.0, 1.0, 0.0,
|
// 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE };
|
contentPanel.setLayout(gbl_contentPanel);
|
{
|
JLabel jdField = new JLabel("使用字段");
|
jdField.setToolTipText("页面显示的属性");
|
GridBagConstraints gbc_lblNewLabel = new GridBagConstraints();
|
gbc_lblNewLabel.insets = new Insets(0, 0, 5, 5);
|
gbc_lblNewLabel.anchor = GridBagConstraints.EAST;
|
gbc_lblNewLabel.gridx = 0;
|
gbc_lblNewLabel.gridy = 0;
|
contentPanel.add(jdField, gbc_lblNewLabel);
|
}
|
{
|
jdFieldTxt = new JTextField() {
|
@Override
|
public void setText(String t) {
|
super.setText(t);
|
/**
|
* 当为参照属性时,为附加属性对应的输入框添加tooltip
|
*
|
* @author Zylon at 2015-7-6 下午3:57:41
|
*/
|
if (isRefAttr(t.trim())) {
|
jdStyleTxt.setToolTipText(
|
"附加定义包括\"context\"、\"dataregion\"、\"datafield\"" + "\r\n context为参照对象选择弹出窗口上下文;"
|
+ "\r\n dataregion为参照返回数据所在界面区域(导航区=1,控制区=2,操作区=3),省略此参数时默认为2-->3-->1顺序获取"
|
+ "\r\n datafield为所选参照对象属性,省略此参数时默认值为\"oid\"(该属性如果不是oid,那么必须为参照类型属性)"
|
+ "\r\n 示例:context=selectproducts;dataregion=2;datafield=ownproduct");
|
}
|
}
|
};
|
jdFieldTxt.setFont(new Font("宋体", Font.BOLD, 13));
|
jdFieldTxt.setEnabled(true);
|
jdFieldTxt.setEditable(false);
|
GridBagConstraints gbc_textField = new GridBagConstraints();
|
gbc_textField.insets = new Insets(0, 0, 1, 5);
|
gbc_textField.fill = GridBagConstraints.HORIZONTAL;
|
gbc_textField.gridx = 1;
|
gbc_textField.gridy = 0;
|
contentPanel.add(jdFieldTxt, gbc_textField);
|
jdFieldTxt.setColumns(10);
|
}
|
{
|
jdiseditable = new JCheckBox("只读");
|
jdiseditable.setToolTipText("设置是否可以编辑,选中则属性不可以编辑,不选则属性可以编辑");
|
GridBagConstraints gbc_checkBox = new GridBagConstraints();
|
gbc_checkBox.insets = new Insets(0, 0, 1, 5);
|
gbc_checkBox.gridx = 2;
|
gbc_checkBox.gridy = 0;
|
contentPanel.add(jdiseditable, gbc_checkBox);
|
}
|
{
|
jdisrequired = new JCheckBox("必填");
|
jdisrequired.setToolTipText("该属性字段是否是必填项");
|
GridBagConstraints gbc_checkBox_1 = new GridBagConstraints();
|
gbc_checkBox_1.anchor = GridBagConstraints.WEST;
|
gbc_checkBox_1.insets = new Insets(0, 0, 1, 0);
|
gbc_checkBox_1.gridx = 3;
|
gbc_checkBox_1.gridy = 0;
|
contentPanel.add(jdisrequired, gbc_checkBox_1);
|
}
|
{
|
JLabel jdName = new JLabel("显示名称");
|
jdName.setToolTipText("页面属性显示的名称");
|
GridBagConstraints gbc_lblNewLabel = new GridBagConstraints();
|
gbc_lblNewLabel.anchor = GridBagConstraints.EAST;
|
gbc_lblNewLabel.insets = new Insets(0, 0, 1, 5);
|
gbc_lblNewLabel.gridx = 0;
|
gbc_lblNewLabel.gridy = 1;
|
contentPanel.add(jdName, gbc_lblNewLabel);
|
}
|
{
|
jdNameTxt = new JTextField();
|
GridBagConstraints gbc_textField_1 = new GridBagConstraints();
|
gbc_textField_1.insets = new Insets(0, 0, 1, 5);
|
gbc_textField_1.fill = GridBagConstraints.HORIZONTAL;
|
gbc_textField_1.gridx = 1;
|
gbc_textField_1.gridy = 1;
|
contentPanel.add(jdNameTxt, gbc_textField_1);
|
jdNameTxt.setColumns(10);
|
}
|
{
|
JLabel jdType = new JLabel("显示类型");
|
jdType.setToolTipText("属性显示的控件类型");
|
GridBagConstraints gbc_lblNewLabel = new GridBagConstraints();
|
gbc_lblNewLabel.insets = new Insets(0, 0, 1, 5);
|
gbc_lblNewLabel.gridx = 2;
|
gbc_lblNewLabel.gridy = 1;
|
contentPanel.add(jdType, gbc_lblNewLabel);
|
}
|
{
|
jdTypeComBox = new JComboBox();
|
GridBagConstraints gbc_comboBox = new GridBagConstraints();
|
gbc_comboBox.insets = new Insets(0, 0, 1, 5);
|
gbc_comboBox.fill = GridBagConstraints.HORIZONTAL;
|
gbc_comboBox.gridx = 3;
|
gbc_comboBox.gridy = 1;
|
contentPanel.add(jdTypeComBox, gbc_comboBox);
|
}
|
{
|
JLabel jdVlue = new JLabel("默认值表达式");
|
jdVlue.setToolTipText("属性的默认值");
|
GridBagConstraints gbc_lblNewLabel = new GridBagConstraints();
|
gbc_lblNewLabel.anchor = GridBagConstraints.EAST;
|
gbc_lblNewLabel.insets = new Insets(0, 0, 1, 5);
|
gbc_lblNewLabel.gridx = 0;
|
gbc_lblNewLabel.gridy = 2;
|
contentPanel.add(jdVlue, gbc_lblNewLabel);
|
}
|
{
|
jdVlueTxt = new JTextField();
|
GridBagConstraints gbc_textField_2 = new GridBagConstraints();
|
gbc_textField_2.gridwidth = 3;
|
gbc_textField_2.insets = new Insets(0, 0, 1, 5);
|
gbc_textField_2.fill = GridBagConstraints.HORIZONTAL;
|
gbc_textField_2.gridx = 1;
|
gbc_textField_2.gridy = 2;
|
contentPanel.add(jdVlueTxt, gbc_textField_2);
|
jdVlueTxt.setToolTipText(
|
"默认值表达式支持\"源对象属性\"、\"内置系统变量\"、\"内置系统函数\"与\"自定义类\",格式如:\"${description}_#CURRENTUSER.NAME#_#CURRENTDATETIME#_!com.vci.ui.form.defaultvalue.InitRevVer!\"");
|
jdVlueTxt.setColumns(10);
|
jdVlueTxt.addFocusListener(new FocusListener() {
|
@Override
|
public void focusLost(FocusEvent e) {
|
jdVlueTxt.setForeground(Color.black);
|
String rtnContent = isDefaultExpress(jdVlueTxt.getText());
|
if (!rtnContent.equals("")) {
|
VCIOptionPane.showError(WidgetPanel.this, "默认值表达式校验:" + rtnContent);
|
jdVlueTxt.setForeground(Color.red);
|
}
|
}
|
|
@Override
|
public void focusGained(FocusEvent e) {
|
}
|
});
|
}
|
{
|
lblShowExpression = new JLabel("显示表达式");
|
GridBagConstraints gbc_lblNewLabel = new GridBagConstraints();
|
gbc_lblNewLabel.anchor = GridBagConstraints.EAST;
|
gbc_lblNewLabel.insets = new Insets(0, 0, 1, 5);
|
gbc_lblNewLabel.gridx = 0;
|
gbc_lblNewLabel.gridy = 3;
|
contentPanel.add(lblShowExpression, gbc_lblNewLabel);
|
}
|
{
|
txtShowExpression = new JTextField();
|
GridBagConstraints gbc_textField_2 = new GridBagConstraints();
|
gbc_textField_2.gridwidth = 3;
|
gbc_textField_2.insets = new Insets(0, 0, 1, 5);
|
gbc_textField_2.fill = GridBagConstraints.HORIZONTAL;
|
gbc_textField_2.gridx = 1;
|
gbc_textField_2.gridy = 3;
|
contentPanel.add(txtShowExpression, gbc_textField_2);
|
}
|
{
|
lblDateFormat = new JLabel("日期格式化字符串");
|
GridBagConstraints gbc_lblNewLabel = new GridBagConstraints();
|
gbc_lblNewLabel.anchor = GridBagConstraints.EAST;
|
gbc_lblNewLabel.insets = new Insets(0, 0, 1, 5);
|
gbc_lblNewLabel.gridx = 0;
|
gbc_lblNewLabel.gridy = 4;
|
contentPanel.add(lblDateFormat, gbc_lblNewLabel);
|
}
|
{
|
txtDateFormat = new JTextField();
|
GridBagConstraints gbc_textField_2 = new GridBagConstraints();
|
gbc_textField_2.gridwidth = 3;
|
gbc_textField_2.insets = new Insets(0, 0, 1, 5);
|
gbc_textField_2.fill = GridBagConstraints.HORIZONTAL;
|
gbc_textField_2.gridx = 1;
|
gbc_textField_2.gridy = 4;
|
contentPanel.add(txtDateFormat, gbc_textField_2);
|
}
|
{
|
JLabel jdCols = new JLabel("占位方式");
|
jdCols.setToolTipText("属性在页面中是否显示");
|
GridBagConstraints gbc_lblNewLabel = new GridBagConstraints();
|
gbc_lblNewLabel.anchor = GridBagConstraints.EAST;
|
gbc_lblNewLabel.insets = new Insets(0, 0, 1, 5);
|
gbc_lblNewLabel.gridx = 0;
|
gbc_lblNewLabel.gridy = 5;
|
contentPanel.add(jdCols, gbc_lblNewLabel);
|
}
|
{
|
bg = new ButtonGroup();
|
fullDisRadio = new JRadioButton("显示");
|
fullDisRadio.setSelected(true);
|
noDisRadio = new JRadioButton("不显示");
|
bg.add(fullDisRadio);
|
bg.add(noDisRadio);
|
|
GridBagConstraints gbc_panel_1 = new GridBagConstraints();
|
gbc_panel_1.insets = new Insets(0, 0, 1, 5);
|
gbc_panel_1.fill = GridBagConstraints.NONE;
|
gbc_panel_1.gridx = 1;
|
gbc_panel_1.gridy = 5;
|
contentPanel.add(fullDisRadio, gbc_panel_1);
|
|
gbc_panel_1 = new GridBagConstraints();
|
gbc_panel_1.insets = new Insets(0, 0, 1, 5);
|
gbc_panel_1.fill = GridBagConstraints.NONE;
|
gbc_panel_1.gridx = 2;
|
gbc_panel_1.gridy = 5;
|
contentPanel.add(noDisRadio, gbc_panel_1);
|
}
|
|
{
|
label_2 = new JLabel("字段表达式");
|
label_2.setToolTipText("填入属性的控制条件(字符串形式)");
|
GridBagConstraints gbc_label_2 = new GridBagConstraints();
|
gbc_label_2.anchor = GridBagConstraints.EAST;
|
gbc_label_2.insets = new Insets(0, 0, 1, 5);
|
gbc_label_2.gridx = 0;
|
gbc_label_2.gridy = 6;
|
contentPanel.add(label_2, gbc_label_2);
|
}
|
{
|
JScrollPane scrollPane = new JScrollPane();
|
jdaddfilter = new JTextArea("", 3, 2);
|
scrollPane.setViewportView(jdaddfilter);
|
GridBagConstraints gbc_textField = new GridBagConstraints();
|
gbc_textField.insets = new Insets(0, 0, 1, 0);
|
gbc_textField.gridwidth = 3;
|
gbc_textField.fill = GridBagConstraints.BOTH;
|
gbc_textField.gridx = 1;
|
gbc_textField.gridy = 6;
|
contentPanel.add(scrollPane, gbc_textField);
|
}
|
{
|
label_8 = new JLabel("只读选择条件");
|
label_8.setToolTipText("属性是否是可编辑状态的控制");
|
GridBagConstraints gbc_label_8 = new GridBagConstraints();
|
gbc_label_8.anchor = GridBagConstraints.EAST;
|
gbc_label_8.insets = new Insets(0, 0, 1, 5);
|
gbc_label_8.gridx = 0;
|
gbc_label_8.gridy = 7;
|
contentPanel.add(label_8, gbc_label_8);
|
}
|
{
|
scrollPane_2 = new JScrollPane();
|
GridBagConstraints gbc_scrollPane_2 = new GridBagConstraints();
|
gbc_scrollPane_2.gridwidth = 3;
|
gbc_scrollPane_2.insets = new Insets(0, 0, 1, 0);
|
gbc_scrollPane_2.fill = GridBagConstraints.BOTH;
|
gbc_scrollPane_2.gridx = 1;
|
gbc_scrollPane_2.gridy = 7;
|
contentPanel.add(scrollPane_2, gbc_scrollPane_2);
|
{
|
JD_EditableProgramTxt = new JTextArea("", 3, 2);
|
JD_EditableProgramTxt.setColumns(10);
|
scrollPane_2.setViewportView(JD_EditableProgramTxt);
|
}
|
}
|
{
|
label_4 = new JLabel("控制列");
|
label_4.setToolTipText("通过该属性控制要显示的列");
|
GridBagConstraints gbc_label_4 = new GridBagConstraints();
|
gbc_label_4.anchor = GridBagConstraints.EAST;
|
gbc_label_4.insets = new Insets(0, 0, 1, 5);
|
gbc_label_4.gridx = 0;
|
gbc_label_4.gridy = 8;
|
contentPanel.add(label_4, gbc_label_4);
|
}
|
{
|
jdctrldisplycol = new JTextField();
|
GridBagConstraints gbc_textField_1 = new GridBagConstraints();
|
gbc_textField_1.insets = new Insets(0, 0, 1, 5);
|
gbc_textField_1.fill = GridBagConstraints.HORIZONTAL;
|
gbc_textField_1.gridx = 1;
|
gbc_textField_1.gridy = 8;
|
contentPanel.add(jdctrldisplycol, gbc_textField_1);
|
jdctrldisplycol.setColumns(10);
|
}
|
{
|
label_3 = new JLabel("显示列条件");
|
label_3.setToolTipText("属性控制显示列条件");
|
GridBagConstraints gbc_label_3 = new GridBagConstraints();
|
gbc_label_3.insets = new Insets(0, 0, 1, 5);
|
gbc_label_3.gridx = 2;
|
gbc_label_3.gridy = 8;
|
contentPanel.add(label_3, gbc_label_3);
|
}
|
{
|
jdctrldisplycond = new JTextField();
|
GridBagConstraints gbc_textField = new GridBagConstraints();
|
gbc_textField.insets = new Insets(0, 0, 1, 0);
|
gbc_textField.fill = GridBagConstraints.HORIZONTAL;
|
gbc_textField.gridx = 3;
|
gbc_textField.gridy = 8;
|
contentPanel.add(jdctrldisplycond, gbc_textField);
|
jdctrldisplycond.setColumns(10);
|
}
|
{
|
label_9 = new JLabel("权限控制");
|
label_9.setToolTipText(
|
"设置属性权限,输入规则是user=user&&(或者||)role=role&&(或||)depart=depart,多个的用户,或者角色,或者部门,之间用逗号分隔");
|
GridBagConstraints gbc_label_9 = new GridBagConstraints();
|
gbc_label_9.anchor = GridBagConstraints.EAST;
|
gbc_label_9.insets = new Insets(0, 0, 1, 5);
|
gbc_label_9.gridx = 0;
|
gbc_label_9.gridy = 9;
|
contentPanel.add(label_9, gbc_label_9);
|
}
|
{
|
jd_rightTxt = new JTextField();
|
GridBagConstraints gbc_jd_rightTxt = new GridBagConstraints();
|
gbc_jd_rightTxt.gridwidth = 2;
|
gbc_jd_rightTxt.insets = new Insets(0, 0, 1, 5);
|
gbc_jd_rightTxt.fill = GridBagConstraints.HORIZONTAL;
|
gbc_jd_rightTxt.gridx = 1;
|
gbc_jd_rightTxt.gridy = 9;
|
contentPanel.add(jd_rightTxt, gbc_jd_rightTxt);
|
jd_rightTxt.setColumns(10);
|
}
|
{
|
rightBtn = new JButton("选择");
|
rightBtn.addActionListener(new ActionListener() {
|
public void actionPerformed(ActionEvent paramActionEvent) {
|
RightUserDialog dialog = new RightUserDialog();
|
dialog.setVisible(true);
|
List<String> resultList = dialog.getResultList();
|
List<String> user = new ArrayList<String>();
|
List<String> role = new ArrayList<String>();
|
List<String> dept = new ArrayList<String>();
|
if (dialog.isSaveFlag()) {
|
for (String value : resultList) {
|
String substring = value.substring(value.lastIndexOf("=") + 1);
|
if (value.contains("user=")) {
|
if (!user.contains(substring)) {
|
user.add(substring);
|
}
|
}
|
if (value.contains("role=")) {
|
if (!role.contains(substring)) {
|
role.add(substring);
|
}
|
}
|
if (value.contains("department=")) {
|
if (!dept.contains(substring)) {
|
dept.add(substring);
|
}
|
}
|
}
|
Pattern p = Pattern.compile("\\b([\\w\\W])\\b");
|
String res = "user="
|
+ p.matcher(user.toString().substring(1, user.toString().length() - 1))
|
.replaceAll("$1")
|
+ "&&role="
|
+ p.matcher(role.toString().substring(1, role.toString().length() - 1))
|
.replaceAll("$1")
|
+ "&&department="
|
+ p.matcher(dept.toString().substring(1, dept.toString().length() - 1))
|
.replaceAll("$1");
|
jd_rightTxt.setText(res);
|
}
|
}
|
});
|
GridBagConstraints gbc_rightBtn = new GridBagConstraints();
|
gbc_rightBtn.anchor = GridBagConstraints.WEST;
|
gbc_rightBtn.gridx = 3;
|
gbc_rightBtn.gridy = 9;
|
contentPanel.add(rightBtn, gbc_rightBtn);
|
}
|
{
|
JLabel lblFill = new JLabel("");
|
GridBagConstraints gbc_label_9 = new GridBagConstraints();
|
gbc_label_9.insets = new Insets(0, 0, 0, 5);
|
gbc_label_9.gridx = 1;
|
gbc_label_9.gridy = 10;
|
gbc_label_9.gridwidth = 4;
|
gbc_label_9.weightx = 10.0;
|
gbc_label_9.weighty = 10.0;
|
gbc_label_9.fill = GridBagConstraints.BOTH;
|
contentPanel.add(lblFill, gbc_label_9);
|
}
|
|
{
|
jsouth = new JScrollPane();
|
sourthPanel = new JPanel();
|
jsouth.setViewportView(sourthPanel);
|
panel.add(jsouth, BorderLayout.CENTER);
|
GridBagLayout gbl_panel_1 = new GridBagLayout();
|
gbl_panel_1.columnWidths = new int[] { 76, 0, 0, 0, 0, 0 };
|
gbl_panel_1.rowHeights = new int[] { 57, 57, 0, 0, 0, 0 };
|
gbl_panel_1.columnWeights = new double[] { 0.0, 1.0, 1.0, 1.0, 1.0, Double.MIN_VALUE };
|
gbl_panel_1.rowWeights = new double[] { 0.0, 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE };
|
sourthPanel.setLayout(gbl_panel_1);
|
{
|
JLabel jdScript = new JLabel("脚本验证");
|
jdScript.setToolTipText("脚本验证");
|
GridBagConstraints gbc_lblNewLabel_5 = new GridBagConstraints();
|
gbc_lblNewLabel_5.fill = GridBagConstraints.VERTICAL;
|
gbc_lblNewLabel_5.insets = new Insets(0, 0, 5, 5);
|
gbc_lblNewLabel_5.gridx = 0;
|
gbc_lblNewLabel_5.gridy = 0;
|
sourthPanel.add(jdScript, gbc_lblNewLabel_5);
|
}
|
{
|
JScrollPane scrollPane = new JScrollPane();
|
GridBagConstraints gbc_scrollPane = new GridBagConstraints();
|
gbc_scrollPane.gridwidth = 4;
|
gbc_scrollPane.insets = new Insets(0, 0, 5, 0);
|
gbc_scrollPane.fill = GridBagConstraints.BOTH;
|
gbc_scrollPane.gridx = 1;
|
gbc_scrollPane.gridy = 0;
|
sourthPanel.add(scrollPane, gbc_scrollPane);
|
{
|
jdScriptTxt = new JTextArea("", 3, 2);
|
scrollPane.setViewportView(jdScriptTxt);
|
}
|
}
|
{
|
JLabel jdTips = new JLabel("提示文字");
|
jdTips.setToolTipText("属性提示");
|
GridBagConstraints gbc_lblF = new GridBagConstraints();
|
gbc_lblF.insets = new Insets(0, 0, 5, 5);
|
gbc_lblF.gridx = 0;
|
gbc_lblF.gridy = 1;
|
sourthPanel.add(jdTips, gbc_lblF);
|
}
|
{
|
JScrollPane scrollPane = new JScrollPane();
|
GridBagConstraints gbc_scrollPane = new GridBagConstraints();
|
gbc_scrollPane.insets = new Insets(0, 0, 5, 0);
|
gbc_scrollPane.gridwidth = 4;
|
gbc_scrollPane.fill = GridBagConstraints.BOTH;
|
gbc_scrollPane.gridx = 1;
|
gbc_scrollPane.gridy = 1;
|
sourthPanel.add(scrollPane, gbc_scrollPane);
|
{
|
jdTipsTxt = new JTextArea("", 3, 2);
|
scrollPane.setViewportView(jdTipsTxt);
|
}
|
}
|
{
|
lblCombobox = new JLabel("查询关联列");
|
lblCombobox.setToolTipText("填写sql语句,语句中查询出来的字段值,就是该属性显示的值");
|
GridBagConstraints gbc_lblCombobox = new GridBagConstraints();
|
gbc_lblCombobox.insets = new Insets(0, 0, 5, 5);
|
gbc_lblCombobox.gridx = 0;
|
gbc_lblCombobox.gridy = 2;
|
sourthPanel.add(lblCombobox, gbc_lblCombobox);
|
}
|
{
|
jdqueryrefields = new JTextField();
|
GridBagConstraints gbc_textField_1 = new GridBagConstraints();
|
gbc_textField_1.gridwidth = 4;
|
gbc_textField_1.insets = new Insets(0, 0, 5, 0);
|
gbc_textField_1.fill = GridBagConstraints.HORIZONTAL;
|
gbc_textField_1.gridx = 1;
|
gbc_textField_1.gridy = 2;
|
sourthPanel.add(jdqueryrefields, gbc_textField_1);
|
jdqueryrefields.setColumns(10);
|
}
|
{
|
label_5 = new JLabel("自定义类");
|
label_5.setToolTipText("填写自定义的类名,用来自定义该属性");
|
GridBagConstraints gbc_label_5 = new GridBagConstraints();
|
gbc_label_5.insets = new Insets(0, 0, 5, 5);
|
gbc_label_5.gridx = 0;
|
gbc_label_5.gridy = 3;
|
sourthPanel.add(label_5, gbc_label_5);
|
}
|
{
|
jdcustomclass = new JTextField();
|
GridBagConstraints gbc_textField = new GridBagConstraints();
|
gbc_textField.insets = new Insets(0, 0, 5, 0);
|
gbc_textField.gridwidth = 4;
|
gbc_textField.fill = GridBagConstraints.HORIZONTAL;
|
gbc_textField.gridx = 1;
|
gbc_textField.gridy = 3;
|
sourthPanel.add(jdcustomclass, gbc_textField);
|
jdcustomclass.setColumns(10);
|
}
|
{
|
jdishttpsave = new JCheckBox("http存储");
|
jdishttpsave.setToolTipText("控制http存储功能的开关");
|
GridBagConstraints gbc_chckbxHttp = new GridBagConstraints();
|
gbc_chckbxHttp.insets = new Insets(0, 0, 0, 5);
|
gbc_chckbxHttp.gridx = 0;
|
gbc_chckbxHttp.gridy = 4;
|
sourthPanel.add(jdishttpsave, gbc_chckbxHttp);
|
}
|
{
|
label_6 = new JLabel("存储路径");
|
label_6.setToolTipText("url的路径");
|
GridBagConstraints gbc_label_6 = new GridBagConstraints();
|
gbc_label_6.insets = new Insets(0, 0, 0, 5);
|
gbc_label_6.gridx = 1;
|
gbc_label_6.gridy = 4;
|
sourthPanel.add(label_6, gbc_label_6);
|
}
|
{
|
jdhttpvolumnpath = new JTextField();
|
GridBagConstraints gbc_textField = new GridBagConstraints();
|
gbc_textField.insets = new Insets(0, 0, 0, 5);
|
gbc_textField.fill = GridBagConstraints.HORIZONTAL;
|
gbc_textField.gridx = 2;
|
gbc_textField.gridy = 4;
|
sourthPanel.add(jdhttpvolumnpath, gbc_textField);
|
jdhttpvolumnpath.setColumns(10);
|
}
|
{
|
label_7 = new JLabel("存储路径字段");
|
label_7.setToolTipText("存储路径的字段");
|
GridBagConstraints gbc_label_7 = new GridBagConstraints();
|
gbc_label_7.insets = new Insets(0, 0, 0, 5);
|
gbc_label_7.gridx = 3;
|
gbc_label_7.gridy = 4;
|
sourthPanel.add(label_7, gbc_label_7);
|
}
|
{
|
jdhttppathfield = new JTextField();
|
GridBagConstraints gbc_textField = new GridBagConstraints();
|
gbc_textField.fill = GridBagConstraints.HORIZONTAL;
|
gbc_textField.gridx = 4;
|
gbc_textField.gridy = 4;
|
sourthPanel.add(jdhttppathfield, gbc_textField);
|
jdhttppathfield.setColumns(10);
|
}
|
}
|
{
|
dynamicMainPal = new JPanel();
|
dynamicMainPal.setPreferredSize(new Dimension(10, 300));
|
panel.add(dynamicMainPal, BorderLayout.SOUTH);
|
dynamicMainPal.setLayout(new BorderLayout(0, 0));
|
{
|
jdy = new JScrollPane();
|
dynamicPanel = new JPanel();
|
jdy.setViewportView(dynamicPanel);
|
dynamicMainPal.add(jdy, BorderLayout.CENTER);
|
GridBagLayout gbl_dynamicPanel = new GridBagLayout();
|
gbl_dynamicPanel.columnWidths = new int[] { 64, 0, 68, 37, 76, 0, 0, 0, 0, 0, 0, 0 };
|
gbl_dynamicPanel.rowHeights = new int[] { 0, 0, 34, 34, 0, 0, 0, 0, 0 };
|
gbl_dynamicPanel.columnWeights = new double[] { 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0,
|
0.0, Double.MIN_VALUE };
|
gbl_dynamicPanel.rowWeights = new double[] { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
Double.MIN_VALUE };
|
dynamicPanel.setLayout(gbl_dynamicPanel);
|
{
|
JLabel label = new JLabel("选项列表");
|
GridBagConstraints gbc_label = new GridBagConstraints();
|
gbc_label.insets = new Insets(0, 0, 5, 5);
|
gbc_label.gridx = 0;
|
gbc_label.gridy = 0;
|
dynamicPanel.add(label, gbc_label);
|
}
|
{
|
JLabel label = new JLabel("名称");
|
label.setToolTipText("选择下拉列表的时候,填写的显示字段");
|
GridBagConstraints gbc_label = new GridBagConstraints();
|
gbc_label.insets = new Insets(0, 0, 5, 5);
|
gbc_label.gridx = 0;
|
gbc_label.gridy = 1;
|
dynamicPanel.add(label, gbc_label);
|
}
|
{
|
jdValueListName = new JTextField();
|
GridBagConstraints gbc_textField = new GridBagConstraints();
|
gbc_textField.gridwidth = 2;
|
gbc_textField.insets = new Insets(0, 0, 5, 5);
|
gbc_textField.fill = GridBagConstraints.HORIZONTAL;
|
gbc_textField.gridx = 1;
|
gbc_textField.gridy = 1;
|
dynamicPanel.add(jdValueListName, gbc_textField);
|
jdValueListName.setColumns(10);
|
}
|
{
|
JLabel label = new JLabel("值");
|
label.setToolTipText("选择下拉列表的时候,填写的显示的值");
|
GridBagConstraints gbc_label = new GridBagConstraints();
|
gbc_label.insets = new Insets(0, 0, 5, 5);
|
gbc_label.gridx = 3;
|
gbc_label.gridy = 1;
|
dynamicPanel.add(label, gbc_label);
|
}
|
{
|
jdValueListVal = new JTextField();
|
GridBagConstraints gbc_textField_1 = new GridBagConstraints();
|
gbc_textField_1.insets = new Insets(0, 0, 5, 5);
|
gbc_textField_1.fill = GridBagConstraints.HORIZONTAL;
|
gbc_textField_1.gridx = 4;
|
gbc_textField_1.gridy = 1;
|
dynamicPanel.add(jdValueListVal, gbc_textField_1);
|
jdValueListVal.setColumns(10);
|
}
|
JScrollPane scrollPane = new JScrollPane();
|
scrollPane.setPreferredSize(new Dimension(2, 14));
|
GridBagConstraints gbc_scrollPane = new GridBagConstraints();
|
gbc_scrollPane.gridheight = 2;
|
gbc_scrollPane.gridwidth = 5;
|
gbc_scrollPane.insets = new Insets(0, 0, 5, 5);
|
gbc_scrollPane.fill = GridBagConstraints.BOTH;
|
gbc_scrollPane.gridx = 0;
|
gbc_scrollPane.gridy = 2;
|
dynamicPanel.add(scrollPane, gbc_scrollPane);
|
jdValuelistModel = new DefaultListModel();
|
jdValuelist = new JList(jdValuelistModel);
|
scrollPane.setViewportView(jdValuelist);
|
{
|
addJdvalueListBtn = new JButton("添加");
|
GridBagConstraints gbc_button = new GridBagConstraints();
|
gbc_button.insets = new Insets(0, 0, 5, 5);
|
gbc_button.gridx = 1;
|
gbc_button.gridy = 4;
|
dynamicPanel.add(addJdvalueListBtn, gbc_button);
|
}
|
{
|
delbutton = new JButton("删除");
|
GridBagConstraints gbc_button = new GridBagConstraints();
|
gbc_button.insets = new Insets(0, 0, 5, 5);
|
gbc_button.gridx = 2;
|
gbc_button.gridy = 4;
|
dynamicPanel.add(delbutton, gbc_button);
|
}
|
{
|
JLabel label = new JLabel("一级参照");
|
label.setToolTipText("填写参照的业务对象名称");
|
GridBagConstraints gbc_label = new GridBagConstraints();
|
gbc_label.insets = new Insets(0, 0, 5, 5);
|
gbc_label.gridx = 0;
|
gbc_label.gridy = 5;
|
dynamicPanel.add(label, gbc_label);
|
}
|
{
|
// jdListTable = new JComboBox();
|
jdListTableTxt = new JTextField();
|
GridBagConstraints gbc_comboBox = new GridBagConstraints();
|
gbc_comboBox.gridwidth = 4;
|
gbc_comboBox.insets = new Insets(0, 0, 5, 5);
|
gbc_comboBox.fill = GridBagConstraints.HORIZONTAL;
|
gbc_comboBox.gridx = 1;
|
gbc_comboBox.gridy = 5;
|
// dynamicPanel.add(jdListTable, gbc_comboBox);
|
dynamicPanel.add(jdListTableTxt, gbc_comboBox);
|
}
|
{
|
JLabel label = new JLabel("二级参照");
|
label.setToolTipText("填写参照的业务对象名称");
|
GridBagConstraints gbc_label = new GridBagConstraints();
|
gbc_label.insets = new Insets(0, 0, 5, 5);
|
gbc_label.gridx = 0;
|
gbc_label.gridy = 6;
|
dynamicPanel.add(label, gbc_label);
|
}
|
{
|
// jdListTxt = new JComboBox();
|
jdListTxtTxt = new JTextField();
|
GridBagConstraints gbc_comboBox = new GridBagConstraints();
|
gbc_comboBox.gridwidth = 4;
|
gbc_comboBox.insets = new Insets(0, 0, 5, 5);
|
gbc_comboBox.fill = GridBagConstraints.HORIZONTAL;
|
gbc_comboBox.gridx = 1;
|
gbc_comboBox.gridy = 6;
|
// dynamicPanel.add(jdListTxt, gbc_comboBox);
|
dynamicPanel.add(jdListTxtTxt, gbc_comboBox);
|
}
|
{
|
JLabel label = new JLabel("参照值");
|
label.setToolTipText("填写参照的业务对象的属性");
|
GridBagConstraints gbc_label = new GridBagConstraints();
|
gbc_label.insets = new Insets(0, 0, 0, 5);
|
gbc_label.gridx = 0;
|
gbc_label.gridy = 7;
|
dynamicPanel.add(label, gbc_label);
|
}
|
{
|
// jdListVal = new JComboBox();
|
jdListValTxt = new JTextField();
|
GridBagConstraints gbc_comboBox = new GridBagConstraints();
|
gbc_comboBox.insets = new Insets(0, 0, 0, 5);
|
gbc_comboBox.gridwidth = 4;
|
gbc_comboBox.fill = GridBagConstraints.HORIZONTAL;
|
gbc_comboBox.gridx = 1;
|
gbc_comboBox.gridy = 7;
|
// dynamicPanel.add(jdListVal, gbc_comboBox);
|
dynamicPanel.add(jdListValTxt, gbc_comboBox);
|
}
|
}
|
{
|
dynamicSourthPal = new JPanel();
|
dynamicSourthPal.setPreferredSize(new Dimension(10, 90));
|
dynamicMainPal.add(dynamicSourthPal, BorderLayout.SOUTH);
|
dynamicSourthPal.setLayout(new FlowLayout(FlowLayout.LEFT, 5, 5));
|
{
|
label_1 = new JLabel("附加属性");
|
label_1.setToolTipText("附加属性");
|
// label_1.setPreferredSize(new Dimension(70, 15));
|
label_1.setAlignmentX(Component.CENTER_ALIGNMENT);
|
dynamicSourthPal.add(label_1);
|
}
|
{
|
scrollPane_1 = new JScrollPane();
|
scrollPane_1.setPreferredSize(new Dimension(330, 60));
|
dynamicSourthPal.add(scrollPane_1);
|
{
|
jdStyleTxt = new JTextArea("", 3, 2);
|
|
scrollPane_1.setViewportView(jdStyleTxt);
|
}
|
}
|
}
|
}
|
}
|
}
|
|
private void actionListener() {
|
jdishttpsave.addActionListener(new ActionListener() {
|
|
@Override
|
public void actionPerformed(ActionEvent arg0) {
|
initDisControl();
|
}
|
});
|
addJdvalueListBtn.addActionListener(new ActionListener() {
|
|
@Override
|
public void actionPerformed(ActionEvent arg0) {
|
String result = jdValueListName.getText().trim() + "{" + jdValueListVal.getText().trim() + "}";
|
jdValuelistModel.addElement(result);
|
// @2015-06-16 by liupf
|
String fieldStr = jdFieldTxt.getText().trim();// 字段域
|
// String mcValue=jdValueListName.getText().trim();
|
String zhiValue = jdValueListVal.getText().trim();
|
String selectedItem = jdTypeComBox.getSelectedItem() + "";// 类型域
|
if (selectedItem.equals("单选按钮") || selectedItem.equals("下拉菜单")) {
|
AttribItem attribItem = ApProvider.getInstance().getAbItemByName(fieldStr);
|
String attrOther = attribItem.other;
|
// 判断字段是否为枚举类型
|
if (attrOther.indexOf("enumName") > 0) {
|
String enumName = attrOther.substring(attrOther.indexOf("enumName") + 11);
|
EnumItem enumItem = EnumProvider.getInstance().getEnumByName(enumName);
|
EnumChild[] eChilds = enumItem.children;
|
List<String> enumList = new ArrayList<String>();
|
for (EnumChild enumChild : eChilds) {
|
String enumChildValue = enumChild.value;
|
enumList.add(enumChildValue);
|
}
|
// 判断输入的值是否属于属性池中枚举值
|
if (!enumList.contains(zhiValue)) {
|
jdValuelistModel.removeElement(result);
|
JOptionPane.showMessageDialog(null, "该字段为枚举类型,所填枚举值" + zhiValue + "不正确,请重新添写!", "提示",
|
JOptionPane.ERROR_MESSAGE);
|
return;
|
}
|
}
|
}
|
}
|
});
|
delbutton.addActionListener(new ActionListener() {
|
public void actionPerformed(ActionEvent arg0) {
|
String selectedValue = (String) jdValuelist.getSelectedValue();
|
jdValuelistModel.removeElement(selectedValue);
|
}
|
});
|
|
jdTypeComBox.addItemListener(new ItemListener() {
|
|
@Override
|
public void itemStateChanged(ItemEvent arg0) {
|
jdValuelistModel.removeAllElements();
|
jdValueListName.setText("");
|
jdValueListVal.setText("");
|
jdStyleTxt.setText("");
|
jdListTableTxt.setText("");
|
jdListTxtTxt.setText("");
|
jdListValTxt.setText("");
|
|
String value = getTypeCobValue();
|
dynamicMainPal.remove(jdy);
|
dynamicMainPal.remove(dynamicSourthPal);
|
panel.remove(jsouth);
|
if (value.equals("radio") || value.equals("checkbox")) {
|
panel.add(dynamicMainPal, BorderLayout.SOUTH);
|
dynamicMainPal.add(jdy, BorderLayout.CENTER);
|
panel.add(jsouth, BorderLayout.CENTER);
|
} else if (value.equals("select")) {
|
panel.add(dynamicMainPal, BorderLayout.SOUTH);
|
dynamicMainPal.add(jdy, BorderLayout.CENTER);
|
dynamicMainPal.add(dynamicSourthPal, BorderLayout.SOUTH);
|
panel.add(jsouth, BorderLayout.CENTER);
|
} else if (value.equals("webeditor") || value.equals("hidden")) {
|
panel.remove(dynamicMainPal);
|
panel.add(jsouth, BorderLayout.CENTER);
|
} else {
|
panel.add(dynamicMainPal, BorderLayout.SOUTH);
|
dynamicMainPal.add(dynamicSourthPal, BorderLayout.CENTER);
|
panel.add(jsouth, BorderLayout.CENTER);
|
}
|
panel.updateUI();
|
|
if (prmItem == null)
|
return;
|
|
ControlType ctrlType = ControlType.Parse(value);
|
if (ctrlType == null)
|
return;
|
|
String sField = prmItem.getItemField();
|
|
for (int g = 0; g < groupList.size(); g++) {
|
CompnentGroup group = groupList.get(g);
|
if (sField.equals(group.getField())) {
|
|
Component compnent = null;
|
|
CompnentUtil.CreateCompent(group, ctrlType);
|
|
//configMap.put(group.getjLabel(), group.getjCompnent());
|
|
// // 下拉框类型
|
// if (vtDataType.equals("VTInteger") || vtDataType.equals("VTString")
|
// || vtDataType.equals("VTDouble")) {
|
// JTextField textField = new JTextField();
|
// textField.setEditable(false);
|
// textField.setPreferredSize(new Dimension(90, 25));
|
// configMap.put(enter1.getKey(), textField);
|
// group.setjCompnent(textField);
|
// }
|
// // textarea类型
|
// else if (vtDataType.equals("VTNote")) {
|
// JTextArea textArea = new JTextArea("", 3, 2);
|
// JScrollPane jsp = new JScrollPane();
|
// jsp.setViewportView(textArea);
|
// configMap.put(enter1.getKey(), textArea);
|
// group.setjCompnent(textArea);
|
// }
|
// // 日起类型
|
// else if (vtDataType.equals("VTDate") || vtDataType.equals("VTTime")
|
// || vtDataType.equals("VTDateTime")) {
|
// VCIJCalendarPanel calendarPanel = new VCIJCalendarPanel();
|
// configMap.put(enter1.getKey(), calendarPanel);
|
// group.setjCompnent(calendarPanel);
|
// }
|
// // 参照类型
|
// else if (vtDataType.equals("canzhao")) {
|
// CanzhaoJPanel cz = new CanzhaoJPanel();
|
// configMap.put(enter1.getKey(), cz);
|
// group.setjCompnent(cz);
|
// }
|
// // boolean类型
|
// else if (vtDataType.equals("VTBoolean")) {
|
// VCIJComboBox comboBox = new VCIJComboBox();
|
// configMap.put(enter1.getKey(), comboBox);
|
// group.setjCompnent(comboBox);
|
// }
|
// // 文件选择组件
|
// else if (vtDataType.equals("VTFilePath")) {
|
// FileChooserJPanel fileChooserJPanel = new FileChooserJPanel();
|
// configMap.put(enter1.getKey(), fileChooserJPanel);
|
// group.setjCompnent(fileChooserJPanel);
|
// }
|
groupList.set(g, group);
|
break;
|
}
|
}
|
|
// for (Map.Entry<String, Map<Component, Component>> enter : attrNameAndCompMap.entrySet()) {
|
// Map<Component, Component> componetMap = enter.getValue();
|
// for (Map.Entry<Component, Component> enter1 : componetMap.entrySet()) {
|
// JLabel label = (JLabel) enter1.getKey();
|
// if (label != null && label.getText().equals(jdFieldTxt.getText())) {
|
// Map<String, List<String>> typeMap = TypeConstant.getTypeMap();
|
// String vtDataType = "";
|
// for (Map.Entry<String, List<String>> entry : typeMap.entrySet()) {
|
// List<String> typeValue = entry.getValue();
|
// for (int i = 0; i < typeValue.size(); i++) {
|
// if (value.equals(typeValue.get(i))) {
|
// vtDataType = entry.getKey();
|
// }
|
// }
|
// }
|
// for (int g = 0; g < groupList.size(); g++) {
|
// CompnentGroup group = groupList.get(g);
|
// if (label.equals(group.getjLabel())) {
|
// // 下拉框类型
|
// if (vtDataType.equals("VTInteger") || vtDataType.equals("VTString")
|
// || vtDataType.equals("VTDouble")) {
|
// JTextField textField = new JTextField();
|
// textField.setEditable(false);
|
// textField.setPreferredSize(new Dimension(90, 25));
|
// configMap.put(enter1.getKey(), textField);
|
// group.setjCompnent(textField);
|
// }
|
// // textarea类型
|
// else if (vtDataType.equals("VTNote")) {
|
// JTextArea textArea = new JTextArea("", 3, 2);
|
// JScrollPane jsp = new JScrollPane();
|
// jsp.setViewportView(textArea);
|
// configMap.put(enter1.getKey(), textArea);
|
// group.setjCompnent(textArea);
|
// }
|
// // 日起类型
|
// else if (vtDataType.equals("VTDate") || vtDataType.equals("VTTime")
|
// || vtDataType.equals("VTDateTime")) {
|
// VCIJCalendarPanel calendarPanel = new VCIJCalendarPanel();
|
// configMap.put(enter1.getKey(), calendarPanel);
|
// group.setjCompnent(calendarPanel);
|
// }
|
// // 参照类型
|
// else if (vtDataType.equals("canzhao")) {
|
// CanzhaoJPanel cz = new CanzhaoJPanel();
|
// configMap.put(enter1.getKey(), cz);
|
// group.setjCompnent(cz);
|
// }
|
// // boolean类型
|
// else if (vtDataType.equals("VTBoolean")) {
|
// VCIJComboBox comboBox = new VCIJComboBox();
|
// configMap.put(enter1.getKey(), comboBox);
|
// group.setjCompnent(comboBox);
|
// }
|
// // 文件选择组件
|
// else if (vtDataType.equals("VTFilePath")) {
|
// FileChooserJPanel fileChooserJPanel = new FileChooserJPanel();
|
// configMap.put(enter1.getKey(), fileChooserJPanel);
|
// group.setjCompnent(fileChooserJPanel);
|
// }
|
// groupList.set(g, group);
|
// }
|
// }
|
//
|
// }
|
// }
|
// }
|
formDesignDialog.layoutComponent();
|
}
|
|
});
|
okButton.addActionListener(new ActionListener() {
|
|
@Override
|
public void actionPerformed(ActionEvent arg0) {
|
String rtnContent = isDefaultExpress(jdVlueTxt.getText());
|
if (!rtnContent.equals("")) {
|
VCIOptionPane.showError(WidgetPanel.this, "默认值表达式检验:" + rtnContent);
|
return;
|
}
|
|
{
|
String useField = jdFieldTxt.getText().trim();
|
/**
|
* 检测是否为参照属性
|
*
|
* @author Zylon at 2015-7-6 上午9:12:41
|
*/
|
if (isRefAttr(useField)) {
|
/**
|
* 判断用户是否想要定义参照属性
|
*
|
* @author Zylon at 2015-7-6 上午10:06:33
|
*/
|
if (isWantDefinateRefAttr() && !jdiseditable.isSelected()) {
|
/**
|
* 判断参照属性是否有效定义
|
*
|
* @author Zylon at 2015-7-6 上午10:06:33
|
*/
|
if (!refIsOk()) {
|
return;
|
}
|
}
|
}
|
|
}
|
|
if (prmItem == null) {
|
prmItem = new PRMItem();
|
}
|
// prm = Tool.getPRM(pvi.prm);
|
String nameText = jdNameTxt.getText();
|
if (nameText.isEmpty()) {
|
VCIOptionPane.showMessage(LogonApplication.frame, "显示名称不能为空!");
|
return;
|
}
|
prmItem.setItemField(jdFieldTxt.getText().trim());
|
prmItem.setItemName(nameText.trim());
|
prmItem.setItemType(getTypeCobValue());
|
prmItem.setItemValue(jdVlueTxt.getText().trim());
|
prmItem.setItemShowExpression(txtShowExpression.getText().trim());
|
prmItem.setItemDateFormat(txtDateFormat.getText().trim());
|
if (fullDisRadio.isSelected()) {
|
prmItem.setItemCols("1");
|
} else if (noDisRadio.isSelected()) {
|
prmItem.setItemCols("0");
|
}
|
|
List<String> list = getValueList();
|
prmItem.setItemValueList(list);
|
|
prmItem.setItemStyle(jdStyleTxt.getText().trim());
|
prmItem.setItemScript(jdScriptTxt.getText().trim());
|
prmItem.setItemTips(jdTipsTxt.getText().trim());
|
prmItem.setItemEditableProgram(JD_EditableProgramTxt.getText().trim());
|
|
if (jdiseditable.isSelected()) {
|
prmItem.setItemIsEditable("1");
|
} else {
|
prmItem.setItemIsEditable("0");
|
}
|
if (jdisrequired.isSelected()) {
|
prmItem.setItemIsRequired("1");
|
} else {
|
prmItem.setItemIsRequired("0");
|
}
|
prmItem.setItemCtrlDisplyCol(jdctrldisplycol.getText().trim());
|
prmItem.setItemCtrlDisplyCondition(jdctrldisplycond.getText().trim());
|
prmItem.setItemQueryRefFields(jdqueryrefields.getText().trim());
|
prmItem.setItemCustomClass(jdcustomclass.getText().trim());
|
prmItem.setItemListTable(jdListTableTxt.getText().trim());
|
prmItem.setItemListTxt(jdListTxtTxt.getText().trim());
|
prmItem.setItemListVal(jdListValTxt.getText().trim());
|
|
if (jdishttpsave.isSelected()) {
|
prmItem.setItemIsHttpSave("1");
|
prmItem.setItemHttpVolumnPath(jdhttpvolumnpath.getText().trim());
|
prmItem.setItemHttpPathField(jdhttppathfield.getText().trim());
|
} else {
|
prmItem.setItemIsHttpSave("0");
|
prmItem.setItemHttpVolumnPath("");
|
prmItem.setItemHttpPathField("");
|
}
|
|
prmItem.setItemAddFilter(jdaddfilter.getText());
|
prmItem.setItemRight(jd_rightTxt.getText());
|
//comPRMItemMap.put(jdFieldTxt.getText(), prmItem); // 保存实质
|
VCIOptionPane.showMessage(LogonApplication.frame, "保存成功!");
|
// List<PRMItem> prmItemList = new ArrayList<PRMItem>();
|
// if(prm!=null){
|
// prmItemList = prm.getPrmItemList();
|
// }else{
|
// prm = new PRM();
|
// }
|
// List<PRMItem> res = new ArrayList<PRMItem>();
|
// if(itemListIndex!=-1){
|
// // prmItemList.remove(itemListIndex);
|
// for(int i=0;i<prmItemList.size();i++){
|
// if(i!=itemListIndex){
|
// res.add(i, prmItemList.get(i));
|
// }else{
|
// res.add(i,prmItem);
|
// }
|
// }
|
// prmItemList = res;
|
// }else{
|
// prmItemList.add(prmItem);
|
// }
|
// prm.setPrmItemList(prmItemList);
|
|
// try {
|
// prmText = Tool.getPRMText(prm);
|
// } catch (Throwable e) {
|
// e.printStackTrace();
|
// }
|
}
|
|
/**
|
*
|
* @return boolean
|
* @Description : // 一级参照/二级参照/参照值 有一个不为空 即表示用户想要定义参照属性
|
* @author Zylon 2015-7-6 上午9:36:21
|
*
|
*/
|
private boolean isWantDefinateRefAttr() {
|
// 一级参照
|
String firstRef = jdListTableTxt.getText().trim() == null ? "" : jdListTableTxt.getText().trim();
|
// 二级参照
|
String secondtRef = jdListTxtTxt.getText().trim() == null ? "" : jdListTxtTxt.getText().trim();
|
// 参照值
|
String refValue = jdListValTxt.getText().trim() == null ? "" : jdListValTxt.getText().trim();
|
if (firstRef.matches("\\S+") || secondtRef.matches("\\S+") || refValue.matches("\\S+")) {
|
return true;
|
}
|
return false;
|
}
|
|
/**
|
*
|
*
|
* @ClassName:AttachAttrTipMessage
|
* @Description :格式化提示信息
|
*
|
* @author Zylon 2015-7-6 上午9:35:44
|
*
|
*/
|
class AttachAttrTipMessage {
|
// 引入常量plm.uif.engine.client.controls.RefAttachAttrContants
|
// 文件属于两个工程\现在手工保持数据一致
|
/**
|
* context
|
*/
|
public String CONTANT_1 = "context";
|
/**
|
* dataregion
|
*/
|
public String CONTANT_2 = "dataregion";
|
/**
|
* datafield
|
*/
|
public String CONTANT_3 = "datafield";
|
/**
|
* context
|
*/
|
public String[] CONTANTS = new String[] { CONTANT_1, CONTANT_2, CONTANT_3 };
|
private String header = "\t\t 附加属性保存失败 ";
|
private String title = "附加属性:";
|
private String content = "";
|
private String notes = "";
|
private int rowLength = 0;
|
|
public String getContent() {
|
return content;
|
}
|
|
public String getNotes() {
|
return notes;
|
}
|
|
public String setNotes(String notes) {
|
this.notes = format("注:" + notes);
|
return this.toString();
|
}
|
|
private String format(String string) {
|
return string.replaceFirst("(?<=.{" + this.rowLength + "})", "\r\n");
|
}
|
|
public String setContent(String content) {
|
|
this.content = format("提示内容:" + content);
|
return this.toString();
|
}
|
|
public AttachAttrTipMessage(String attachAttr) {
|
rowLength = header.length();
|
title = format(this.title + "{" + attachAttr + "}");
|
System.out.println(title);
|
}
|
|
@Override
|
public String toString() {
|
return header + "\r\n" + this.title + "\r\n" + this.getContent() + "\r\n" + this.getNotes();
|
}
|
|
};
|
|
/**
|
*
|
* @return boolean
|
* @Description :判断参照属性是否正确定义
|
* @author Zylon 2015-7-6 上午9:35:03
|
*
|
*/
|
private boolean refIsOk() {
|
|
// 使用字段
|
String useField = jdFieldTxt.getText().trim();
|
// 业务类型名
|
String useFieldBtmName = getBtmName(useField);
|
// 一级参照
|
String firstRef = jdListTableTxt.getText().trim();
|
// 参照值
|
String refValue = jdListValTxt.getText().trim();
|
// 附加属性
|
String attachAttr = jdStyleTxt.getText().trim();
|
// 附加属性定义的上下文
|
String context = "";
|
HashSet<String> contextRegion = new HashSet<String>();
|
|
if (firstRef == null || firstRef.equals("")) {
|
VCIOptionPane.showError(WidgetPanel.this, "定义参照属性时\"一级参照\"为必填项!");
|
return false;
|
}
|
if ("layuirefer".equalsIgnoreCase(firstRef)) {
|
// weidy@2021-1-12
|
// 这个是自定义的js参照,所有不校验
|
return true;
|
}
|
if (refValue == null || refValue.equals("")) {
|
VCIOptionPane.showError(WidgetPanel.this, "定义参照属性时\"参照值\"为必填项!");
|
return false;
|
}
|
if (attachAttr == null || attachAttr.equals("")) {
|
VCIOptionPane.showError(WidgetPanel.this, "附加属性为空,请指定\"上下文\"");
|
return false;
|
}
|
|
AttachAttrTipMessage tipObj = new AttachAttrTipMessage(attachAttr);
|
//
|
// if (refValue == null || refValue.equals("")) {
|
// VCIOptionPane.showError(WidgetPanel.this,"参照值为空,请指定\"表单中回显的属性\"");
|
// return false;
|
// }
|
refParamsMap.clear();
|
Byte[] flags = new Byte[tipObj.CONTANTS.length];
|
Arrays.fill(flags, new Byte("0"));
|
String[] attrs = tipObj.CONTANTS;
|
String[] paramItem = attachAttr.split(";");
|
if (paramItem.length == 1 && !paramItem[0].contains("=")) {
|
// 兼容原context模式
|
|
context = attachAttr;
|
// 找上下文属性
|
if (context == null || context.equals("")) {
|
VCIOptionPane.showError(WidgetPanel.this, tipObj.setContent("未指定上下文,请指定\"上下文\""));
|
return false;
|
}
|
// 找上下文对应页面信息
|
|
try {
|
contextRegion = getPLUILayoutRegion(firstRef, context);
|
} catch (Exception e) {
|
VCIOptionPane.showError(WidgetPanel.this,
|
tipObj.setContent("根据" + firstRef + "->" + context + "无法确定参照页面!"));
|
return false;
|
}
|
|
{// datafield未定义时做如下操作
|
// add by caill start 2016.3.25 判断是否是freemarker表达式(修改数据时)
|
boolean is = FreeMarkerCommon.isFreemarkExpression(refValue);
|
String[] str = new String[0];
|
if (is) {
|
List<String> keys = FreeMarkerCommon.getFreemarkExpressionKey(refValue);
|
str = new String[keys.size()];
|
for (int n = 0; n < keys.size(); n++) {
|
str[n] = keys.get(n);
|
}
|
} else {
|
str = new String[1];
|
str[0] = refValue;
|
}
|
for (int i = 0; i < str.length; i++) {
|
refValue = str[i].trim();
|
if (!isProperty(useFieldBtmName, refValue)) {
|
VCIOptionPane.showError(WidgetPanel.this,
|
tipObj.setContent("参照值\"" + refValue + "\"不是\"" + useField + "\"对应的业务类型的属性!"));
|
return false;
|
}
|
}
|
// add by caill end
|
}
|
} else {
|
for (int i = 0; i < paramItem.length; i++) {
|
String[] params = paramItem[i].split("=", 2);
|
|
if (params.length < 2 || params[0] == null || params[0].equals("") || params[1].equals("")) {
|
VCIOptionPane.showError(WidgetPanel.this, tipObj.setContent("参数格式填写错误,请重新填写!!"));
|
return false;
|
}
|
// 去除空格
|
params[0] = params[0].trim();
|
params[1] = params[1].trim();
|
|
if (!params[0].equalsIgnoreCase(tipObj.CONTANT_1)
|
&& !params[0].equalsIgnoreCase(tipObj.CONTANT_2)
|
&& !params[0].equalsIgnoreCase(tipObj.CONTANT_3)) {
|
tipObj.setContent("参数填写错误,包含无法解析的属性!!");
|
VCIOptionPane.showError(WidgetPanel.this, tipObj.setNotes(
|
"可解析属性为:" + tipObj.CONTANT_1 + "," + tipObj.CONTANT_2 + "," + tipObj.CONTANT_3));
|
return false;
|
}
|
|
for (int j = 0; j < attrs.length; j++) {
|
if (params[0].equalsIgnoreCase(attrs[j])) {
|
if (flags[j] == 1) {
|
VCIOptionPane.showError(WidgetPanel.this,
|
tipObj.setContent("参数格式填写错误,\"" + tipObj.CONTANT_1 + "\"属性重复!!"));
|
return false;
|
}
|
flags[j] = 1;
|
refParamsMap.put(attrs[j], params[1]);
|
}
|
}
|
|
}
|
|
// context
|
context = refParamsMap.get(attrs[0]);
|
if (refParamsMap.get(attrs[0]) == null || refParamsMap.get(attrs[0]).equals("")) {
|
VCIOptionPane.showError(WidgetPanel.this, tipObj.setContent("未指定上下文,请指定\"上下文\""));
|
return false;
|
}
|
try {
|
contextRegion = getPLUILayoutRegion(firstRef, context);
|
} catch (Exception e) {
|
VCIOptionPane.showError(WidgetPanel.this,
|
tipObj.setContent("根据" + firstRef + "->" + context + "无法确定参照页面!"));
|
return false;
|
}
|
|
// dataregion
|
if (!(refParamsMap.get(attrs[1]) == null || refParamsMap.get(attrs[1]).equals(""))) {
|
String dataRegion = refParamsMap.get(attrs[1]);
|
if (!(dataRegion.equals("1") || dataRegion.equals("2") || dataRegion.equals("3"))) {
|
VCIOptionPane.showError(WidgetPanel.this,
|
tipObj.setContent(tipObj.CONTANT_2 + "参数值只能为1/2/3中的一个值"));
|
return false;
|
}
|
|
if (!contextRegion.contains(refParamsMap.get(attrs[1]))) {
|
VCIOptionPane.showError(WidgetPanel.this, tipObj.setContent("根据" + firstRef + "->" + context
|
+ "确定的参照页面无现在所定义的区域" + attrs[1] + "=" + refParamsMap.get(attrs[1])));
|
return false;
|
}
|
|
}
|
// datafield
|
if (!(refParamsMap.get(attrs[2]) == null || refParamsMap.get(attrs[2]).equals(""))) {// datafield定义时做如下操作
|
String returnAttrName = refParamsMap.get(attrs[2]);
|
String returnAttrNameBtmName = getBtmName(returnAttrName);
|
// returnAttrNameBtmName为空时返回false
|
if (returnAttrNameBtmName == null || returnAttrNameBtmName.equals("")) {
|
VCIOptionPane.showError(WidgetPanel.this,
|
tipObj.setContent(tipObj.CONTANT_3 + "对应的值,不是参照属性"));
|
return false;
|
}
|
// 返回数据类型(returnAttrNameBtmName)与该字段所需数据类型(useFieldBtmName)不符
|
if (!returnAttrNameBtmName.equalsIgnoreCase(useFieldBtmName)) {
|
tipObj.setContent("返回数据类型与该字段所需数据类型不符");
|
VCIOptionPane.showError(WidgetPanel.this,
|
tipObj.setNotes(tipObj.CONTANT_3 + "=\"" + returnAttrName + "\"?"));
|
return false;
|
}
|
|
// 用returnAttrNameBtmName属性获取其业务类型属性,并匹配
|
try {
|
|
if (!isProperty(returnAttrNameBtmName, refValue)) {
|
VCIOptionPane.showError(WidgetPanel.this, tipObj
|
.setContent("参照值\"" + refValue + "\"不是\"" + returnAttrName + "\"对应的业务类型的属性!"));
|
return false;
|
}
|
} catch (Throwable e) {
|
VCIOptionPane.showError(WidgetPanel.this,
|
tipObj.setContent(tipObj.CONTANT_3 + "对应的值,必须是参照属性"));
|
return false;
|
}
|
|
}
|
}
|
|
return true;
|
}
|
|
/**
|
*
|
* @param type
|
* @param context
|
* @return
|
* @throws Exception HashSet<String>
|
* @Description :获取页面定义区域的信息
|
* @author Zylon 2015-7-6 上午9:31:20
|
*
|
*/
|
private HashSet<String> getPLUILayoutRegion(String type, String context) throws Exception {
|
DataModelFactory factory = new DataModelFactory();
|
HashSet<String> contextRegion = new HashSet<String>();
|
|
PLUILayout contextDef = factory.getContextDefination(type, context);
|
if (contextDef == null) {
|
throw new Exception();
|
}
|
|
if (contextDef.plIsShowTab == 1) {// 3
|
contextRegion.add(3 + "");
|
}
|
if (contextDef.plIsShowForm == 1) { // 2
|
contextRegion.add(2 + "");
|
}
|
;
|
if (contextDef.plIsShowNavigator == 1) {// 1
|
contextRegion.add(1 + "");
|
}
|
;
|
|
return contextRegion;
|
}
|
|
/**
|
*
|
* @param BtmName
|
* @param attrName
|
* @return boolean
|
* @Description :根据BtmName 和 传入的属性名 判断该属性名是否为BtmName的属性
|
* @author Zylon 2015-7-6 上午9:30:03
|
*
|
*/
|
private boolean isProperty(String BtmName, String attrName) {
|
boolean isInPropertys = false;
|
try {
|
String[] typePropertys = BtmClient.getService().getBtmApNameArray(BtmName);
|
String[] sysPropertys = BusinessConstants.SELECT_CONSTANTS;
|
for (String property : typePropertys) {
|
if (attrName.equalsIgnoreCase(property.trim())) {
|
isInPropertys = true;
|
}
|
}
|
for (String property : sysPropertys) {
|
if (attrName.equalsIgnoreCase(property.trim())) {
|
isInPropertys = true;
|
}
|
}
|
|
} catch (Throwable e) {
|
isInPropertys = false;
|
}
|
|
return isInPropertys;
|
}
|
|
});
|
}
|
|
/**
|
* 判断传入字段是否为库中保存的参照属性
|
*
|
* @param attrName
|
* @return
|
*/
|
private boolean isRefAttr(String attrName) {
|
String useFieldBtmName = getBtmName(attrName);
|
if (useFieldBtmName.equals("")) {
|
return false;
|
}
|
return true;
|
}
|
|
/**
|
* 根据参照属性名获得BtmName
|
*
|
* @param 参照属性名
|
* @return
|
*/
|
private String getBtmName(String attrName) {
|
AttribItem attribItem = ApProvider.getAbItemByName(attrName);
|
OtherInfo otherInfo = OtherInfo.getOtherInfoByText(attribItem.other);
|
return otherInfo.getRefTypeName() == null ? "" : otherInfo.getRefTypeName();
|
}
|
|
private List<String> getValueList() {
|
List<String> list = new ArrayList<String>();
|
for (int i = 0; i < jdValuelistModel.getSize(); i++) {
|
String elementAt = (String) jdValuelistModel.getElementAt(i);
|
list.add(elementAt);
|
}
|
return list;
|
}
|
|
private String getTypeCobValue() {
|
String selectedItem = (String) jdTypeComBox.getSelectedItem();
|
Set<String> keySet = jdTypeComBoxListMap.keySet();
|
Iterator<String> iterator = keySet.iterator();
|
String value = "";
|
while (iterator.hasNext()) {
|
value = iterator.next();
|
if (selectedItem == null) {
|
return "";
|
}
|
if (selectedItem.equals(jdTypeComBoxListMap.get(value))) {
|
break;
|
}
|
}
|
return value;
|
}
|
|
/**
|
* "单行文本框","文本按钮框","多行文本框","富文本框","数字输入框", "密码框","单选按钮","多选按钮","下拉菜单","Web编辑器",
|
* "日期输入框","时间输入框","日期时间输入框","隐藏或普通文字","自定义表单","文件上传","多文件上传" "自定义"
|
* "text","textbtn","textarea"
|
* ,"number","password","radio","checkbox","select","webeditor", "date", "time",
|
* "datetime", "hidden","customform","file","multiFile","custom"
|
*/
|
private void initJdTypeComBoxList() {
|
jdTypeComBoxListMap = new LinkedHashMap<String, String>();
|
jdTypeComBoxListMap.put("text", "单行文本框");
|
jdTypeComBoxListMap.put("textbtn", "文本按钮框");
|
jdTypeComBoxListMap.put("textarea", "多行文本框");
|
jdTypeComBoxListMap.put("richtext", "富文本框");
|
jdTypeComBoxListMap.put("number", "数字输入框");
|
jdTypeComBoxListMap.put("password", "密码框");
|
jdTypeComBoxListMap.put("radio", "单选按钮");
|
jdTypeComBoxListMap.put("checkbox", "多选按钮");
|
jdTypeComBoxListMap.put("select", "下拉菜单");
|
jdTypeComBoxListMap.put("multiselect", "多选下拉菜单");
|
jdTypeComBoxListMap.put("date", "日期输入框");
|
jdTypeComBoxListMap.put("time", "时间输入框");
|
jdTypeComBoxListMap.put("datetime", "日期时间输入框");
|
jdTypeComBoxListMap.put("file", "文件上传");
|
jdTypeComBoxListMap.put("multiFile", "多文件上传");
|
jdTypeComBoxListMap.put("custom", "自定义");
|
jdTypeComBoxListMap.put("customform", "自定义表单");
|
jdTypeComBoxListMap.put("hidden", "隐藏或普通文字");
|
jdTypeComBoxListMap.put("webeditor", "Web编辑器");
|
jdTypeComBoxListMap.put("specialCharacter", "特殊字符");
|
jdTypeComBox.addItem("");
|
|
Set<String> keySet = jdTypeComBoxListMap.keySet();
|
Iterator<String> iterator = keySet.iterator();
|
while (iterator.hasNext()) {
|
String next = iterator.next();
|
jdTypeComBox.addItem(jdTypeComBoxListMap.get(next));
|
}
|
}
|
|
/**
|
* 判断默认表达式是否正确
|
*
|
* @param expression
|
* @author LiuPengfei
|
*/
|
private String isDefaultExpress(String expression) {
|
// ${description}_#CURRENTUSER.NAME#_#CURRENTDATE#_!com.vci.ui.form.defaultvalue.InitRevVer!
|
if (expression == null || expression.trim().equals("")) {
|
return "";
|
}
|
if (expression.indexOf("!") != -1) {
|
// !需要成对出现,判断!的个数是否为偶数
|
List<Integer> chars = new ArrayList<Integer>();
|
for (int i = 0; i < expression.length(); i++) {
|
String c = expression.charAt(i) + "";
|
if (c.equals("!")) {
|
chars.add(i);
|
}
|
}
|
if ((chars.size()) % 2 != 0) {
|
return "不符合情况,因为表达式的规则是!在自定义类的两端成对出现。";
|
}
|
String regex = "!([^!]*)!";
|
Pattern p = Pattern.compile(regex);
|
Matcher m = p.matcher(expression);
|
while (m.find()) {
|
String customClass = m.group(1);
|
Class c;
|
if (customClass.trim().equals("")) {
|
return "两端!之间的值为空,不是自定义类,请修改!";
|
}
|
try {
|
c = Class.forName(customClass);
|
String customInterfaceString = "com.vci.ui.form.defaultvalue.IFormFieldDefaultValue";// 自定义接口
|
if (!isImplementsInterface(c, customInterfaceString)) {
|
return customClass + "类名不正确,没有实现自定义类!";
|
}
|
;
|
} catch (ClassNotFoundException e) {
|
e.printStackTrace();
|
return "系统找不到类" + customClass + ",请修改!";
|
}
|
}
|
}
|
if (expression.indexOf("#") != -1) {
|
// 内置的系统函数
|
List<String> innerFunctions = new ArrayList<String>();
|
innerFunctions.add("CURRENTTIME");
|
innerFunctions.add("CURRENTDATE");
|
innerFunctions.add("CURRENTDATETIME");
|
// #需要成对出现,判断#的个数是否为偶数
|
List<Integer> chars = new ArrayList<Integer>();
|
for (int i = 0; i < expression.length(); i++) {
|
String c = expression.charAt(i) + "";
|
if (c.equals("#")) {
|
chars.add(i);
|
}
|
}
|
if ((chars.size()) % 2 != 0) {
|
return "不符合情况,因为表达式的规则是#在内置系统变量或函数的两端成对出现。";
|
}
|
// 偶数情况下,获取#内的变量判断是否属于内置系统变量或函数
|
Pattern p = Pattern.compile("#([^#]*)#");
|
Matcher m = p.matcher(expression);
|
while (m.find()) {
|
String innerSystem = m.group(1);
|
if (innerSystem.trim().equals("")) {
|
return "两端#之间的值为空,不属于内置的系统变量或函数,请修改!";
|
}
|
if (!ClientContextVariable.isGlobalVarKey(innerSystem) && !innerFunctions.contains(innerSystem)) {
|
return innerSystem + "不属于内置的系统变量或函数,请修改!";
|
}
|
}
|
}
|
/*
|
* if (expression.indexOf("${") != -1) { Pattern p =
|
* Pattern.compile("\\$\\{([a-zA-Z0-9_]*|)\\}"); Matcher m =
|
* p.matcher(expression); while (m.find()) { String sourceObjectAttr =
|
* m.group(1); try { String[] btms = BtmClient.getService().getBTMNamesByAPName(
|
* sourceObjectAttr); String[] sysPropertysArray = ClientCacheFacade
|
* .getInstance().getSystemAttributes(false); List<String> sysPropertys = Arrays
|
* .asList(sysPropertysArray); if (btms == null || btms.length == 0 &&
|
* !sysPropertys.contains(sourceObjectAttr .toUpperCase())) { return
|
* sourceObjectAttr + "不属于该业务的属性!"; } } catch (VCIError e) {
|
* e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } catch
|
* (Throwable e) { e.printStackTrace(); } } }
|
*/
|
/*
|
* if(expression.indexOf("_")!=-1){ String[] keys = expression.split("_");
|
* //[${description}, #CURRENTUSER.NAME#, #CURRENTDATE#,
|
* !com.vci.ui.form.defaultvalue.InitRevVer!] String keyVariable=null; for
|
* (String key : keys) { if(key.startsWith("#")&&key.endsWith("#")){
|
* keyVariable=key.substring(1, key.lastIndexOf("#")); //内置的系统变量 List<String>
|
* innerVariables = new ArrayList<String>();
|
* innerVariables.add("CURRENTUSER.ID"); innerVariables.add("CURRENTUSER.NAME");
|
* innerVariables.add("CURRENTUSER.SECRETGRADE");
|
* innerVariables.add("CURRENTUSER.EMAIL");
|
* innerVariables.add("CURRENTUSER.GROUPNUM");
|
* innerVariables.add("CURRENTUSER.SECRET");
|
* innerVariables.add("IPSECRETSWITCH"); //内置的系统函数 List<String> innerFunctions =
|
* new ArrayList<String>(); innerFunctions.add("CURRENTTIME");
|
* innerFunctions.add("CURRENTDATE"); innerFunctions.add("IPSECRETDATETIME"); if
|
* (!innerVariables.contains(keyVariable
|
* )&&!innerFunctions.contains(keyVariable)) {
|
* VCIOptionPane.showError(WidgetPanel.this,
|
* keyVariable+"不是内置的系统函数也不是内置的系统变量,请修改!"); return false; } }else if
|
* (key.startsWith("!")&&key.endsWith("!")) { keyVariable=key.substring(1,
|
* key.lastIndexOf("!")); Class c; try { c = Class.forName(keyVariable); String
|
* customInterfaceString =
|
* "com.vci.ui.form.defaultvalue.IFormFieldDefaultValue";//自定义接口
|
* if(!isImplementsInterface(c,customInterfaceString)){ VCIOptionPane.showError
|
* (WidgetPanel.this,keyVariable+"类名不正确,没有实现自定义类!"); return false; }; } catch
|
* (ClassNotFoundException e) { VCIOptionPane.showError(WidgetPanel
|
* .this,"系统找不到类"+keyVariable+"请修改!"); e.printStackTrace(); return false; }
|
*
|
* }else if(key.startsWith("${")&&key.endsWith("}")){ //不处理 }else if (key
|
* .startsWith("#")&&!key.endsWith("#")||!key.startsWith("#")&&key.endsWith
|
* ("#")) { VCIOptionPane.showError(WidgetPanel.this,"内置的系统变量或函数"+key+
|
* "必须以#开头,以#结尾,请修改!"); return false; }else if (key.startsWith("!")&&!key
|
* .endsWith("!")||!key.startsWith("!")&&key.endsWith("!")) { VCIOptionPane
|
* .showError(WidgetPanel.this,"自定义类"+key+"必须以!开头,以!结尾,请修改!"); return false;
|
* }else{ VCIOptionPane.showError(WidgetPanel.this,"属性"+key+"格式有误,请修改!"); return
|
* false; } } }
|
*/
|
return "";
|
}
|
|
/** 判断类是否实现了自定义接口com.vci.ui.form.defaultvalue. IFormFieldDefaultValue */
|
private boolean isImplementsInterface(Class c, String customInterface) {
|
Class[] face = c.getInterfaces();
|
for (int i = 0; i < face.length; i++) {
|
if (face[i].getName().equals(customInterface)) {
|
return true;
|
} else {
|
Class[] face1 = face[i].getInterfaces();
|
for (int j = 0; j < face1.length; j++) {
|
if (face1[j].getName().equals(customInterface)) {
|
return true;
|
} else if (isImplementsInterface(face1[j], customInterface)) {
|
return true;
|
}
|
}
|
}
|
}
|
if (c.getSuperclass() != null) {
|
return isImplementsInterface(c.getSuperclass(), customInterface);
|
}
|
return false;
|
}
|
|
private void initData() {
|
if (prmItem != null) {
|
jdFieldTxt.setText(prmItem.getItemField());
|
jdNameTxt.setText(prmItem.getItemName());
|
jdTypeComBox.setSelectedItem(jdTypeComBoxListMap.get(prmItem.getItemType()));
|
//initLableInfo();
|
jdVlueTxt.setText(prmItem.getItemValue());
|
txtShowExpression.setText(prmItem.getItemShowExpression());
|
txtDateFormat.setText(prmItem.getItemDateFormat());
|
|
if (prmItem.getItemCols() != null && prmItem.getItemCols().equals("1")) {
|
fullDisRadio.setSelected(true);
|
} else if (prmItem.getItemCols() != null && prmItem.getItemCols().equals("0")) {
|
noDisRadio.setSelected(true);
|
}
|
for (int j = 0; j < prmItem.getItemValueList().size(); j++) {
|
String string = prmItem.getItemValueList().get(j);
|
jdValuelistModel.addElement(string);
|
}
|
jdStyleTxt.setText(prmItem.getItemStyle());
|
jdScriptTxt.setText(prmItem.getItemScript());
|
jdTipsTxt.setText(prmItem.getItemTips());
|
JD_EditableProgramTxt.setText(prmItem.getItemEditableProgram());
|
|
if ("1".equals(prmItem.getItemIsEditable())) {
|
jdiseditable.setSelected(true);
|
}
|
if ("1".equals(prmItem.getItemIsRequired())) {
|
jdisrequired.setSelected(true);
|
}
|
jdctrldisplycol.setText(prmItem.getItemCtrlDisplyCol());
|
jdctrldisplycond.setText(prmItem.getItemCtrlDisplyCondition());
|
jdqueryrefields.setText(prmItem.getItemQueryRefFields());
|
jdcustomclass.setText(prmItem.getItemCustomClass());
|
|
jdListTableTxt.setText(prmItem.getItemListTable());
|
jdListTxtTxt.setText(prmItem.getItemListTxt());
|
jdListValTxt.setText(prmItem.getItemListVal());
|
|
if ("1".equals(prmItem.getItemIsHttpSave())) {
|
jdishttpsave.setSelected(true);
|
}
|
jdhttpvolumnpath.setText(prmItem.getItemHttpVolumnPath());
|
jdhttppathfield.setText(prmItem.getItemHttpPathField());
|
jdaddfilter.setText(prmItem.getItemAddFilter());
|
jd_rightTxt.setText(prmItem.getItemRight());
|
} else {
|
initLableInfo();
|
}
|
}
|
|
private void initDisControl() {
|
if (jdishttpsave.isSelected()) {
|
jdhttpvolumnpath.setEnabled(true);
|
jdhttppathfield.setEnabled(true);
|
} else {
|
jdhttpvolumnpath.setEnabled(false);
|
jdhttppathfield.setEnabled(false);
|
}
|
}
|
|
private void initLableInfo() {
|
if (attribItem == null) {
|
if (prmItem != null) {
|
// 设置属性当前类型
|
jdTypeComBox.setSelectedItem(jdTypeComBoxListMap.get(prmItem.getItemType()));
|
}
|
return;
|
} else {
|
jdTypeComBox.removeAllItems();
|
jdFieldTxt.setText(attribItem.name);
|
jdNameTxt.setText(attribItem.label);
|
jdVlueTxt.setText(attribItem.defValue);
|
Map<String, List<String>> typeMap = TypeConstant.getTypeMap();
|
List<String> list = typeMap.get(attribItem.vtDataType);
|
if (list != null) {
|
|
for (String typeValue : list) {
|
jdTypeComBox.addItem(jdTypeComBoxListMap.get(typeValue));
|
}
|
} else {
|
Set<String> keySet = jdTypeComBoxListMap.keySet();
|
Iterator<String> iterator = keySet.iterator();
|
while (iterator.hasNext()) {
|
String next = iterator.next();
|
jdTypeComBox.addItem(jdTypeComBoxListMap.get(next));
|
}
|
}
|
if (prmItem != null) {
|
// 设置属性当前类型
|
jdTypeComBox.setSelectedItem(jdTypeComBoxListMap.get(prmItem.getItemType()));
|
}
|
}
|
}
|
}
|