帆软报表设计器源代码。
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.
 
 
 
 

152 lines
5.0 KiB

/*
* Copyright(c) 2001-2010, FineReport Inc, All Rights Reserved.
*/
package com.fr.poly.creator;
import java.awt.Dimension;
import com.fr.base.BaseUtils;
import com.fr.base.ScreenResolution;
import com.fr.design.constants.UIConstants;
import com.fr.design.event.TargetModifiedEvent;
import com.fr.design.event.TargetModifiedListener;
import com.fr.design.file.HistoryTemplateListPane;
import com.fr.design.mainframe.CellElementPropertyPane;
import com.fr.design.mainframe.DesignerContext;
import com.fr.design.mainframe.EastRegionContainerPane;
import com.fr.design.mainframe.JTemplate;
import com.fr.design.mainframe.cell.QuickEditorRegion;
import com.fr.grid.GridUtils;
import com.fr.poly.PolyConstants;
import com.fr.poly.PolyDesigner;
import com.fr.poly.PolyDesigner.SelectionType;
import com.fr.poly.hanlder.ColumnOperationMouseHandler;
import com.fr.poly.hanlder.RowOperationMouseHandler;
import com.fr.report.poly.PolyECBlock;
import com.fr.stable.unit.UNITConstants;
import com.fr.stable.unit.UnitRectangle;
/**
* @author richer
* @since 6.5.4 创建于2011-5-5 单元格类型的聚合块编辑器
*/
public class ECBlockEditor extends BlockEditor<ECBlockPane, PolyECBlock> {
private static final int HEIGHT_MORE = 5;
public ECBlockEditor(PolyDesigner designer, ECBlockCreator creator) {
super(designer, creator);
}
@Override
protected void initDataChangeListener() {
editComponent.addTargetModifiedListener(new TargetModifiedListener() {
@Override
public void targetModified(TargetModifiedEvent e) {
designer.fireTargetModified();
}
});
}
/**
* 获取当前编辑的组件
*
* @return 聚合报表组件
*
*
* @date 2014-11-24-下午3:49:12
*
*/
public ECBlockPane createEffective() {
PolyECBlock pcb = creator.getValue();
if (editComponent == null) {
editComponent = new ECBlockPane(designer, pcb, this);
}
if (DesignerContext.getFormatState() == DesignerContext.FORMAT_STATE_NULL) {
editComponent.getGrid().setCursor(UIConstants.CELL_DEFAULT_CURSOR);
}
return editComponent;
}
@Override
protected void initSize() {
resolution = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().getJTemplateResolution();
if (resolution == 0){
resolution = ScreenResolution.getScreenResolution();
}
Dimension cornerSize = getCornerSize();
PolyECBlock block = getValue();
UnitRectangle ub = block.getBounds();
int x = ub.x.toPixI(resolution) - cornerSize.width - designer.getHorizontalValue();
int y = ub.y.toPixI(resolution) - cornerSize.height - designer.getVerticalValue();
int w = ub.width.toPixI(resolution) + cornerSize.width + PolyConstants.OPERATION_SIZE
+ UNITConstants.DELTA.toPixI(resolution);
int h = ub.height.toPixI(resolution) + cornerSize.height + PolyConstants.OPERATION_SIZE
+ UNITConstants.DELTA.toPixI(resolution);
setBounds(x, y, w, h);
editComponent.getGrid().setVerticalExtent(
GridUtils.getExtentValue(0, block.getRowHeightList_DEC(), editComponent.getGrid().getHeight(),
resolution));
editComponent.getGrid().setHorizontalExtent(
GridUtils.getExtentValue(0, block.getColumnWidthList_DEC(), editComponent.getGrid().getWidth(),
resolution));
}
public void setBounds(int x, int y, int width, int height) {
int selfheight = height + HEIGHT_MORE;
super.setBounds(x, y, width, selfheight);
}
@Override
protected Dimension getAddHeigthPreferredSize() {
Dimension cornerSize = getCornerSize();
cornerSize.height = PolyConstants.OPERATION_SIZE;
return cornerSize;
}
@Override
protected Dimension getAddWidthPreferredSize() {
Dimension cornerSize = getCornerSize();
cornerSize.width = PolyConstants.OPERATION_SIZE;
return cornerSize;
}
@Override
protected RowOperationMouseHandler createRowOperationMouseHandler() {
return new RowOperationMouseHandler.ECBlockRowOperationMouseHandler(designer, this);
}
@Override
protected ColumnOperationMouseHandler createColumnOperationMouseHandler() {
return new ColumnOperationMouseHandler.ECBlockColumnOperationMouseHandler(designer, this);
}
@Override
public Dimension getCornerSize() {
return editComponent.getCornerSize();
}
/**
* 重置当前的选择状态, 用于更新右侧属性表
*
*
* @date 2014-11-24-下午3:48:19
*
*/
public void resetSelectionAndChooseState() {
designer.setChooseType(SelectionType.INNER);
if (BaseUtils.isAuthorityEditing()) {
JTemplate jTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate();
if (jTemplate.isJWorkBook()) {
//清参数面板
jTemplate.removeParameterPaneSelection();
}
designer.noAuthorityEdit();
return;
}
QuickEditorRegion.getInstance().populate(editComponent.getCurrentEditor());
CellElementPropertyPane.getInstance().populate(editComponent);
EastRegionContainerPane.getInstance().replaceCellAttrPane(CellElementPropertyPane.getInstance());
}
}