Browse Source

REPORT-3993 - [9.0一轮回归]选中一片单元格设置控件、条件属性,只有第一个单元格有效

master
plough 7 years ago
parent
commit
6d0998169f
  1. 31
      designer/src/com/fr/design/mainframe/CellWidgetPropertyPane.java
  2. 24
      designer/src/com/fr/design/present/ConditionAttributesGroupPane.java

31
designer/src/com/fr/design/mainframe/CellWidgetPropertyPane.java

@ -1,6 +1,7 @@
package com.fr.design.mainframe;
import com.fr.base.FRContext;
import com.fr.design.actions.utils.ReportActionUtils;
import com.fr.design.dialog.BasicDialog;
import com.fr.design.dialog.BasicPane;
import com.fr.design.dialog.DialogActionAdapter;
@ -15,6 +16,7 @@ import com.fr.grid.selection.CellSelection;
import com.fr.grid.selection.FloatSelection;
import com.fr.grid.selection.Selection;
import com.fr.privilege.finegrain.WidgetPrivilegeControl;
import com.fr.report.cell.CellElement;
import com.fr.report.cell.DefaultTemplateCellElement;
import com.fr.report.cell.TemplateCellElement;
import com.fr.report.elementcase.TemplateElementCase;
@ -30,6 +32,7 @@ public class CellWidgetPropertyPane extends BasicPane {
private TemplateCellElement cellElement;
private WidgetPane cellEditorDefPane;
private ElementCasePane ePane;
public static CellWidgetPropertyPane getInstance(){
if (singleton == null) {
@ -84,6 +87,7 @@ public class CellWidgetPropertyPane extends BasicPane {
public void reInit(ElementCasePane ePane){
this.ePane = ePane;
cellEditorDefPane = new WidgetPane(ePane);
this.removeAll();
this.add(cellEditorDefPane, BorderLayout.CENTER);
@ -108,18 +112,23 @@ public class CellWidgetPropertyPane extends BasicPane {
if (cellElement == null) {// 利用默认的CellElement.
return;
}
Widget cellWidget = this.cellEditorDefPane.update();
// p:最后把这个cellEditorDef设置到CellGUIAttr.
if (cellWidget instanceof NoneWidget) {
cellElement.setWidget(null);
} else {
if (cellElement.getWidget() != null) {
cellWidget = upDateWidgetAuthority(cellElement, cellWidget);
final CellSelection finalCS = (CellSelection) ePane.getSelection();
final TemplateElementCase tplEC = ePane.getEditingElementCase();
ReportActionUtils.actionIterateWithCellSelection(finalCS, tplEC, new ReportActionUtils.IterAction() {
public void dealWith(CellElement editCellElement) {
Widget cellWidget = cellEditorDefPane.update();
// p:最后把这个cellEditorDef设置到CellGUIAttr.
TemplateCellElement cellElement = (TemplateCellElement) editCellElement;
if (cellWidget instanceof NoneWidget) {
cellElement.setWidget(null);
} else {
if (cellElement.getWidget() != null) {
cellWidget = upDateWidgetAuthority(cellElement, cellWidget);
}
cellElement.setWidget(cellWidget);
}
}
cellElement.setWidget(cellWidget);
}
});
}

24
designer/src/com/fr/design/present/ConditionAttributesGroupPane.java

@ -4,6 +4,7 @@ import java.util.ArrayList;
import java.util.List;
import com.fr.base.FRContext;
import com.fr.design.actions.utils.ReportActionUtils;
import com.fr.design.gui.controlpane.UIListControlPane;
import com.fr.design.mainframe.DesignerContext;
import com.fr.design.mainframe.ElementCasePane;
@ -15,6 +16,7 @@ import com.fr.design.gui.controlpane.NameObjectCreator;
import com.fr.design.gui.controlpane.NameableCreator;
import com.fr.general.Inter;
import com.fr.grid.selection.CellSelection;
import com.fr.report.cell.CellElement;
import com.fr.report.cell.DefaultTemplateCellElement;
import com.fr.report.cell.TemplateCellElement;
import com.fr.report.cell.cellattr.highlight.DefaultHighlight;
@ -27,6 +29,7 @@ import com.fr.stable.Nameable;
public class ConditionAttributesGroupPane extends UIListControlPane {
private static ConditionAttributesGroupPane singleton;
private TemplateCellElement editCellElement; // 当前单元格对象
private ElementCasePane ePane;
private ConditionAttributesGroupPane() {
super();
@ -49,7 +52,25 @@ public class ConditionAttributesGroupPane extends UIListControlPane {
if (isPopulating) {
return;
}
editCellElement.setHighlightGroup(updateHighlightGroup());
final CellSelection finalCS = (CellSelection) ePane.getSelection();
final TemplateElementCase tplEC = ePane.getEditingElementCase();
// for (int i = 0; i < finalCS.getRowSpan(); i++) {
// for (int j = 0; j < finalCS.getColumnSpan(); j++) {
// int row = i + finalCS.getRow();
// int column = j + finalCS.getColumn();
// TemplateCellElement editCellElement = tplEC.getTemplateCellElement(column, row);
// // alex:不加这一句话会导致跨行跨列的格子被多次update
// if (editCellElement.getColumn() != column || editCellElement.getRow() != row) {
// continue;
// }
// }
// }
ReportActionUtils.actionIterateWithCellSelection(finalCS, tplEC, new ReportActionUtils.IterAction() {
public void dealWith(CellElement editCellElement) {
((TemplateCellElement)editCellElement).setHighlightGroup(updateHighlightGroup());
}
});
DesignerContext.getDesignerFrame().getSelectedJTemplate().fireTargetModified();
}
@ -64,6 +85,7 @@ public class ConditionAttributesGroupPane extends UIListControlPane {
}
public void populate(ElementCasePane ePane) {
this.ePane = ePane;
CellSelection cs = (CellSelection) ePane.getSelection();
final TemplateElementCase tplEC = ePane.getEditingElementCase();
editCellElement = tplEC.getTemplateCellElement(cs.getColumn(), cs.getRow());

Loading…
Cancel
Save