Browse Source

Pull request #3064: REPORT-45095 表单控件设置提交事件,添加字段后编辑字段,事件弹框消失

Merge in DESIGN/design from ~VITO/c-design:release/10.0 to release/10.0

* commit '10056986e7dabf39361d320b5e4fdea888ef0a85':
  REPORT-45095 表单控件设置提交事件,添加字段后编辑字段,事件弹框消失
feature/big-screen
vito 4 years ago
parent
commit
9e07fa24ff
  1. 127
      designer-base/src/main/java/com/fr/design/write/submit/DBManipulationPane.java
  2. 2
      designer-realize/src/main/java/com/fr/design/write/submit/SmartInsertDBManipulationPane.java

127
designer-base/src/main/java/com/fr/design/write/submit/DBManipulationPane.java

@ -53,7 +53,6 @@ import javax.swing.BorderFactory;
import javax.swing.DefaultCellEditor;
import javax.swing.DefaultComboBoxModel;
import javax.swing.Icon;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
@ -74,6 +73,7 @@ import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusAdapter;
@ -119,10 +119,6 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
protected JavaScriptActionPane parentPane;
private int keyColumnWidth = 100;
private int resizeColumnCount = 4;
private int btnWidth = 110;
private int btnHeight = 20;
private String subMitName;
private static final String[] DML_CONFIG_TYPES = new String[]{
@ -194,8 +190,8 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
JPanel controlBtnPane = new JPanel(new GridLayout(actions.length + 1, 1, 4, 4));
editTablePane.add(GUICoreUtils.createBorderPane(controlBtnPane, BorderLayout.NORTH), BorderLayout.EAST);
for (int i = 0; i < actions.length; i++) {
controlBtnPane.add(new UIButton(actions[i]));
for (UpdateAction action : actions) {
controlBtnPane.add(new UIButton(action));
}
checkBoxUpdatePane = new JPanel(new BorderLayout(0, 0));
checkBoxUpdatePane.setPreferredSize(new Dimension(120, 20));
@ -209,7 +205,8 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
public void actionPerformed(ActionEvent e) {
FormatExplanationPane formatExplanation = new FormatExplanationPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Base_Help"), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_RWA_Help"), 12f);
BasicDialog dlg = formatExplanation.showMediumWindow(SwingUtilities.getWindowAncestor(DBManipulationPane.this),
new DialogActionAdapter(){});
new DialogActionAdapter() {
});
dlg.setVisible(true);
}
});
@ -230,8 +227,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
for (int i = 0; i < model.getRowCount(); i++) {
columnObjects.add(model.getKeyColumnNameValue(i).cv.getObj());
}
for (int i = 0;i < columnObjects.size();i++){
Object ob = columnObjects.get(i) ;
for (Object ob : columnObjects) {
if (!(ob instanceof ColumnRow || ob instanceof ColumnRowGroup)) {
setUpdateCheckBoxEnable(false);
UpdateCheckBox.setSelected(false);
@ -261,6 +257,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
UIButton addSubmitEventButton = new UIButton(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Set_Submit_Event"));
addSubmitEventButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
final SubmitJobListPane jobsPane = createSubmitJobListPane();
@ -409,6 +406,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
*/
keyColumnValuesTable.addFocusListener(new FocusAdapter() {
@Override
public void focusGained(FocusEvent e) {
refreshColumnsComboBox();
}
@ -438,6 +436,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
this.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_RWA_Smart_Add_Fields"));
}
@Override
public void actionPerformed(ActionEvent evt) {
BasicPane bPane = new BasicPane() {
@ -449,6 +448,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
bPane.setLayout(FRGUIPaneFactory.createBorderLayout());
final CheckBoxList list = new CheckBoxList(currentColumnNames(), CheckBoxList.SelectedState.ALL, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Chart_Field_Name")) {
@Override
public String value2Text(Object value) {
if (value instanceof ColumnName) {
return ((ColumnName) value).name;
@ -460,6 +460,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
bPane.add(new JScrollPane(list), BorderLayout.CENTER);
BasicDialog dlg = bPane.showSmallWindow(SwingUtilities.getWindowAncestor(DBManipulationPane.this), new DialogActionAdapter() {
@Override
public void doOk() {
addFields(list);
updateUpdateCheckBoxEnable();
@ -481,9 +482,9 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
// Richie:用了存储新的KeyColumnNameValue的List.
List<KeyColumnNameValue> newKeyColumnNameValueList = new ArrayList<KeyColumnNameValue>();
if (!keyColumnNameValueList.isEmpty()) {
for (int i = 0; i < selected.length; i++) {
for (Object o : selected) {
// Richie:先填上空的.
newKeyColumnNameValueList.add(new KeyColumnNameValue(false, (ColumnName)selected[i], new ColumnValue(""), false));
newKeyColumnNameValueList.add(new KeyColumnNameValue(false, (ColumnName) o, new ColumnValue(""), false));
}
}
// Richie:初始化
@ -498,11 +499,11 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
if (returnValue == 0 || returnValue == 3) {
break;
}
for (int j = 0; j < keyColumnNameValueList.size(); j++) {
if (ComparatorUtils.equals(selected[i], keyColumnNameValueList.get(j).cn)) {
for (KeyColumnNameValue keyColumnNameValue : keyColumnNameValueList) {
if (ComparatorUtils.equals(selected[i], keyColumnNameValue.cn)) {
Object[] options = {com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Covered_All"), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Base_Yes"), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Base_No"), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Cover_None")};
returnValue = JOptionPane.showOptionDialog(DBManipulationPane.this,
com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Cover_Tips", keyColumnNameValueList.get(j).cn.name),
com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Cover_Tips", keyColumnNameValue.cn.name),
"", JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, null, options, options[0]);
// Richie:全部覆盖
if (returnValue == 0) {
@ -514,7 +515,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
} else if (returnValue == 2) {
coverNumber = i;
newKeyColumnNameValueList.remove(i);
newKeyColumnNameValueList.add(i, keyColumnNameValueList.get(j));
newKeyColumnNameValueList.add(i, keyColumnNameValue);
// Richie:全部不覆盖
} else if (returnValue == 3) {
coverNumber = i;
@ -538,10 +539,10 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
model.removeAllKeyColumnNameValue();
// Richie:全部不覆盖,已经存在的就保留,不存在的添加默认行
for (int i = coverNumber; i < selected.length; i++) {
for (int j = 0; j < keyColumnNameValueList.size(); j++) {
if (ComparatorUtils.equals(selected[i], keyColumnNameValueList.get(j).cn)) {
for (KeyColumnNameValue keyColumnNameValue : keyColumnNameValueList) {
if (ComparatorUtils.equals(selected[i], keyColumnNameValue.cn)) {
newKeyColumnNameValueList.remove(i);
newKeyColumnNameValueList.add(i, keyColumnNameValueList.get(j));
newKeyColumnNameValueList.add(i, keyColumnNameValue);
}
}
@ -565,8 +566,8 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
// Richie:初始化
if (keyColumnNameValueList.isEmpty()) {
model.removeAllKeyColumnNameValue();
for (int i = 0; i < selected.length; i++) {
model.addKeyColumnNameValue(new KeyColumnNameValue(false, (ColumnName)selected[i], new ColumnValue(""), false));
for (Object o : selected) {
model.addKeyColumnNameValue(new KeyColumnNameValue(false, (ColumnName) o, new ColumnValue(""), false));
}
}
@ -579,6 +580,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
this.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_RWA_Add_Field"));
}
@Override
public void actionPerformed(ActionEvent e) {
KeyColumnTableModel model = (KeyColumnTableModel) keyColumnValuesTable.getModel();
@ -596,6 +598,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
this.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_RWA_Remove_Field"));
}
@Override
public void actionPerformed(ActionEvent evt) {
// DBManipulationPane target = this.getDBManipulationPane();
@ -636,8 +639,8 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
model.removeAllElements();
ColumnName[] columnNames = currentColumnNames();
for (int i = 0; i < columnNames.length; i++) {
model.addElement(columnNames[i]);
for (ColumnName columnName : columnNames) {
model.addElement(columnName);
}
}
@ -673,6 +676,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
columnsComboBox = new UIComboBox(new DefaultComboBoxModel());
columnsComboBox.setRenderer(new UIComboBoxRenderer() {
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
@ -685,20 +689,18 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
});
column1.setCellEditor(new DefaultCellEditor(columnsComboBox) {
@Override
public boolean stopCellEditing() {
if (super.stopCellEditing()) {
return true;
}
return false;
return super.stopCellEditing();
}
});
((DefaultCellEditor) column1.getCellEditor()).setClickCountToStart(2);
//设置Column 2的Editor
column2.setCellEditor(new ColumnValueEditor());
column2.setCellEditor(new ColumnValueEditor(DBManipulationPane.this));
}
@Override
public void populateBean(DBManipulation dbManipulation) {
if (dbManipulation == null) {
dbManipulation = new DBManipulation();
@ -782,6 +784,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
}
}
@Override
public DBManipulation updateBean() {
DataBaseItems para = chooseTable.updateBean(true);
DBManipulation dbMani = new DBManipulation();
@ -812,8 +815,8 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
dmlConfig.setUpdateSelected(UpdateCheckBox.isSelected());
if (jobs != null) {
for (int i = 0; i < jobs.length; i++) {
dmlConfig.addSubmitJob(jobs[i]);
for (NameSubmitJob job : jobs) {
dmlConfig.addSubmitJob(job);
}
}
dmlConfig.setCondition(condition);
@ -840,6 +843,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Values_Editor");
}
@Override
public void populateBean(Object object) {
vPane.populate(object);
}
@ -855,33 +859,56 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
* alex:ColumnValue的编辑器,弹出对话框来编辑...个人觉得不大好
*/
protected class ColumnValueEditor extends AbstractCellEditor implements TableCellEditor {
/** The Swing component being edited. */
private UILabel textLabel;
private ValuePane vPane;
private BasicDialog vPaneDLG;
/**
* The Swing component being edited.
*/
private final UILabel textLabel;
private final ValuePane vPane;
private final BasicDialog vPaneDLG;
private Component parent;
/**
* 列值编辑器
*
* @param parent 父组件通过指定父组件启动下一级子窗口
*/
protected ColumnValueEditor(Component parent) {
this(v_Types, parent);
}
@Deprecated
protected ColumnValueEditor() {
this(v_Types);
this(v_Types, null);
}
protected ColumnValueEditor(Editor<?>[] types) {
/**
* 列值编辑器
*
* @param types 编辑器类型
* @param parent 父组件通过指定父组件启动下一级子窗口
*/
protected ColumnValueEditor(Editor<?>[] types, Component parent) {
textLabel = new UILabel();
textLabel.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
vPaneDLG.setAlwaysOnTop(true);
vPaneDLG.setVisible(true);
}
});
vPane = new ValuePane(types);
vPaneDLG = vPane.showSmallWindow(new JFrame(), new DialogActionAdapter() {
Window window = parent == null
? DesignerContext.getDesignerFrame()
: SwingUtilities.getWindowAncestor(parent);
vPaneDLG = vPane.showSmallWindow(window, new DialogActionAdapter() {
@Override
public void doOk() {
fireEditingStopped(); // Make the renderer
// reappear.
updateUpdateCheckBoxEnable();
}
@Override
public void doCancel() {
fireEditingCanceled();
}
@ -891,6 +918,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
/*
* 双击以编辑
*/
@Override
public boolean isCellEditable(EventObject anEvent) {
if (anEvent instanceof MouseEvent) {
return ((MouseEvent) anEvent).getClickCount() >= 2;
@ -898,6 +926,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
return true;
}
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
if (value instanceof ColumnValue) {
vPane.populateBean(((ColumnValue) value).obj);
@ -912,6 +941,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
return textLabel;
}
@Override
public Object getCellEditorValue() {
return new ColumnValue(vPane.updateBean());
}
@ -924,6 +954,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
this.name = name;
}
@Override
public boolean equals(Object obj) {
if (!(obj instanceof ColumnName)) {
return false;
@ -949,6 +980,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
return obj;
}
@Override
public boolean equals(Object obj) {
if (!(obj instanceof ColumnValue)) {
return false;
@ -998,14 +1030,17 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
}
}
@Override
public String getColumnName(int col) {
return COLUMN_NAMES[col];
}
@Override
public int getColumnCount() {
return COLUMN_NAMES.length;
}
@Override
public int getRowCount() {
return keyColumnNameValueList.size();
}
@ -1040,6 +1075,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
super(model);
}
@Override
public Object getValueAt(int row, int col) {
KeyColumnNameValue knv = keyColumnNameValueList.get(row);
@ -1054,6 +1090,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
return null;
}
@Override
public void setValueAt(Object value, int row, int col) {
KeyColumnNameValue knv = keyColumnNameValueList.get(row);
@ -1066,6 +1103,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
}
}
@Override
public Class<?> getColumnClass(int c) {
switch (c) {
case 0:
@ -1078,6 +1116,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
return String.class;
}
@Override
public boolean isCellEditable(int row, int col) {
return true;
}
@ -1094,7 +1133,6 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
}
public static class KeyColumnNameValue {
private boolean isKey = false;
private ColumnName cn;
@ -1111,6 +1149,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
*
* @return 字符串z
*/
@Override
public String toString() {
return (isKey ? "* " : "") + cn + ":" + cv;
}
@ -1124,7 +1163,8 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
/*
* ColumnNameTableCellRenderer
*/
public class ColumnNameTableCellRenderer extends DefaultTableCellRenderer {
public static class ColumnNameTableCellRenderer extends DefaultTableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
@ -1139,7 +1179,8 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
/*
* ColumnValueTableCellRenderer
*/
private class ColumnValueTableCellRenderer extends DefaultTableCellRenderer {
private static class ColumnValueTableCellRenderer extends DefaultTableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);

2
designer-realize/src/main/java/com/fr/design/write/submit/SmartInsertDBManipulationPane.java

@ -356,7 +356,7 @@ public class SmartInsertDBManipulationPane extends DBManipulationPane {
if (isCellGroup) {
column2.setCellRenderer(new ColumnRowGroupCellRenderer2());
column2.setCellEditor(new ColumnValueEditor(ValueEditorPaneFactory.cellGroupEditor()));
column2.setCellEditor(new ColumnValueEditor(ValueEditorPaneFactory.cellGroupEditor(), this));
} else {
column2.setCellRenderer(new SelectedColumnValueTableCellRenderer());
}

Loading…
Cancel
Save