|
|
|
@ -3,6 +3,8 @@
|
|
|
|
|
*/ |
|
|
|
|
package com.fr.design.mainframe.form; |
|
|
|
|
|
|
|
|
|
import com.fr.base.DynamicUnitList; |
|
|
|
|
import com.fr.base.GraphHelper; |
|
|
|
|
import com.fr.base.vcs.DesignerMode; |
|
|
|
|
import com.fr.design.DesignState; |
|
|
|
|
import com.fr.design.actions.AllowAuthorityEditAction; |
|
|
|
@ -31,13 +33,18 @@ import com.fr.design.selection.SelectionListener;
|
|
|
|
|
import com.fr.form.FormElementCaseProvider; |
|
|
|
|
import com.fr.form.main.Form; |
|
|
|
|
import com.fr.grid.Grid; |
|
|
|
|
import com.fr.grid.GridUtils; |
|
|
|
|
import com.fr.grid.selection.CellSelection; |
|
|
|
|
import com.fr.grid.selection.Selection; |
|
|
|
|
import com.fr.log.FineLoggerFactory; |
|
|
|
|
import com.fr.report.ReportHelper; |
|
|
|
|
import com.fr.report.cell.CellElement; |
|
|
|
|
import com.fr.report.elementcase.ElementCase; |
|
|
|
|
import com.fr.report.elementcase.TemplateElementCase; |
|
|
|
|
import com.fr.report.worksheet.FormElementCase; |
|
|
|
|
import com.fr.report.worksheet.WorkSheet; |
|
|
|
|
import com.fr.stable.ColumnRow; |
|
|
|
|
import com.fr.stable.Constants; |
|
|
|
|
|
|
|
|
|
import javax.swing.JComponent; |
|
|
|
|
import javax.swing.JPanel; |
|
|
|
@ -122,16 +129,23 @@ public class FormElementCaseDesigner
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 获取当前ElementCase的缩略图 |
|
|
|
|
* 获取当前ElementCase的缩略图, 缩略图中包含所有有内容的单元格 |
|
|
|
|
* |
|
|
|
|
* @param size 缩略图的大小 |
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
public BufferedImage getElementCaseImage(Dimension size) { |
|
|
|
|
Grid grid = this.elementCasePane != null ? this.elementCasePane.getGrid() : null; |
|
|
|
|
if (grid == null) { |
|
|
|
|
return new BufferedImage(0, 0, BufferedImage.TYPE_INT_RGB); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
resetGrid(grid); |
|
|
|
|
|
|
|
|
|
BufferedImage image = null; |
|
|
|
|
try { |
|
|
|
|
int width = size.width; |
|
|
|
|
int height = size.height; |
|
|
|
|
int width = Math.max(grid.getWidth(), size.width); |
|
|
|
|
int height = Math.max(grid.getHeight(), size.width); |
|
|
|
|
|
|
|
|
|
// 使用TYPE_INT_RGB和new Color(255, 255, 255, 1)设置有透明背景buffer image,
|
|
|
|
|
// 使得创建出来的透明像素是(255, 255, 255, 1),而不是(0, 0, 0, 0)
|
|
|
|
@ -147,19 +161,16 @@ public class FormElementCaseDesigner
|
|
|
|
|
// 使得创建出来的透明像素是(255, 255, 255, 1),而不是(0, 0, 0, 0)
|
|
|
|
|
// 这样不支持透明通道缩略图的旧设计器打开新设计器创建的模版时,就不会创建出拥有黑色背景的缩略图
|
|
|
|
|
g2d.setColor(new Color(255, 255, 255, 1)); |
|
|
|
|
g2d.fillRect(0, 0, (int) size.getWidth(), (int) size.getHeight()); |
|
|
|
|
|
|
|
|
|
Grid grid = this.elementCasePane != null ? this.elementCasePane.getGrid() : null; |
|
|
|
|
if (grid != null) { |
|
|
|
|
boolean oldTranslucent = grid.isTranslucent(); |
|
|
|
|
boolean oldShowExtraGridLine = grid.isShowExtraGridLine(); |
|
|
|
|
// 截缩图图时grid需支持半透明,不能用默认白色填充画布,否则会遮挡组件样式背景
|
|
|
|
|
grid.setTranslucent(true); |
|
|
|
|
grid.setShowExtraGridLine(false); |
|
|
|
|
grid.paint(g2d); |
|
|
|
|
grid.setTranslucent(oldTranslucent); |
|
|
|
|
grid.setShowExtraGridLine(oldShowExtraGridLine); |
|
|
|
|
} |
|
|
|
|
g2d.fillRect(0, 0, width, height); |
|
|
|
|
|
|
|
|
|
boolean oldTranslucent = grid.isTranslucent(); |
|
|
|
|
boolean oldShowExtraGridLine = grid.isShowExtraGridLine(); |
|
|
|
|
// 截缩图图时grid需支持半透明,不能用默认白色填充画布,否则会遮挡组件样式背景
|
|
|
|
|
grid.setTranslucent(true); |
|
|
|
|
grid.setShowExtraGridLine(false); |
|
|
|
|
grid.paint(g2d); |
|
|
|
|
grid.setTranslucent(oldTranslucent); |
|
|
|
|
grid.setShowExtraGridLine(oldShowExtraGridLine); |
|
|
|
|
|
|
|
|
|
} catch (Exception e) { |
|
|
|
|
FineLoggerFactory.getLogger().error(e.getMessage(), e); |
|
|
|
@ -168,6 +179,33 @@ public class FormElementCaseDesigner
|
|
|
|
|
return image; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void resetGrid(Grid grid) { |
|
|
|
|
grid.setVerticalValue(0); |
|
|
|
|
grid.setHorizontalValue(0); |
|
|
|
|
|
|
|
|
|
FormElementCasePaneDelegate reportPane = getEditingElementCasePane(); |
|
|
|
|
ColumnRow lastColumnRow = GridUtils.getAdjustLastColumnRowOfReportPane(reportPane); |
|
|
|
|
|
|
|
|
|
int lastColumn = lastColumnRow.getColumn(); |
|
|
|
|
int lastRow = lastColumnRow.getRow(); |
|
|
|
|
|
|
|
|
|
grid.setVerticalExtent(lastRow); |
|
|
|
|
grid.setHorizontalExtent(lastColumn); |
|
|
|
|
|
|
|
|
|
ElementCase report = reportPane.getEditingElementCase(); |
|
|
|
|
DynamicUnitList rowHeightList = ReportHelper.getRowHeightList(report); |
|
|
|
|
DynamicUnitList columnWidthList = ReportHelper.getColumnWidthList(report); |
|
|
|
|
|
|
|
|
|
int resolution = grid.getResolution(); |
|
|
|
|
int width = columnWidthList.getRangeValueFromZero(lastColumn).toPixI(resolution); |
|
|
|
|
int height = rowHeightList.getRangeValueFromZero(lastRow).toPixI(resolution); |
|
|
|
|
|
|
|
|
|
int gridLineWidth = GraphHelper.getLineStyleSize(Constants.LINE_THIN); |
|
|
|
|
grid.setSize(width + gridLineWidth, height + gridLineWidth); |
|
|
|
|
|
|
|
|
|
grid.updateUI(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 刷新右侧属性面板 |
|
|
|
|
*/ |
|
|
|
|