diff --git a/designer-base/src/main/java/com/fr/design/actions/help/AboutPane.java b/designer-base/src/main/java/com/fr/design/actions/help/AboutPane.java
index 6158540888..dbb7798f3b 100644
--- a/designer-base/src/main/java/com/fr/design/actions/help/AboutPane.java
+++ b/designer-base/src/main/java/com/fr/design/actions/help/AboutPane.java
@@ -126,8 +126,8 @@ public class AboutPane extends JPanel {
if (GeneralContext.getLocale().equals(Locale.TAIWAN)) {
return;
}
- boxCenterAlignmentPane = new BoxCenterAligmentPane("QQ: " + CloudCenter.getInstance().acquireUrlByKind("help.qq"));
- contentPane.add(boxCenterAlignmentPane);
+ JPanel servicePlatformPane = getURLActionPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Service_Platform"), CloudCenter.getInstance().acquireUrlByKind("service.platform"));
+ contentPane.add(servicePlatformPane);
}
// 是否显示鸣谢面板
diff --git a/designer-base/src/main/java/com/fr/design/gui/ispinner/UISpinner.java b/designer-base/src/main/java/com/fr/design/gui/ispinner/UISpinner.java
index 18207011fe..a19db05060 100644
--- a/designer-base/src/main/java/com/fr/design/gui/ispinner/UISpinner.java
+++ b/designer-base/src/main/java/com/fr/design/gui/ispinner/UISpinner.java
@@ -321,6 +321,16 @@ public class UISpinner extends JPanel implements UIObserver, GlobalNameObserver
textField.setMaxValue(maxValue);
}
+ /**
+ * 设置最小值
+ *
+ * @param minValue 最小值
+ */
+ public void setMinValue(double minValue) {
+ this.minValue = minValue;
+ textField.setMinValue(minValue);
+ }
+
private void componentInitListeners() {
preButton.addActionListener(new ActionListener() {
@Override
diff --git a/designer-base/src/main/java/com/fr/design/mainframe/platform/ServicePlatformAction.java b/designer-base/src/main/java/com/fr/design/mainframe/platform/ServicePlatformAction.java
new file mode 100644
index 0000000000..7912354501
--- /dev/null
+++ b/designer-base/src/main/java/com/fr/design/mainframe/platform/ServicePlatformAction.java
@@ -0,0 +1,30 @@
+package com.fr.design.mainframe.platform;
+
+import com.fr.design.actions.UpdateAction;
+import com.fr.design.i18n.Toolkit;
+import com.fr.design.utils.BrowseUtils;
+import com.fr.general.CloudCenter;
+import com.fr.log.FineLoggerFactory;
+
+import java.awt.Desktop;
+import java.awt.event.ActionEvent;
+import java.net.URI;
+
+/**
+ * 帮助-服务平台
+ *
+ * @author Destiny.Lin
+ * @version 11.0
+ * created by Destiny.Lin on 2022-12-14
+ */
+public class ServicePlatformAction extends UpdateAction {
+ public ServicePlatformAction() {
+ this.setName(Toolkit.i18nText("Fine-Design_Basic_Service_Platform_Title"));
+ this.setSmallIcon("/com/fr/design/images/platform/platform");
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ BrowseUtils.browser(CloudCenter.getInstance().acquireUrlByKind("service.platform"));
+ }
+}
diff --git a/designer-base/src/main/java/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java b/designer-base/src/main/java/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java
index 904c281560..ba734af660 100644
--- a/designer-base/src/main/java/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java
+++ b/designer-base/src/main/java/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java
@@ -56,6 +56,7 @@ import com.fr.design.gui.itoolbar.UIToolbar;
import com.fr.design.locale.impl.SupportLocaleImpl;
import com.fr.design.mainframe.JTemplate;
import com.fr.design.mainframe.ToolBarNewTemplatePane;
+import com.fr.design.mainframe.platform.ServicePlatformAction;
import com.fr.design.menu.MenuDef;
import com.fr.design.menu.SeparatorDef;
import com.fr.design.menu.ShortCut;
@@ -571,9 +572,11 @@ public abstract class ToolBarMenuDock {
if (AlphaFineConfigManager.isALPHALicAvailable()) {
shortCuts.add(new AlphaFineAction());
}
-
+
shortCuts.add(new EnvDetectorAction());
-
+ //服务平台
+ shortCuts.add(new ServicePlatformAction());
+
shortCuts.add(SeparatorDef.DEFAULT);
if (DesignerEnvManager.getEnvManager().isOpenDebug()) {
OSSupportCenter.buildAction(objects -> shortCuts.add(new FineUIAction()), SupportOSImpl.FINEUI);
diff --git a/designer-base/src/main/resources/com/fr/design/images/platform/platform_normal.svg b/designer-base/src/main/resources/com/fr/design/images/platform/platform_normal.svg
new file mode 100644
index 0000000000..ab95e95f3c
--- /dev/null
+++ b/designer-base/src/main/resources/com/fr/design/images/platform/platform_normal.svg
@@ -0,0 +1,3 @@
+
diff --git a/designer-realize/src/main/java/com/fr/design/report/freeze/FreezeAndRepeatPane.java b/designer-realize/src/main/java/com/fr/design/report/freeze/FreezeAndRepeatPane.java
index c0af78bf06..cf32a24b65 100644
--- a/designer-realize/src/main/java/com/fr/design/report/freeze/FreezeAndRepeatPane.java
+++ b/designer-realize/src/main/java/com/fr/design/report/freeze/FreezeAndRepeatPane.java
@@ -32,14 +32,18 @@ public abstract class FreezeAndRepeatPane extends BasicBeanPane {
((UISpinner) start).addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
- if (end instanceof UISpinner) {
- ((UISpinner) end).setValue(Math.max(((UISpinner) start).getValue(), ((UISpinner) end).getValue()));
- }
+ updateEndValue();
}
});
}
if (end instanceof UISpinner) {
end.setPreferredSize(size);
+ ((UISpinner) end).addChangeListener(new ChangeListener() {
+ @Override
+ public void stateChanged(ChangeEvent e) {
+ updateEndValue();
+ }
+ });
}
this.setLayout(FRGUIPaneFactory.createBoxFlowLayout());
this.add(start);
@@ -81,4 +85,12 @@ public abstract class FreezeAndRepeatPane extends BasicBeanPane {
}
}
+
+ private void updateEndValue() {
+ if (end instanceof UISpinner) {
+ ((UISpinner) end).setMinValue(((UISpinner) start).getValue());
+ ((UISpinner) end).setValue(((UISpinner) end).getValue());
+
+ }
+ }
}
\ No newline at end of file
diff --git a/designer-realize/src/main/java/com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java b/designer-realize/src/main/java/com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java
index 11a3aba60c..be7606a22d 100644
--- a/designer-realize/src/main/java/com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java
+++ b/designer-realize/src/main/java/com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java
@@ -242,6 +242,7 @@ public class RepeatAndFreezeSettingPane extends BasicPane {
JPanel pagePanel = new JPanel(FRGUIPaneFactory.createBorderLayout());
JPanel repeatHeadPanel = FRGUIPaneFactory.createNColumnGridInnerContainer_S_Pane(1);
JPanel repeatFootPanel = FRGUIPaneFactory.createNColumnGridInnerContainer_S_Pane(1);
+ tabbedPane = new UITabbedPane();
//添加上方的边界线
addBorder(repeatHeadPanel, REPEAT_AND_FROZEN_HEAD);
@@ -268,14 +269,12 @@ public class RepeatAndFreezeSettingPane extends BasicPane {
outfreezePanel.add(initPageFrozenPane(), BorderLayout.NORTH);
outfreezePanel.add(initPageFrozenFootPane(),BorderLayout.CENTER);
+ tabbedPane.addTab(Toolkit.i18nText("Fine-Design_Basic_M_Page_Preview"), pagePanel);
JPanel writePanel = FRGUIPaneFactory.createTitledBorderPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Engine_Frozen"));
addWriteFrozen(writePanel);
- tabbedPane = new UITabbedPane();
//去除对应的焦点虚线边框
tabbedPane.setFocusable(false);
- tabbedPane.addTab(Toolkit.i18nText("Fine-Design_Basic_M_Page_Preview"), pagePanel);
- tabbedPane.addTab(Toolkit.i18nText("Fine-Design_Basic_M_Write_Preview"), writePanel);
this.add(tabbedPane);
initPageRwoListener();
initPageColListener();
@@ -322,6 +321,7 @@ public class RepeatAndFreezeSettingPane extends BasicPane {
protected void addWriteFrozen(JPanel freezePanel) {
freezePanel.add(initWriteFrozenPane(), BorderLayout.CENTER);
+ tabbedPane.addTab(Toolkit.i18nText("Fine-Design_Basic_M_Write_Preview"), freezePanel);
}
protected void addFootColStart(JPanel repeatPanel) {
@@ -509,7 +509,7 @@ public class RepeatAndFreezeSettingPane extends BasicPane {
}
this.usePageHeadFrozenRCheckBox.setSelected(attribute.isUsePageFrozenRow());
- this.usePageFootFrozenRCheckBox.setSelected(attribute.isUsePageFrozenRow());
+ this.usePageFootFrozenRCheckBox.setSelected(attribute.isUsePageFootRowFrozen());
this.freezePageRowPane.setEnabled(attribute.isUsePageFrozenRow());
}
@@ -536,7 +536,7 @@ public class RepeatAndFreezeSettingPane extends BasicPane {
}
this.usePageHeadFrozenCCheckBox.setSelected(attribute.isUsePageFrozenColumn());
- this.usePageFootFrozenCCheckBox.setSelected(attribute.isUsePageFrozenColumn());
+ this.usePageFootFrozenCCheckBox.setSelected(attribute.isUsePageFootColFrozen());
this.freezePageColPane.setEnabled(attribute.isUsePageFrozenColumn());
}
diff --git a/designer-realize/src/main/java/com/fr/start/MainDesigner.java b/designer-realize/src/main/java/com/fr/start/MainDesigner.java
index 02116dc41c..d90ceb0556 100644
--- a/designer-realize/src/main/java/com/fr/start/MainDesigner.java
+++ b/designer-realize/src/main/java/com/fr/start/MainDesigner.java
@@ -368,7 +368,7 @@ public class MainDesigner extends BaseDesigner {
@Override
protected void upButtonClickEvent() {
JTemplate, ?> jt = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate();
- if (jt == null) {
+ if (jt == null || jt.isSaving()) {
return;
}
WebPreviewUtils.preview(jt);