Browse Source

Pull request #9429: REPORT-75174 FR11新自适应-PC端自适应属性报表块选择自定义,报表块右侧Pc浏览器自适应设置项选择双向自适应,切换为新模式后,报表块变为不自动调整

Merge in DESIGN/design from ~KERRY/design_10.0:bugfix/11.0 to bugfix/11.0

* commit 'cdaa29cd4339bb0b33615a803425c5c84197f6fe':
  REPORT-75174 FR11新自适应-PC端自适应属性报表块选择自定义,报表块右侧Pc浏览器自适应设置项选择双向自适应,切换为新模式后,报表块变为不自动调整
bugfix/11.0
kerry 3 years ago
parent
commit
d61f5a96c5
  1. 24
      designer-form/src/main/java/com/fr/design/designer/creator/XCreatorUtils.java
  2. 10
      designer-form/src/main/java/com/fr/design/designer/creator/XElementCase.java
  3. 23
      designer-form/src/main/java/com/fr/design/fit/common/AdaptiveSwitchUtil.java

24
designer-form/src/main/java/com/fr/design/designer/creator/XCreatorUtils.java

@ -4,9 +4,6 @@
package com.fr.design.designer.creator;
import com.fr.base.chart.BaseChartCollection;
import com.fr.base.theme.FineColorFlushUtils;
import com.fr.base.theme.FineColorGather;
import com.fr.base.theme.FineColorManager;
import com.fr.base.theme.FineColorSynchronizer;
import com.fr.base.theme.FormTheme;
import com.fr.base.theme.TemplateTheme;
@ -82,6 +79,9 @@ import com.fr.plugin.injectable.PluginModule;
import com.fr.plugin.manage.PluginFilter;
import com.fr.plugin.observer.PluginEvent;
import com.fr.plugin.observer.PluginEventListener;
import com.fr.report.fit.FitProvider;
import com.fr.report.fit.ReportFitAttr;
import com.fr.report.fit.ReportFitConfig;
import com.fr.stable.StringUtils;
import com.fr.third.javax.annotation.Nonnull;
import java.util.Set;
@ -486,4 +486,22 @@ public class XCreatorUtils {
}
}
public static ReportFitAttr getElementCaseEditorReportFitAttr(ElementCaseEditor editor, FitProvider wbTpl) {
//这边获取到的全局要考虑到服务器的配置
ReportFitAttr fitAttr = wbTpl.getReportFitAttr() == null ? ReportFitConfig.getInstance().getFrmFitAttr() : wbTpl.getReportFitAttr();
return getElementCaseEditorReportFitAttr(editor, fitAttr);
}
public static ReportFitAttr getElementCaseEditorReportFitAttr(ElementCaseEditor editor, ReportFitAttr fitAttr) {
//兼容之前报表块(之前三个选项为:默认 横向 双向 现在是:横向 双向 不自适应)
if (editor.getFitStateInPC() == 0) {
editor.setReportFitAttr(null);
}
ReportFitAttr reportFit = editor.getReportFitAttr();
if (fitAttr != null) {
reportFit = fitAttr.fitInBrowser() ? editor.getReportFitAttr() : fitAttr;
}
return editor.getReportFitAttr() == null ? fitAttr : reportFit;
}
}

10
designer-form/src/main/java/com/fr/design/designer/creator/XElementCase.java

@ -131,15 +131,7 @@ public class XElementCase extends XBorderStyleWidgetCreator implements FormEleme
//这边获取到的全局要考虑到服务器的配置
ReportFitAttr fitAttr = wbTpl.getReportFitAttr() == null ? ReportFitConfig.getInstance().getFrmFitAttr() : wbTpl.getReportFitAttr();
ElementCaseEditor editor = this.toData();
//兼容之前报表块(之前三个选项为:默认 横向 双向 现在是:横向 双向 不自适应)
if (editor.getFitStateInPC() == 0) {
editor.setReportFitAttr(null);
}
ReportFitAttr reportFit = editor.getReportFitAttr();
if (fitAttr != null) {
reportFit = fitAttr.fitInBrowser() ? editor.getReportFitAttr() : fitAttr;
}
ReportFitAttr reportFitAttr = editor.getReportFitAttr() == null ? fitAttr : reportFit;
ReportFitAttr reportFitAttr = XCreatorUtils.getElementCaseEditorReportFitAttr(editor, fitAttr);
BrowserFitPropertyEditor browserFitPropertyEditor = new BrowserFitPropertyEditor();
CRPropertyDescriptor extraEditor = browserFitPropertyEditor.createPropertyDescriptor(this.data.getClass(), reportFitAttr);
if (editor.getReportFitAttr() == null) {

23
designer-form/src/main/java/com/fr/design/fit/common/AdaptiveSwitchUtil.java

@ -1,6 +1,7 @@
package com.fr.design.fit.common;
import com.fr.design.data.DesignTableDataManager;
import com.fr.design.designer.creator.XCreatorUtils;
import com.fr.design.fit.NewJForm;
import com.fr.design.mainframe.DesignerContext;
import com.fr.design.mainframe.JTemplate;
@ -11,6 +12,7 @@ import com.fr.file.MemFILE;
import com.fr.form.fit.NewFormMarkAttr;
import com.fr.form.main.Form;
import com.fr.form.main.WidgetGather;
import com.fr.form.ui.ElementCaseEditor;
import com.fr.form.ui.Widget;
import com.fr.form.ui.container.WAbsoluteBodyLayout;
import com.fr.form.ui.container.WAbsoluteLayout;
@ -94,15 +96,36 @@ public class AdaptiveSwitchUtil {
}
//如果是从旧的设计模板转化为新的设计模式,并且不是全局配置的模板。则更新新模板的Pc端自适应属性
if (newJForm.getTarget().getReportFitAttr() != null && newJForm.isNewJFrom()) {
//兼容处理老模式下报表块自适应属性设置为跟随报表整体自适应
compatibleProcessECReportFitAttr(newJForm.getTarget());
//修改自适应属性
newJForm.getTarget().setReportFitAttr(shiftReportFitAttr(oldForm, newJForm.getTarget().getReportFitAttr().isFitFont()));
//修改绝对布局中的缩放属性
processAbsoluteLayoutCompatible(newJForm.getTarget());
}
TemplateTool.saveForm(newJForm);
return newJForm;
}
private static void compatibleProcessECReportFitAttr(Form form) {
Form.traversalWidget(form.getContainer(), new WidgetGather() {
@Override
public void dealWith(Widget widget) {
ElementCaseEditor editor = (ElementCaseEditor) widget;
ReportFitAttr reportFitAttr = XCreatorUtils.getElementCaseEditorReportFitAttr(editor, form);
if (reportFitAttr.fitStateInPC() != 0) {
editor.setReportFitAttr(reportFitAttr);
}
}
@Override
public boolean dealWithAllCards() {
return true;
}
}, ElementCaseEditor.class);
}
private static void processAbsoluteLayoutCompatible(Form form) {
Form.traversalWidget(form.getContainer(), new WidgetGather() {

Loading…
Cancel
Save