Browse Source

Merge pull request #10553 in DESIGN/design from release/11.0 to bugfix/11.0

* commit '64ac9432c00cb56c4c2402dd5c3b3feafc9a14bc':
  REPORT-80695 模板全局级别查找替换二期 为了通过插件校验,增加一下注释
  REPORT-80695 模板全局级别查找替换二期 校验
  REPORT-80690 增加注释
  REPORT-83313 数据脱敏-点击“数据脱敏设置”后预览页面没有消失 【问题原因】原本做的是"数据脱敏设置"面板是预览面板为parent的另一个dialog,没按照产品文档里做 【改动方案】修改下,打开脱敏设置面板的同时,预览页面消失 【review建议】
  REPORT-83624 模板查找替换提示语句key合并
  REPORT-80690 修改传入格式数据
  REPORT-80690 修改传入格式数据
  REPORT-80690 添加适配适配埋点
bugfix/11.0
superman 2 years ago
parent
commit
f8223844d3
  1. 4
      designer-base/src/main/java/com/fr/design/data/datapane/preview/PreviewTablePane.java
  2. 4
      designer-realize/src/main/java/com/fr/design/actions/cell/AbstractCellElementAction.java
  3. 5
      designer-realize/src/main/java/com/fr/design/actions/columnrow/ColumnWidthAction.java
  4. 4
      designer-realize/src/main/java/com/fr/design/actions/columnrow/RowHeightAction.java
  5. 135
      designer-realize/src/main/java/com/fr/design/actions/replace/action/ITChecker.java
  6. 2
      designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/ComponentType.java
  7. 4
      designer-realize/src/main/java/com/fr/design/actions/replace/info/ComponentInfo.java
  8. 2
      designer-realize/src/main/java/com/fr/design/actions/replace/info/WidgetInfo.java
  9. 2
      designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITCheckDialog.java
  10. 31
      designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java
  11. 9
      designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceNorthPanel.java
  12. 51
      designer-realize/src/main/java/com/fr/quickeditor/CellQuickEditor.java
  13. 4
      designer-realize/src/main/java/com/fr/quickeditor/cellquick/CellDSColumnEditor.java

4
designer-base/src/main/java/com/fr/design/data/datapane/preview/PreviewTablePane.java

@ -248,8 +248,6 @@ public class PreviewTablePane extends BasicPane {
if (Objects.nonNull(editingTemplate)) { if (Objects.nonNull(editingTemplate)) {
editingTemplate.fireTargetModified(true); editingTemplate.fireTargetModified(true);
} }
// 刷新预览页面
refreshTable();
} }
@Override @Override
@ -258,6 +256,8 @@ public class PreviewTablePane extends BasicPane {
} }
}, BasicDialog.DEFAULT); }, BasicDialog.DEFAULT);
dialog.setVisible(true); dialog.setVisible(true);
// 关闭预览页面
PreviewTablePane.this.dialog.setVisible(false);
} }
}); });

4
designer-realize/src/main/java/com/fr/design/actions/cell/AbstractCellElementAction.java

@ -9,6 +9,7 @@ import com.fr.design.mainframe.ElementCasePane;
import com.fr.design.mainframe.theme.utils.DefaultThemedTemplateCellElementCase; import com.fr.design.mainframe.theme.utils.DefaultThemedTemplateCellElementCase;
import com.fr.grid.GridUtils; import com.fr.grid.GridUtils;
import com.fr.grid.selection.CellSelection; import com.fr.grid.selection.CellSelection;
import com.fr.quickeditor.CellQuickEditor;
import com.fr.report.cell.TemplateCellElement; import com.fr.report.cell.TemplateCellElement;
import com.fr.report.core.SheetUtils; import com.fr.report.core.SheetUtils;
import com.fr.report.elementcase.TemplateElementCase; import com.fr.report.elementcase.TemplateElementCase;
@ -76,6 +77,9 @@ public abstract class AbstractCellElementAction extends CellSelectionAction {
} }
} }
} }
if (!ePane.isSelectedOneCell()) {
CellQuickEditor.record(CellQuickEditor.multipleOperationType.FILTER);
}
ePane.fireTargetModified(); ePane.fireTargetModified();
} }

5
designer-realize/src/main/java/com/fr/design/actions/columnrow/ColumnWidthAction.java

@ -4,8 +4,8 @@
package com.fr.design.actions.columnrow; package com.fr.design.actions.columnrow;
import com.fr.design.mainframe.ElementCasePane; import com.fr.design.mainframe.ElementCasePane;
import com.fr.grid.selection.CellSelection; import com.fr.grid.selection.CellSelection;
import com.fr.quickeditor.CellQuickEditor;
import com.fr.report.elementcase.ElementCase; import com.fr.report.elementcase.ElementCase;
import com.fr.stable.unit.UNIT; import com.fr.stable.unit.UNIT;
@ -32,6 +32,9 @@ public class ColumnWidthAction extends ColumnRowSizingAction {
for (int i = 0; i < columns.length; i++) { for (int i = 0; i < columns.length; i++) {
report.setColumnWidth(columns[i], len); report.setColumnWidth(columns[i], len);
} }
if (columns.length > 1) {
CellQuickEditor.record(CellQuickEditor.multipleOperationType.HEIHT_AND_COLUMN);
}
} }
protected UNIT getIndexLen(int index, ElementCase report){ protected UNIT getIndexLen(int index, ElementCase report){

4
designer-realize/src/main/java/com/fr/design/actions/columnrow/RowHeightAction.java

@ -6,6 +6,7 @@ package com.fr.design.actions.columnrow;
import com.fr.design.mainframe.ElementCasePane; import com.fr.design.mainframe.ElementCasePane;
import com.fr.grid.selection.CellSelection; import com.fr.grid.selection.CellSelection;
import com.fr.quickeditor.CellQuickEditor;
import com.fr.report.elementcase.ElementCase; import com.fr.report.elementcase.ElementCase;
import com.fr.stable.unit.UNIT; import com.fr.stable.unit.UNIT;
@ -32,6 +33,9 @@ public class RowHeightAction extends ColumnRowSizingAction {
for (int i = 0; i < rows.length; i++) { for (int i = 0; i < rows.length; i++) {
report.setRowHeight(rows[i], len); report.setRowHeight(rows[i], len);
} }
if (rows.length > 1) {
CellQuickEditor.record(CellQuickEditor.multipleOperationType.HEIHT_AND_COLUMN);
}
} }
@Override @Override

135
designer-realize/src/main/java/com/fr/design/actions/replace/action/ITChecker.java

@ -0,0 +1,135 @@
package com.fr.design.actions.replace.action;
import com.fr.design.actions.replace.info.Info;
import com.fr.design.i18n.Toolkit;
import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 校验JS公式控件组件
* 比较用户的所有对应类别的改动不论是否选中要替换只要整体类别改动过就算模板内容改动过
*
* @author Destiny.Lin
* @version 11.0
* created by Destiny.Lin on 2022-11-03
*/
public enum ITChecker {
/**
* 控件
*/
WIDGET_CHECK_TAG(Toolkit.i18nText("Fine-Design_Basic_Widget")),
/**
* 公式
*/
FORMULA_CHECK_TAG(Toolkit.i18nText("Fine-Design_Basic_Formula")),
/**
* JS
*/
JS_CHECK_TAG(Toolkit.i18nText("Fine-Design_Replace_JS")),
/**
* 组件
*/
COMPONENT_CHECK_TAG(Toolkit.i18nText("Fine-Design_Replace_Component"))
;
String name;
ITChecker(String name) {
this.name = name;
}
/**
* 匹配
*
* @param name 对应的检查类型
* @return 对应的检查checker
*/
@Nullable
public static ITChecker match(String name) {
ITChecker[] values = ITChecker.values();
for (ITChecker value : values) {
if (value.name.equals(name)) {
return value;
}
}
return null;
}
public static List<? extends Info> checkList = new ArrayList<>();
public static Map<String, Integer> appearTimesMap = new HashMap<>();
/**
* 更新对应的check列表
*
* @param list 查找后的searchList
*/
public static void updateCheckInfo(List<? extends Info> list) {
checkList = list;
updateCheckMapFromList(list);
}
/**
* 根据列表来更新对应元素的匹配Map
*
* @param list 更新后的checkList
*/
private static void updateCheckMapFromList(List<? extends Info> list) {
appearTimesMap.clear();
for (Info info : list) {
String showStr = info.getContent().getOldShowStr();
if (appearTimesMap.containsKey(showStr)) {
//如果已经存过了就个数+1
appearTimesMap.put(showStr, appearTimesMap.get(showStr) + 1);
} else {
//没有的话就把个数初始化为1个
appearTimesMap.put(showStr, 1);
}
}
}
/**
* 判断是否修改过
*
* @param list 重新获取的当前模板最新的list
* @return 修改过返回true
*/
public boolean isChanged(List<? extends Info> list) {
if (list.size() != checkList.size()) {
//如果总的数据的数量变了,就说明肯定修改过,没必要再进行下一步
return true;
}
return isChangedCheckByMap(list);
}
/**
* 通过检查Map来比较是否修改过
*
* @param list 传入的用于比较的list
* @return 修改过则返回true
*/
private boolean isChangedCheckByMap(List<? extends Info> list) {
for (Info info : list) {
String showStr = info.getContent().getOldShowStr();
if (appearTimesMap.containsKey(showStr)) {
//如果map中存在对应的值,就抵消,个数-1
appearTimesMap.put(showStr, appearTimesMap.get(showStr) - 1);
if (appearTimesMap.get(showStr) < 0) {
//如果map中的值小于0了,就说明数量对不上,修改过
return true;
}
} else {
//如果存在map中没存的值就没必要继续下去了,肯定改过
return true;
}
}
return false;
}
}

2
designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/ComponentType.java

@ -340,7 +340,7 @@ public enum ComponentType implements DealWithInfoValue {
String str = widget.getWidgetName(); String str = widget.getWidgetName();
info.updateOldStr(widget.getWidgetName(), findStr); info.updateOldStr(widget.getWidgetName(), findStr);
ShowValueUtils.updateAfterReplaceStr(info, str, findStr, replaceStr); ShowValueUtils.updateAfterReplaceStr(info, str, findStr, replaceStr);
widget.setWidgetName(widget.getWidgetName().replaceAll(findStr, replaceStr)); widget.setWidgetName(ShowValueUtils.replaceAll(widget.getWidgetName(), findStr, replaceStr));
} }
} }

4
designer-realize/src/main/java/com/fr/design/actions/replace/info/ComponentInfo.java

@ -3,6 +3,7 @@ package com.fr.design.actions.replace.info;
import com.fr.design.actions.replace.action.content.component.ComponentType; import com.fr.design.actions.replace.action.content.component.ComponentType;
import com.fr.design.actions.replace.action.content.component.SearchComponentAction; import com.fr.design.actions.replace.action.content.component.SearchComponentAction;
import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.actions.replace.info.base.ITContent;
import com.fr.design.actions.replace.utils.ShowValueUtils;
import com.fr.design.i18n.Toolkit; import com.fr.design.i18n.Toolkit;
import com.fr.design.mainframe.JTemplate; import com.fr.design.mainframe.JTemplate;
import com.fr.form.ui.Widget; import com.fr.form.ui.Widget;
@ -92,7 +93,8 @@ public class ComponentInfo implements Info {
} }
SearchComponentAction.getInstance().search4Infos(jTemplate); SearchComponentAction.getInstance().search4Infos(jTemplate);
List<ComponentInfo> list = SearchComponentAction.getInstance().getComponentInfos(); List<ComponentInfo> list = SearchComponentAction.getInstance().getComponentInfos();
String replacedName = ((Widget)this.getContent().getReplaceObject()).getWidgetName().replace(searchStr, replaceStr);
String replacedName = ShowValueUtils.replaceAll(((Widget)this.getContent().getReplaceObject()).getWidgetName(), searchStr, replaceStr);
for (ComponentInfo info : list) { for (ComponentInfo info : list) {
String widgetName = ((Widget)info.getContent().getReplaceObject()).getWidgetName(); String widgetName = ((Widget)info.getContent().getReplaceObject()).getWidgetName();
if (StringUtils.equals(replacedName, widgetName)) { if (StringUtils.equals(replacedName, widgetName)) {

2
designer-realize/src/main/java/com/fr/design/actions/replace/info/WidgetInfo.java

@ -156,7 +156,7 @@ public class WidgetInfo implements Info, DealWithInfoValue {
return false; return false;
} }
if (!this.isWaterMark() && this.isNeed2Check()) { if (!this.isWaterMark() && this.isNeed2Check()) {
String replacedName = ((Widget)this.getContent().getReplaceObject()).getWidgetName().replace(searchStr, replaceStr); String replacedName = ShowValueUtils.replaceAll(((Widget)this.getContent().getReplaceObject()).getWidgetName(), searchStr, replaceStr);
for (WidgetName name : CheckUtils.getNeed2CheckWidgetsName(jTemplate)) { for (WidgetName name : CheckUtils.getNeed2CheckWidgetsName(jTemplate)) {
String widgetName = name.getName(); String widgetName = name.getName();
if (StringUtils.equals(replacedName, widgetName)) { if (StringUtils.equals(replacedName, widgetName)) {

2
designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITCheckDialog.java

@ -44,7 +44,7 @@ public class ITCheckDialog extends UIDialog {
editorPane = new UITableEditorPane(editor); editorPane = new UITableEditorPane(editor);
editor.add(ITReplaceMainDialog.getCheckValidList()); editor.add(ITReplaceMainDialog.getCheckValidList());
UILabel label = new UILabel("<html>" + Toolkit.i18nText("Fine-Design_Replace_Check") + "<font color = 'rgb(236,124,125)'>" + ITReplaceMainDialog.contentReplaceFailedCount + "</font>" + Toolkit.i18nText("Fine-Design_Replace_Check_Tip")); UILabel label = new UILabel("<html>" + Toolkit.i18nText("Fine-Design_Replace_Check", "<font color = 'rgb(236,124,125)'>" + ITReplaceMainDialog.contentReplaceFailedCount + "</font>"));
JPanel center = new JPanel(new BorderLayout()); JPanel center = new JPanel(new BorderLayout());
UIButton location = new UIButton(Toolkit.i18nText("Fine-Design_Chart_Location")); UIButton location = new UIButton(Toolkit.i18nText("Fine-Design_Chart_Location"));
UIButton cancel = new UIButton(Toolkit.i18nText("Fine-Design_Basic_Cancel")); UIButton cancel = new UIButton(Toolkit.i18nText("Fine-Design_Basic_Cancel"));

31
designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java

@ -1,6 +1,7 @@
package com.fr.design.actions.replace.ui; package com.fr.design.actions.replace.ui;
import com.fr.design.actions.replace.action.ITChecker;
import com.fr.design.actions.replace.action.ShowSearchResultAction; import com.fr.design.actions.replace.action.ShowSearchResultAction;
import com.fr.design.actions.replace.action.setting.SettingController; import com.fr.design.actions.replace.action.setting.SettingController;
@ -37,6 +38,7 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import static com.fr.design.actions.replace.ui.ITTableEditorPane.editTable;
import static com.fr.design.actions.replace.ui.ITTableEditorPane.getEditTable; import static com.fr.design.actions.replace.ui.ITTableEditorPane.getEditTable;
/** /**
@ -210,10 +212,13 @@ public class ITReplaceMainDialog extends UIDialog {
* 模板内容替换相关 * 模板内容替换相关
*/ */
private void replace4Content() { private void replace4Content() {
String type = ((UITextField) (northPane.getFindCombobox().getEditor().getEditorComponent())).getText();
String searchStr = ((UITextField) (northPane.getFindInputCombobox().getEditor().getEditorComponent())).getText(); String searchStr = ((UITextField) (northPane.getFindInputCombobox().getEditor().getEditorComponent())).getText();
String replaceStr = ((UITextField) (northPane.getReplaceInputCombobox().getEditor().getEditorComponent())).getText(); String replaceStr = ((UITextField) (northPane.getReplaceInputCombobox().getEditor().getEditorComponent())).getText();
clearContentCount(); clearContentCount();
if (isITReplaceValid() && checkTemplateChanged(searchContentResultList)) { if (isITReplaceValid() && checkTemplateChanged(searchContentResultList, type)) {
ShowSearchResultAction searchAction = ShowSearchResultAction.match(GeneralUtils.objectToString(northPane.getFindCombobox().getSelectedItem()));
ITChecker.updateCheckInfo(searchAction.addMatchResult(searchStr, searchAction.showSearchValue(HistoryTemplateListCache.getInstance().getCurrentEditingTemplate())));
if (StringUtils.equals(getSearchStr(), searchStr)) { if (StringUtils.equals(getSearchStr(), searchStr)) {
String str = GeneralUtils.objectToString(northPane.getFindCombobox().getSelectedItem()); String str = GeneralUtils.objectToString(northPane.getFindCombobox().getSelectedItem());
//如果是控件或组件才要进行合法性校验 //如果是控件或组件才要进行合法性校验
@ -257,7 +262,9 @@ public class ITReplaceMainDialog extends UIDialog {
if (!info.getContent().isWrongful() && info.getContent().isSelected()) { if (!info.getContent().isWrongful() && info.getContent().isSelected()) {
info.setValue(info, searchStr, replaceStr, info.getContent().getOperatorArray()); info.setValue(info, searchStr, replaceStr, info.getContent().getOperatorArray());
} }
info.getContent().setReplaced(true); if (info.getContent().isSelected()) {
info.getContent().setReplaced(true);
}
} }
northPane.getResultLabel().setText(ShowValueUtils.getResultTip(searchContentResultList.size(), contentReplaceCount, contentReplaceFailedCount)); northPane.getResultLabel().setText(ShowValueUtils.getResultTip(searchContentResultList.size(), contentReplaceCount, contentReplaceFailedCount));
southPanel.getTableEditorPane().update(); southPanel.getTableEditorPane().update();
@ -338,10 +345,18 @@ public class ITReplaceMainDialog extends UIDialog {
} }
private Boolean checkTemplateChanged(List<? extends Info> searchResultList) { private Boolean checkTemplateChanged(List<? extends Info> searchResultList, String type) {
for (Info info : searchResultList) { ITChecker checker = ITChecker.match(type);
if (!info.getContent().isReplaced() && !info.checkValid()) { //对于JS、控件、组件、公式进行全量校验,不只针对当前选中的地方,这边先这样处理
return false; if (checker != null) {
ShowSearchResultAction searchAction = ShowSearchResultAction.match(GeneralUtils.objectToString(northPane.getFindCombobox().getSelectedItem()));
return !checker.isChanged(searchAction.addMatchResult(searchStr, searchAction.showSearchValue(HistoryTemplateListCache.getInstance().getCurrentEditingTemplate())));
} else {
//其他地方走各自的校验逻辑
for (Info info : searchResultList) {
if (!info.getContent().isReplaced() && !info.checkValid()) {
return false;
}
} }
} }
return true; return true;
@ -436,7 +451,9 @@ public class ITReplaceMainDialog extends UIDialog {
ShowSearchResultAction searchAction = ShowSearchResultAction.match(GeneralUtils.objectToString(northPane.getFindCombobox().getSelectedItem())); ShowSearchResultAction searchAction = ShowSearchResultAction.match(GeneralUtils.objectToString(northPane.getFindCombobox().getSelectedItem()));
//搜索 //搜索
if (searchAction != null) { if (searchAction != null) {
searchContentResultList = searchAction.addMatchResult(searchStr, searchAction.showSearchValue(jTemplate)); List<? extends Info> showValueList = searchAction.showSearchValue(jTemplate);
searchContentResultList = searchAction.addMatchResult(searchStr, showValueList);
ITChecker.updateCheckInfo(searchContentResultList);
itTableEditor.add(searchContentResultList); itTableEditor.add(searchContentResultList);
northPane.getResultLabel().setText(ShowValueUtils.getResultTip(searchContentResultList.size(), contentReplaceCount, contentReplaceFailedCount)); northPane.getResultLabel().setText(ShowValueUtils.getResultTip(searchContentResultList.size(), contentReplaceCount, contentReplaceFailedCount));
} }

9
designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceNorthPanel.java

@ -5,6 +5,7 @@ import com.fr.design.actions.replace.action.setting.SettingContent;
import com.fr.design.actions.replace.action.setting.SettingController; import com.fr.design.actions.replace.action.setting.SettingController;
import com.fr.design.data.datapane.TableDataComboBox; import com.fr.design.data.datapane.TableDataComboBox;
import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.icheckbox.UICheckBox;
import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.icontainer.UIScrollPane;
import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ilable.UILabel;
@ -51,7 +52,7 @@ public class ITReplaceNorthPanel {
private UILabel resultLabel; private UILabel resultLabel;
private UIComboBox findCombobox; private UIComboBox findCombobox;
private UIComboBox rangeCombobox; private UIComboBox rangeCombobox;
private JCheckBox matchRadioButton; private UICheckBox matchRadioButton;
private UILabel iconLabel; private UILabel iconLabel;
private UIComboBox findInputCombobox; private UIComboBox findInputCombobox;
private UIComboBox replaceInputCombobox; private UIComboBox replaceInputCombobox;
@ -201,7 +202,7 @@ public class ITReplaceNorthPanel {
super.setEditor(new ITComboBoxEditor()); super.setEditor(new ITComboBoxEditor());
} }
}; };
matchRadioButton = new JCheckBox(Toolkit.i18nText("Fine-Design_Replace_WildCard")); matchRadioButton = new UICheckBox(Toolkit.i18nText("Fine-Design_Replace_WildCard"));
matchRadioButton.addActionListener(new ActionListener() { matchRadioButton.addActionListener(new ActionListener() {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
@ -702,11 +703,11 @@ public class ITReplaceNorthPanel {
this.rangeCombobox = rangeCombobox; this.rangeCombobox = rangeCombobox;
} }
public JCheckBox getMatchRadioButton() { public UICheckBox getMatchRadioButton() {
return matchRadioButton; return matchRadioButton;
} }
public void setMatchRadioButton(JCheckBox checkBox) { public void setMatchRadioButton(UICheckBox checkBox) {
this.matchRadioButton = checkBox; this.matchRadioButton = checkBox;
} }

51
designer-realize/src/main/java/com/fr/quickeditor/CellQuickEditor.java

@ -455,6 +455,9 @@ public abstract class CellQuickEditor extends QuickEditor<ElementCasePane> {
if (updateStyle) { if (updateStyle) {
// 防止频繁触发保存 // 防止频繁触发保存
if (!tc.isSelectedOneCell()) {
record(multipleOperationType.FORMAT);
}
fireTargetModified(); fireTargetModified();
} }
@ -469,4 +472,52 @@ public abstract class CellQuickEditor extends QuickEditor<ElementCasePane> {
return formatPane; return formatPane;
} }
/**
* 用于适配记录批量操作的埋点数据
* 真正的埋点提交方案在云端运维插件中
*
* @param type 批量操作修改类型
* @return 批量修改类型名称用于云端运维埋点记录
*/
public static String record(multipleOperationType type) {
return type.getType();
}
/**
* 批量操作的类型
*/
public enum multipleOperationType {
/**
* 批量修改格式
*/
FORMAT("format"),
/**
* 批量修改数据列的数据设置
*/
TYPE_OF_DATA("type-of-data"),
/**
* 批量修改过滤条件
*/
FILTER("filter"),
/**
* 批量修改行高列宽
*/
HEIHT_AND_COLUMN("row-height-and-column-width");
private final String type;
multipleOperationType(String type) {
this.type = type;
}
public String getType() {
return type;
}
}
} }

4
designer-realize/src/main/java/com/fr/quickeditor/cellquick/CellDSColumnEditor.java

@ -319,10 +319,12 @@ public class CellDSColumnEditor extends CellQuickEditor {
public void itemStateChanged(ItemEvent e) { public void itemStateChanged(ItemEvent e) {
CellSelection selection = (CellSelection) tc.getSelection(); CellSelection selection = (CellSelection) tc.getSelection();
Set<TemplateCellElement> allCellElements = selection.getCellElements(); Set<TemplateCellElement> allCellElements = selection.getCellElements();
groupPane.update(allCellElements);
if (e == null || e.getStateChange() == ItemEvent.DESELECTED) { if (e == null || e.getStateChange() == ItemEvent.DESELECTED) {
//分组-高级-自定义点确定的时候传进来null的e,但是这时候应该触发保存 //分组-高级-自定义点确定的时候传进来null的e,但是这时候应该触发保存
groupPane.update(allCellElements); groupPane.update(allCellElements);
if (!tc.isSelectedOneCell()) {
CellQuickEditor.record(multipleOperationType.TYPE_OF_DATA);
}
fireTargetModified(); fireTargetModified();
} }
} }

Loading…
Cancel
Save