From 5d8d998af3079ef02d7e77d22a8d31be716fb912 Mon Sep 17 00:00:00 2001 From: Starryi Date: Fri, 30 Sep 2022 17:43:14 +0800 Subject: [PATCH] =?UTF-8?q?REPORT-81336=20FR11=E5=86=B3=E7=AD=96=E6=8A=A5?= =?UTF-8?q?=E8=A1=A8=E6=8A=A5=E8=A1=A8=E5=9D=97-=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E9=80=80=E5=87=BA=EF=BC=8C=E7=BC=96=E8=BE=91=E5=86=85=E5=AE=B9?= =?UTF-8?q?=E4=B8=A2=E5=A4=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【问题原因】 1. 将主题应用到模板上时,需要遍历模板对象查找颜色对象,以更新 其颜色。优化后的更新方案,使用了基于clone的值修改,即利用clone 方法遍历执行特征,在FineColor等类的clone方法内,修改返回值的颜 色值,使得Form.clone可以返回一个应用了主题色的新表单对象。 于是就需要使用新的表单对象更新模板,以及设计器界面。 2. 撤销回退时,因为撤销前后模板的主题可能会发生变化,所以需要应用 新主题到模板。所以撤销回退时,需要调用setTemplateTheme 3. BUG发生的直接原因是当主题应用到模板上时,仅仅更新了target, 没有更新报表块编辑界面内ElementCase对象,导致后续在报表块上的更新 保存在了一个无效的,与Target失去联系的ElementCase上了 4. 还有一个BUG: 报表块的撤销回退,没有更新Target,仅仅更新了 ElementCase,导致后续主题更新以及主题色更新时,新Target基于 旧Target产生,所以新Target中的ElementCase还是旧的ElementCase, 从而报表块内的撤销回退无效. 【改动思路】 1. 当编辑报表块时更新主题,需要更新报表块编辑界面内的ElementCase 2. 报表块撤销回退时,更新Target --- .../java/com/fr/design/mainframe/JForm.java | 63 ++++++++++++------- 1 file changed, 42 insertions(+), 21 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/mainframe/JForm.java b/designer-form/src/main/java/com/fr/design/mainframe/JForm.java index a142ee297..e3162e9ef 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/JForm.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/JForm.java @@ -704,8 +704,8 @@ public class JForm extends JTemplate implements BaseJForm implements BaseJForm implements BaseJForm