Browse Source
* commit '73a96ffffd0c02f43a8962de81d43d13401c2e5a': (21 commits) REPORT-80583 多结果数据集预览要弹参数面板 REPORT-80491 linux设计器调用系统文件夹,设计器闪退 REPORT-80583 多数据集预览参数设置 REPORT-80922 远程设计下存储过程结果加载状态NPE REPORT-79767 格式刷复制背景颜色-设计器显示与预览颜色不同 REPORT-80511 启始页启动速度优化 1-记录时间不准,要从头开始记录 2-去掉预热的影响,对直接启动的客户不友好 3-不去每次都读图片,在等待时候,IO 频率极高。 Revert "REPORT-70593 图片控件合并主代码" REPORT-79934 新建模板的A0单元格样式与模板主题的默认单元格样式不一致 REPORT-79909 补充注释 重构getFileNameIndex REPORT-79909 设计器启动失败,有模板名称叫WorkBook88888888888888.cpt导致 REPORT-79909 设计器启动失败,有模板名称叫WorkBook88888888888888.cpt导致 REPORT-79111 数据集分组插件-安装之后,复制决策报表的报表块,数据查询无法一起复制 【问题原因】粘贴的逻辑里将BasicTableDataTreePane强转成了TableDataTreePane,导致插件里实现的BasicTableDataTreePane的子类对象强转失败报错 【改动思路】删掉强转的逻辑,后续的调用也均为抽象类中的抽象方法,可以保证不影响插件 【review建议】 REPORT-70593 图片控件仅决策报表使用,挪个位置 Revert "REPORT-70593 图片控件仅决策报表使用,挪个位置" REPORT-70593 图片控件仅决策报表使用,挪个位置 REPORT-79344【运营产品化二期】埋点暂不生效 1、release提交一份 REPORT-70593 图片控件设计器插件,原插件禁用。方案参考https://kms.fineres.com/pages/viewpage.action?pageId=457117391 REPORT-79345 【冒烟】切换远程,日志刷报错write failed REPORT-77649 feat:fvs图表超链界面populate不refresh超链类型,ps:refresh应该都没有必要 先只改fvs ...fix-lag
superman
2 years ago
20 changed files with 311 additions and 76 deletions
@ -0,0 +1,99 @@ |
|||||||
|
package com.fr.design.mainframe.theme.utils; |
||||||
|
|
||||||
|
import com.fr.base.CloneTransformer; |
||||||
|
import com.fr.base.NameStyle; |
||||||
|
import com.fr.base.Style; |
||||||
|
import com.fr.base.theme.FineColorSynchronizer; |
||||||
|
import com.fr.base.theme.TemplateTheme; |
||||||
|
import com.fr.base.theme.settings.ThemedCellStyle; |
||||||
|
import com.fr.design.file.HistoryTemplateListCache; |
||||||
|
import com.fr.design.mainframe.JTemplate; |
||||||
|
import com.fr.log.FineLoggerFactory; |
||||||
|
import com.fr.report.cell.TemplateCellElement; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Starryi |
||||||
|
* @version 1.0 |
||||||
|
* Created by Starryi on 2022/9/21 |
||||||
|
* |
||||||
|
* 如果粘贴到的模板主题单元格样式与复制过来的主题单元格样式不同,那么需要转换复制过来的主题单元格样式为自定义样式,以保持被复制的样式。 |
||||||
|
* 转换非主题单元格样式内的主题色,以及单元格内的其他主题色,为自定义色 |
||||||
|
*/ |
||||||
|
public class CellElementStylePaster { |
||||||
|
|
||||||
|
/** |
||||||
|
* 为没有实现FCloneable接口的类而抽象出的clone方法包装接口, |
||||||
|
* 使用者需要实现此接口方法,调用真正的clone方法. |
||||||
|
* @param <T> |
||||||
|
*/ |
||||||
|
private interface CloneExecutor<T> { |
||||||
|
T clone(T o) throws Exception; |
||||||
|
} |
||||||
|
private static boolean needConvertThemedStyleToCustomStyle(NameStyle nameStyle) { |
||||||
|
JTemplate<?, ?> template = HistoryTemplateListCache.getInstance().getCurrentOpeningOrEditingTemplate(); |
||||||
|
if (template != null) { |
||||||
|
TemplateTheme theme = template.getTemplateTheme(); |
||||||
|
if (theme != null) { |
||||||
|
ThemedCellStyle themedCellStyle = theme.getCellStyleList().find(nameStyle.getName()); |
||||||
|
return !nameStyle.getRealStyle().equals(themedCellStyle.getStyle()); |
||||||
|
} |
||||||
|
} |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
private static <T> T convertThemedColorToCustomColor(T o, CloneExecutor<T> executor) { |
||||||
|
CloneTransformer.setTransformer(new FineColorSynchronizer.FineColorTransformer(fineColor -> { |
||||||
|
fineColor.setHor(-1); |
||||||
|
fineColor.setVer(-1); |
||||||
|
})); |
||||||
|
|
||||||
|
Object cloned = null; |
||||||
|
try { |
||||||
|
cloned = executor.clone(o); |
||||||
|
} catch (Exception e) { |
||||||
|
FineLoggerFactory.getLogger().error(e.getMessage(), e); |
||||||
|
} |
||||||
|
|
||||||
|
CloneTransformer.clearTransformer(); |
||||||
|
return (T) cloned; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* |
||||||
|
* @param cellElement 粘贴到的单元格 |
||||||
|
* @return |
||||||
|
* 如果粘贴到的模板主题单元格样式与复制过来的主题单元格样式不同,那么需要转换复制过来的主题单元格样式为自定义样式,以保持被复制的样式。 |
||||||
|
* 转换非主题单元格样式内的主题色,以及单元格内的其他主题色,为自定义色 |
||||||
|
*/ |
||||||
|
public static TemplateCellElement convertStyleAndColor(TemplateCellElement cellElement) { |
||||||
|
Style backupStyle = cellElement.getStyle(); |
||||||
|
cellElement = convertThemedColorToCustomColor(cellElement, o -> (TemplateCellElement) o.clone()); |
||||||
|
|
||||||
|
Style style = convertStyleAndColor(backupStyle); |
||||||
|
cellElement.setStyle(style); |
||||||
|
|
||||||
|
return cellElement; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* |
||||||
|
* @param style |
||||||
|
* @return |
||||||
|
* 如果粘贴到的模板主题单元格样式与复制过来的主题单元格样式不同,那么需要转换复制过来的主题单元格样式为自定义样式,以保持被复制的样式。 |
||||||
|
* 转换非主题单元格样式内的主题色 |
||||||
|
*/ |
||||||
|
public static Style convertStyleAndColor(Style style) { |
||||||
|
if (style instanceof NameStyle) { |
||||||
|
NameStyle nameStyle = (NameStyle) style; |
||||||
|
if (needConvertThemedStyleToCustomStyle(nameStyle)) { |
||||||
|
style = nameStyle.getRealStyle(); |
||||||
|
} |
||||||
|
} |
||||||
|
if (!(style instanceof NameStyle)) { |
||||||
|
style = convertThemedColorToCustomColor(style, o -> (Style) o.clone()); |
||||||
|
} |
||||||
|
|
||||||
|
return style; |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue