帆软报表设计器源代码。
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

88 lines
3.4 KiB

package com.fr.design.actions.columnrow;
import javax.swing.SwingUtilities;
import com.fr.base.BaseUtils;
import com.fr.design.actions.CellSelectionAction;
import com.fr.design.dscolumn.DSColumnBasicPane;
import com.fr.design.dialog.BasicDialog;
import com.fr.design.dialog.DialogActionAdapter;
import com.fr.design.mainframe.ElementCasePane;
import com.fr.design.mainframe.theme.utils.DefaultThemedTemplateCellElementCase;
import com.fr.grid.selection.CellSelection;
import com.fr.report.cell.TemplateCellElement;
import com.fr.report.core.SheetUtils;
import com.fr.report.elementcase.TemplateElementCase;
public class DSColumnBasicAction extends CellSelectionAction {
public DSColumnBasicAction(ElementCasePane t) {
super(t);
this.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Basic"));
// this.setMnemonic('B');
this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/expand/cellAttr.gif"));
}
@Override
protected boolean executeActionReturnUndoRecordNeededWithCellSelection(
CellSelection cs) {
final ElementCasePane reportPane = this.getEditingComponent();
final DSColumnBasicPane dsColumnBasicPane = new DSColumnBasicPane();
BasicDialog dSColumnBasicDialog = dsColumnBasicPane.showWindow(SwingUtilities.getWindowAncestor(reportPane));
// Got editCellElement.
TemplateCellElement editCellElement = null;
// got simple cell element from column and row.
final TemplateElementCase report = reportPane.getEditingElementCase();
editCellElement = report.getTemplateCellElement(cs.getColumn(), cs.getRow());
dsColumnBasicPane.putElementcase(getEditingComponent());
dsColumnBasicPane.putCellElement(editCellElement);
// alex:如果是线性报表,这时还要计算一下默认父格是什么z
if (report != null) {
SheetUtils.calculateDefaultParent(report);
}
dsColumnBasicPane.populate(null, editCellElement);
final CellSelection finalCS = cs;
dSColumnBasicDialog.addDialogActionListener(new CellElementDialogActionListenr(editCellElement) {
@Override
public void doOk() {
// 需要先行后列地增加新元素。
for (int j = 0; j < finalCS.getRowSpan(); j++) {
for (int i = 0; i < finalCS.getColumnSpan(); i++) {
int column = i + finalCS.getColumn();
int row = j + finalCS.getRow();
editCellElement = report.getTemplateCellElement(column, row);
if (editCellElement == null) {
editCellElement = DefaultThemedTemplateCellElementCase.createInstance(column, row);
report.addCellElement(editCellElement);
}
// update cell attributes
dsColumnBasicPane.update(editCellElement);
}
}
reportPane.fireTargetModified();
}
});
dSColumnBasicDialog.setVisible(true);
return false;
}
public static class CellElementDialogActionListenr extends DialogActionAdapter {
TemplateCellElement editCellElement;
public CellElementDialogActionListenr(TemplateCellElement editCellElement) {
this.editCellElement = editCellElement;
}
}
}