diff --git a/designer-base/src/main/java/com/fr/design/data/tabledata/tabledatapane/DBTableDataPane.java b/designer-base/src/main/java/com/fr/design/data/tabledata/tabledatapane/DBTableDataPane.java index ed2417449c..4a0d1f665e 100644 --- a/designer-base/src/main/java/com/fr/design/data/tabledata/tabledatapane/DBTableDataPane.java +++ b/designer-base/src/main/java/com/fr/design/data/tabledata/tabledatapane/DBTableDataPane.java @@ -61,6 +61,7 @@ import com.fr.stable.ArrayUtils; import com.fr.stable.ParameterProvider; import com.fr.stable.StringUtils; import com.fr.workspace.WorkContext; +import org.jetbrains.annotations.NotNull; import javax.swing.BorderFactory; import javax.swing.Box; @@ -416,10 +417,7 @@ public class DBTableDataPane extends AbstractTableDataPane implemen } private void checkParameter() { - String[] paramTexts = new String[2]; - paramTexts[0] = SqlUtils.clearSqlComments(this.sqlTextPane.getText()); - paramTexts[1] = SqlUtils.clearSqlComments(this.pageQuery); - Parameter[] parameters = ParameterHelper.analyze4Parameters(paramTexts, false); + Parameter[] parameters = getParameters(); if (parameters.length < 1 && this.editorPane.update().size() < 1) { return; @@ -443,6 +441,14 @@ public class DBTableDataPane extends AbstractTableDataPane implemen refreshParameters(); } + @NotNull + private Parameter[] getParameters() { + String[] paramTexts = new String[2]; + paramTexts[0] = SqlUtils.clearSqlComments(this.sqlTextPane.getText()); + paramTexts[1] = SqlUtils.clearSqlComments(this.pageQuery); + return ParameterHelper.analyze4Parameters(paramTexts, false); + } + @Override public void populateBean(DBTableData dbTableData) { this.dbTableData = dbTableData; diff --git a/designer-base/src/main/java/com/fr/design/lock/LockFileReSaveEnum.java b/designer-base/src/main/java/com/fr/design/lock/LockFileReSaveEnum.java new file mode 100644 index 0000000000..3feeb0a0b5 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/lock/LockFileReSaveEnum.java @@ -0,0 +1,64 @@ +package com.fr.design.lock; + +import com.fr.design.file.HistoryTemplateListCache; +import com.fr.design.file.TemplateTreePane; +import com.fr.design.i18n.Toolkit; +import com.fr.design.mainframe.JTemplate; +import com.fr.design.utils.TemplateUtils; +import com.fr.file.FileNodeFILE; +import com.fr.file.filetree.FileNode; +import com.fr.stable.StableUtils; +import com.fr.stable.project.ProjectConstants; + +/** + * 被锁住的文件重新保存副本时的处理枚举类 + * + * @author Roger + * @since 11.0 + * Created on 2023/12/21 + */ +public enum LockFileReSaveEnum { + + /** + * 保存目录树里面的模板副本 + */ + TEMPLATE_TREE() { + @Override + public void action() { + FileNode node = TemplateTreePane.getInstance().getFileNode(); + if (node == null) { + return; + } + final String selectedFilePath = StableUtils.pathJoin(ProjectConstants.REPORTLETS_NAME, TemplateTreePane.getInstance().getFilePath()); + TemplateUtils.createAndReOpenTemplate( + Toolkit.i18nText("Fine_Design_Template_Lock_Copy"), + new FileNodeFILE(new FileNode(selectedFilePath, false)), + false, + true); + } + }, + + /** + * 保存设计器里面已经打开的模板副本 + */ + HISTORY_TEMPLATE_CACHE() { + @Override + public void action() { + JTemplate template = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); + if (JTemplate.isValid(template)) { + TemplateUtils.createAndOpenTemplate( + Toolkit.i18nText("Fine_Design_Template_Backup"), + new FileNodeFILE(new FileNode(template.getPath(), false)), + true, + true, + //另存之后需要关闭的模板 + template); + } + } + }; + + /** + * 如何保存模板副本 + */ + public abstract void action(); +} diff --git a/designer-base/src/main/java/com/fr/design/lock/LockInfoDialog.java b/designer-base/src/main/java/com/fr/design/lock/LockInfoDialog.java index 44c95c44c2..c183dac2e9 100644 --- a/designer-base/src/main/java/com/fr/design/lock/LockInfoDialog.java +++ b/designer-base/src/main/java/com/fr/design/lock/LockInfoDialog.java @@ -8,15 +8,14 @@ import com.fr.design.i18n.Toolkit; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerFrameFileDealerPane; -import com.fr.design.utils.TemplateUtils; import com.fr.design.utils.gui.GUICoreUtils; -import com.fr.file.FileNodeFILE; -import com.fr.file.filetree.FileNode; import com.fr.general.IOUtils; -import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; -import com.fr.stable.project.ProjectConstants; import com.fr.workspace.base.UserInfo; + +import javax.swing.BorderFactory; +import javax.swing.JDialog; +import javax.swing.JPanel; import java.awt.BorderLayout; import java.awt.Color; import java.awt.FlowLayout; @@ -24,9 +23,6 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import javax.swing.BorderFactory; -import javax.swing.JDialog; -import javax.swing.JPanel; /** * @author hades @@ -37,8 +33,11 @@ public class LockInfoDialog extends JDialog { private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm"); - public LockInfoDialog(UserInfo userInfo) { + private final LockFileReSaveEnum saveEnum; + + public LockInfoDialog(UserInfo userInfo, LockFileReSaveEnum saveEnum) { super(DesignerContext.getDesignerFrame()); + this.saveEnum = saveEnum; JPanel panel = new JPanel(new BorderLayout()); panel.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 0)); panel.add(createContentPane(userInfo), BorderLayout.CENTER); @@ -94,16 +93,7 @@ public class LockInfoDialog extends JDialog { @Override public void actionPerformed(ActionEvent e) { dispose(); - FileNode node = TemplateTreePane.getInstance().getFileNode(); - if (node == null) { - return; - } - final String selectedFilePath = StableUtils.pathJoin(ProjectConstants.REPORTLETS_NAME, TemplateTreePane.getInstance().getFilePath()); - TemplateUtils.createAndReOpenTemplate( - Toolkit.i18nText("Fine_Design_Template_Lock_Copy"), - new FileNodeFILE(new FileNode(selectedFilePath, false)), - false, - true); + saveEnum.action(); } }); cancelButton.addActionListener(new ActionListener() { @@ -118,9 +108,25 @@ public class LockInfoDialog extends JDialog { } + /** + * 显示模板被人锁住了的弹窗信息 + * + * @param userInfo 拥有锁的用户信息 + */ public static void show(UserInfo userInfo) { DesignerFrameFileDealerPane.getInstance().refreshRightToolBarBy(TemplateTreePane.getInstance().getFileNode()); - new LockInfoDialog(userInfo); + new LockInfoDialog(userInfo, LockFileReSaveEnum.TEMPLATE_TREE); + } + + /** + * 显示模板被人锁住了的弹窗信息,并以指定方式保存副本模板 + * + * @param userInfo 拥有锁的用户信息 + * @param saveEnum 指定保存副本模板的处理方式 + */ + public static void show(UserInfo userInfo, LockFileReSaveEnum saveEnum) { + DesignerFrameFileDealerPane.getInstance().refreshRightToolBarBy(TemplateTreePane.getInstance().getFileNode()); + new LockInfoDialog(userInfo, saveEnum); } } diff --git a/designer-base/src/main/java/com/fr/design/worker/save/SaveFailureHandler.java b/designer-base/src/main/java/com/fr/design/worker/save/SaveFailureHandler.java index 458ead48a1..bf6209cf6b 100644 --- a/designer-base/src/main/java/com/fr/design/worker/save/SaveFailureHandler.java +++ b/designer-base/src/main/java/com/fr/design/worker/save/SaveFailureHandler.java @@ -2,21 +2,17 @@ package com.fr.design.worker.save; import com.fr.common.exception.ThrowableHandler; import com.fr.design.dialog.FineJOptionPane; -import com.fr.design.file.HistoryTemplateListCache; import com.fr.design.i18n.Toolkit; +import com.fr.design.lock.LockFileReSaveEnum; import com.fr.design.lock.LockInfoDialog; import com.fr.design.mainframe.DesignerContext; -import com.fr.design.mainframe.JTemplate; import com.fr.design.ui.util.UIUtil; -import com.fr.design.utils.TemplateUtils; -import com.fr.file.FileNodeFILE; -import com.fr.file.filetree.FileNode; import com.fr.general.IOUtils; +import com.fr.report.InconsistentLockException; import com.fr.report.LockedException; import com.fr.report.UnLockedException; import com.fr.workspace.base.UserInfo; import com.fr.workspace.exception.DiskSpaceFullException; -import com.fr.report.InconsistentLockException; import java.awt.Frame; import javax.swing.JOptionPane; @@ -104,7 +100,7 @@ public class SaveFailureHandler implements ThrowableHandler { } if (exception != null) { UserInfo userInfo = exception.getUserInfo(); - LockInfoDialog.show(userInfo); + LockInfoDialog.show(userInfo, LockFileReSaveEnum.HISTORY_TEMPLATE_CACHE); return true; } return false; @@ -134,16 +130,7 @@ public class SaveFailureHandler implements ThrowableHandler { IOUtils.readIcon("/com/fr/design/images/warnings/warning32.png"), new Object[] {Toolkit.i18nText("Fine_Design_Template_SaveAs_Backup"), Toolkit.i18nText("Fine-Design_Basic_Button_Cancel")}, null); if (option == JOptionPane.YES_OPTION) { - JTemplate template = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); - if (JTemplate.isValid(template)) { - TemplateUtils.createAndOpenTemplate( - Toolkit.i18nText("Fine_Design_Template_Backup"), - new FileNodeFILE(new FileNode(template.getPath(), false)), - true, - true, - //另存之后需要关闭的模板 - template); - } + LockFileReSaveEnum.HISTORY_TEMPLATE_CACHE.action(); } } @@ -156,16 +143,7 @@ public class SaveFailureHandler implements ThrowableHandler { IOUtils.readIcon("/com/fr/design/images/warnings/warning32.png"), new Object[] {Toolkit.i18nText("Fine_Design_Template_SaveAs_Backup"), Toolkit.i18nText("Fine-Design_Basic_Button_Cancel")}, null); if (option == JOptionPane.YES_OPTION) { - JTemplate template = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); - if (JTemplate.isValid(template)) { - TemplateUtils.createAndOpenTemplate( - Toolkit.i18nText("Fine_Design_Template_Backup"), - new FileNodeFILE(new FileNode(template.getPath(), false)), - true, - true, - //另存之后需要关闭的模板 - template); - } + LockFileReSaveEnum.HISTORY_TEMPLATE_CACHE.action(); } } diff --git a/designer-base/src/main/java/com/fr/widgettheme/theme/edit/widget/DesktopWidgetStyleEditPane.java b/designer-base/src/main/java/com/fr/widgettheme/theme/edit/widget/DesktopWidgetStyleEditPane.java index 7cfebf316a..aca4b690de 100644 --- a/designer-base/src/main/java/com/fr/widgettheme/theme/edit/widget/DesktopWidgetStyleEditPane.java +++ b/designer-base/src/main/java/com/fr/widgettheme/theme/edit/widget/DesktopWidgetStyleEditPane.java @@ -5,12 +5,14 @@ import com.fr.base.theme.TemplateTheme; import com.fr.design.style.color.NewColorSelectBox; import com.fr.widgettheme.theme.widget.style.BorderStyle; import com.fr.widgettheme.theme.widget.style.ButtonBackgroundStyle; +import com.fr.widgettheme.theme.widget.style.ThemeTextStyle; import com.fr.widgettheme.theme.widget.style.ThemedWidgetStyle; import com.fr.design.gui.ibutton.UIRadioButton; import com.fr.design.gui.ilable.UILabel; import com.fr.design.i18n.Toolkit; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.widgettheme.theme.widget.theme.WidgetThemeDisplayConstants; +import com.fr.widgettheme.util.ThemeTextStylePaneCreator; import javax.swing.ButtonGroup; import javax.swing.JPanel; @@ -52,7 +54,7 @@ public class DesktopWidgetStyleEditPane extends WidgetS new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Widget_Theme_Style")), stylePane}, new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Widget_Theme_Border_Line")), lineComboBox}, new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Widget_Theme_Border_Radius")), borderRadiusSpinner}, - new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Widget_Theme_Text_Style")), textStylePane}, + new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Widget_Theme_Text_Style")), ThemeTextStylePaneCreator.create(fontSizePane, fontColorButton)}, new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Widget_Background_Select_Box")), selectBackgroundColorBox} }; } @@ -86,7 +88,8 @@ public class DesktopWidgetStyleEditPane extends WidgetS colorSelectBox.setSelectObject(style.getThemeColor()); lineComboBox.setSelectedLineStyle(style.getBorderStyle().getLineType()); borderRadiusSpinner.setValue(style.getBorderStyle().getRadius()); - textStylePane.setTextStyle(style.getTextStyle()); + fontSizePane.setValue(style.getTextStyle().getFontSize()); + fontColorButton.setColor(style.getTextStyle().getFontColor()); selectBackgroundColorBox.setSelectObject(style.getSelectBackgroundColor()); } @@ -102,7 +105,10 @@ public class DesktopWidgetStyleEditPane extends WidgetS borderStyle.setLineType(lineComboBox.getSelectedLineStyle()); borderStyle.setRadius((int) borderRadiusSpinner.getValue()); style.setBorderStyle(borderStyle); - style.setTextStyle(textStylePane.getTextStyle()); + ThemeTextStyle textStyle = new ThemeTextStyle(); + textStyle.setFontSize(fontSizePane.getValue()); + textStyle.setFontColor(fontColorButton.getColor()); + style.setTextStyle(textStyle); ButtonBackgroundStyle buttonBackgroundStyle = new ButtonBackgroundStyle(); ColorBackground buttonBackground = ColorBackground.getInstance(style.getThemeColor()); buttonBackgroundStyle.setInitialBackground(buttonBackground); diff --git a/designer-base/src/main/java/com/fr/widgettheme/theme/edit/widget/MobileWidgetStyleEditPane.java b/designer-base/src/main/java/com/fr/widgettheme/theme/edit/widget/MobileWidgetStyleEditPane.java index 228dce7b26..ec6ef9aebb 100644 --- a/designer-base/src/main/java/com/fr/widgettheme/theme/edit/widget/MobileWidgetStyleEditPane.java +++ b/designer-base/src/main/java/com/fr/widgettheme/theme/edit/widget/MobileWidgetStyleEditPane.java @@ -1,10 +1,11 @@ package com.fr.widgettheme.theme.edit.widget; import com.fr.base.theme.TemplateTheme; -import com.fr.widgettheme.theme.panel.WidgetTextStylePane; +import com.fr.design.gui.frpane.FontSizeComboPane; import com.fr.widgettheme.theme.widget.style.BorderStyle; import com.fr.widgettheme.theme.widget.style.MobileThemedWidgetStyle; import com.fr.design.gui.icombobox.LineComboBox; +import com.fr.widgettheme.theme.widget.style.ThemeTextStyle; import com.fr.widgettheme.theme.widget.theme.WidgetThemeDisplayConstants; import java.util.Arrays; @@ -38,8 +39,8 @@ public class MobileWidgetStyleEditPane extends WidgetSt } @Override - protected void initTextStylePane() { - textStylePane = new WidgetTextStylePane(FONT_SIZES, 140); + protected void initFontSizePane() { + fontSizePane = new FontSizeComboPane(FONT_SIZES); } @Override @@ -52,7 +53,8 @@ public class MobileWidgetStyleEditPane extends WidgetSt colorSelectBox.setSelectObject(style.getThemeColor()); lineComboBox.setSelectedLineStyle(style.getBorderStyle().getLineType()); borderRadiusSpinner.setValue(style.getBorderStyle().getRadius()); - textStylePane.setTextStyle(style.getTextStyle()); + fontSizePane.setValue(style.getTextStyle().getFontSize()); + fontColorButton.setColor(style.getTextStyle().getFontColor()); } @Override @@ -67,7 +69,10 @@ public class MobileWidgetStyleEditPane extends WidgetSt borderStyle.setLineType(lineComboBox.getSelectedLineStyle()); borderStyle.setRadius((int) borderRadiusSpinner.getValue()); style.setBorderStyle(borderStyle); - style.setTextStyle(textStylePane.getTextStyle()); + ThemeTextStyle textStyle = new ThemeTextStyle(); + textStyle.setFontSize(fontSizePane.getValue()); + textStyle.setFontColor(fontColorButton.getColor()); + style.setTextStyle(textStyle); } } \ No newline at end of file diff --git a/designer-base/src/main/java/com/fr/widgettheme/theme/edit/widget/WidgetStyleEditPane.java b/designer-base/src/main/java/com/fr/widgettheme/theme/edit/widget/WidgetStyleEditPane.java index 92300b00b9..1c8ab2ff14 100644 --- a/designer-base/src/main/java/com/fr/widgettheme/theme/edit/widget/WidgetStyleEditPane.java +++ b/designer-base/src/main/java/com/fr/widgettheme/theme/edit/widget/WidgetStyleEditPane.java @@ -3,6 +3,8 @@ package com.fr.widgettheme.theme.edit.widget; import com.fr.base.theme.TemplateTheme; import com.fr.design.beans.BasicBeanPane; import com.fr.design.designer.IntervalConstants; +import com.fr.design.gui.frpane.FontSizeComboPane; +import com.fr.design.gui.ibutton.UIColorButton; import com.fr.design.gui.icombobox.LineComboBox; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ispinner.UISpinner; @@ -13,8 +15,8 @@ import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; import com.fr.design.style.color.NewColorSelectBox; import com.fr.stable.StringUtils; -import com.fr.widgettheme.theme.panel.WidgetTextStylePane; import com.fr.widgettheme.theme.widget.theme.WidgetThemeDisplayConstants; +import com.fr.widgettheme.util.ThemeTextStylePaneCreator; import org.jetbrains.annotations.Nullable; import javax.swing.BorderFactory; @@ -42,7 +44,9 @@ public class WidgetStyleEditPane extends BasicBeanPane< /** * 文本样式面板 */ - protected WidgetTextStylePane textStylePane; + protected FontSizeComboPane fontSizePane; + + protected UIColorButton fontColorButton; public WidgetStyleEditPane() { initComponents(); @@ -72,7 +76,7 @@ public class WidgetStyleEditPane extends BasicBeanPane< new UILabel(Toolkit.i18nText("Fine-Design_Widget_Theme_Color")), colorSelectBox}, new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Widget_Theme_Border_Line")), lineComboBox}, new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Widget_Theme_Border_Radius")), borderRadiusSpinner}, - new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Widget_Theme_Text_Style")), textStylePane} + new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Widget_Theme_Text_Style")), ThemeTextStylePaneCreator.create(fontSizePane, fontColorButton)} }; } @@ -81,12 +85,12 @@ public class WidgetStyleEditPane extends BasicBeanPane< colorSelectBox.setSelectObject(WidgetThemeDisplayConstants.DEFAULT_THEME_COLOR); initLineBox(); borderRadiusSpinner = new UISpinner(0, Integer.MAX_VALUE, 1); - initTextStylePane(); - textStylePane.setFontSizeValue(16); + initFontSizePane(); + fontColorButton = new UIColorButton(); } - protected void initTextStylePane() { - textStylePane = new WidgetTextStylePane(FRFontPane.getFontSizes(), WidgetThemeDisplayConstants.THEME_WIDGET_COMPONENT_WIDTH); + protected void initFontSizePane() { + fontSizePane = new FontSizeComboPane(FRFontPane.getFontSizes()); } /** diff --git a/designer-base/src/main/java/com/fr/widgettheme/theme/panel/WidgetTextStylePane.java b/designer-base/src/main/java/com/fr/widgettheme/theme/panel/WidgetTextStylePane.java deleted file mode 100644 index 896b33c282..0000000000 --- a/designer-base/src/main/java/com/fr/widgettheme/theme/panel/WidgetTextStylePane.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.fr.widgettheme.theme.panel; - -import com.fr.design.gui.ibutton.UIColorButton; -import com.fr.design.gui.frpane.FontSizeComboPane; -import com.fr.widgettheme.theme.widget.style.ThemeTextStyle; - -import javax.swing.BorderFactory; -import javax.swing.JPanel; -import java.awt.Color; -import java.awt.Dimension; -import java.awt.FlowLayout; -import java.util.Vector; - -/** - * 控件文本样式配置面板 - * 包含文本字体大小和字体颜色 - * - * @author oBo - * @since 11.0 - * Created on 2023/12/13 - */ -public class WidgetTextStylePane extends JPanel { - - private final FontSizeComboPane fontSizePane; - - private final UIColorButton fontColorButton; - - public WidgetTextStylePane(int preferredWidth) { - this(null, preferredWidth); - } - - public WidgetTextStylePane(Vector fontSizes, int preferredWidth) { - this.setLayout(new FlowLayout(FlowLayout.LEFT)); - this.setBorder(BorderFactory.createEmptyBorder()); - fontSizePane = new FontSizeComboPane(fontSizes); - fontColorButton = new UIColorButton(); - fontSizePane.setPreferredSize(new Dimension(preferredWidth, fontSizePane.getPreferredSize().height)); - this.add(fontSizePane); - this.add(fontColorButton); - } - - public void setTextStyle(ThemeTextStyle themeTextStyle) { - this.fontSizePane.setValue(themeTextStyle.getFontSize()); - this.fontColorButton.setColor(themeTextStyle.getFontColor()); - } - - public ThemeTextStyle getTextStyle() { - ThemeTextStyle themeTextStyle = new ThemeTextStyle(); - themeTextStyle.setFontSize(this.fontSizePane.getValue()); - themeTextStyle.setFontColor(this.fontColorButton.getColor()); - return themeTextStyle; - } - - public void setFontSizeValue(int fontSize) { - this.fontSizePane.setValue(fontSize); - } - - public void setFontColorValue(Color fontColor) { - this.fontColorButton.setColor(fontColor); - } - - public int getFontSizeValue() { - return this.fontSizePane.getValue(); - } - - public Color getFontColorValue() { - return this.fontColorButton.getColor(); - } - -} diff --git a/designer-base/src/main/java/com/fr/widgettheme/util/ThemeTextStylePaneCreator.java b/designer-base/src/main/java/com/fr/widgettheme/util/ThemeTextStylePaneCreator.java new file mode 100644 index 0000000000..133f258646 --- /dev/null +++ b/designer-base/src/main/java/com/fr/widgettheme/util/ThemeTextStylePaneCreator.java @@ -0,0 +1,40 @@ +package com.fr.widgettheme.util; + +import com.fr.design.gui.frpane.FontSizeComboPane; +import com.fr.design.gui.ibutton.UIColorButton; +import com.fr.design.layout.TableLayout; +import com.fr.design.layout.TableLayoutHelper; + +import javax.swing.Box; +import javax.swing.JPanel; +import java.awt.Component; + +/** + * 创建主题文本样式的工具类 + * + * @author obo + * @since 11.0 + * Created on 2023/12/21 + */ +public class ThemeTextStylePaneCreator { + private ThemeTextStylePaneCreator() {} + + /** + * 创建主题文本样式配置面板 + * 包含字体大小下拉框和字体颜色按钮 + * 可以自适应布局 + * + * @param fontSizePane 字体大小配置 + * @param fontColorButton 字体颜色配置 + * @return 文本样式面板 + */ + public static JPanel create(FontSizeComboPane fontSizePane, UIColorButton fontColorButton) { + Component[][] components = {{fontSizePane, Box.createHorizontalStrut(5), fontColorButton}}; + double f = TableLayout.FILL; + double p = TableLayout.PREFERRED; + double[] rowSize = {f}; + double[] columnSize = {f, p, p}; + int[][] rowCount = {{1, 1, 1}}; + return TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, 0, 0); + } +} diff --git a/designer-base/src/test/java/com/fr/design/data/tabledata/tabledatapane/DBTableDataPaneTest.java b/designer-base/src/test/java/com/fr/design/data/tabledata/tabledatapane/DBTableDataPaneTest.java new file mode 100644 index 0000000000..e549f13461 --- /dev/null +++ b/designer-base/src/test/java/com/fr/design/data/tabledata/tabledatapane/DBTableDataPaneTest.java @@ -0,0 +1,41 @@ +package com.fr.design.data.tabledata.tabledatapane; + +import com.fr.base.Parameter; +import com.fr.design.data.datapane.sqlpane.SQLEditPane; +import com.fr.invoke.Reflect; +import junit.framework.TestCase; +import org.junit.Assert; + +/** + * @author Yuan.Wang + * @since 11.0 + * Created on 2023/12/22 + */ +public class DBTableDataPaneTest extends TestCase { + + public void testGetParameters() { + DBTableDataPane pane = new DBTableDataPane(); + SQLEditPane editPane = new SQLEditPane(); + String sql = "select distinct 类别ID from S产品\n" + + "where 1=1\n" + + "order by 类别ID\n" + + "--${ if(len(comboBox0) = 0,\"\",\"AND 类别00ID = '\" + comboBox0 + \"'\")}"; + + String sql1 = "select distinct 类别ID from S产品\n" + + "where 1=1\n" + + "order by 类别ID\n" + + "${ if(len(comboBox0) = 0,\"\",\"AND 类别00ID = '\" + comboBox0 + \"'\")}"; + editPane.setText(sql); + Reflect.on(pane).set("sqlTextPane", editPane); + Reflect.on(pane).set("pageQuery", sql); + + Parameter[] parameters = Reflect.on(pane).call("getParameters").get(); + + Assert.assertEquals(0, parameters.length); + editPane.setText(sql1); + + parameters = Reflect.on(pane).call("getParameters").get(); + Assert.assertEquals(1, parameters.length); + Assert.assertEquals(parameters[0].getName(), "comboBox0"); + } +} \ No newline at end of file diff --git a/designer-form/src/main/java/com/fr/design/widgettheme/BaseStyleSettingPane.java b/designer-form/src/main/java/com/fr/design/widgettheme/BaseStyleSettingPane.java index 06c3f24880..b651b9373b 100644 --- a/designer-form/src/main/java/com/fr/design/widgettheme/BaseStyleSettingPane.java +++ b/designer-form/src/main/java/com/fr/design/widgettheme/BaseStyleSettingPane.java @@ -1,7 +1,8 @@ package com.fr.design.widgettheme; import com.fr.base.theme.TemplateTheme; -import com.fr.widgettheme.theme.panel.WidgetTextStylePane; +import com.fr.design.gui.frpane.FontSizeComboPane; +import com.fr.design.gui.ibutton.UIColorButton; import com.fr.widgettheme.theme.widget.style.BorderStyle; import com.fr.widgettheme.theme.widget.style.ThemeTextStyle; import com.fr.widgettheme.theme.widget.style.ThemedWidgetStyle; @@ -25,11 +26,13 @@ import com.fr.form.ui.Widget; import com.fr.general.FRFont; import com.fr.widgettheme.theme.panel.ButtonStyleDefinedPane; import com.fr.widgettheme.theme.widget.theme.WidgetThemeDisplayConstants; +import com.fr.widgettheme.util.ThemeTextStylePaneCreator; import javax.swing.BorderFactory; import javax.swing.ButtonGroup; import javax.swing.JPanel; import java.awt.BorderLayout; +import java.awt.Color; import java.awt.Component; import java.util.HashMap; import java.util.List; @@ -63,12 +66,18 @@ public abstract class BaseStyleSettingPane extends BasicBeanPa protected FRFontPane frFontPane; // 按钮背景设置 protected ButtonStyleDefinedPane buttonStyleDefinedPane; + + protected NewColorSelectBox selectBgColorBox; + /** - * 文本样式 - * 包含字体大小、字体颜色 + * 主题文本样式的字体大小 */ - protected WidgetTextStylePane textStylePane; - protected NewColorSelectBox selectBgColorBox; + protected FontSizeComboPane fontSizePane; + + /** + * 主题文本样式的字体颜色 + */ + protected UIColorButton fontColorButton; private final Map labelMap = new HashMap<>(); private final Map paneMap = new HashMap<>(); @@ -94,12 +103,13 @@ public abstract class BaseStyleSettingPane extends BasicBeanPa borderRadiusSpinner = new UIBoundSpinner(0, Integer.MAX_VALUE, 1); frFontPane = new FRFontPane(); buttonStyleDefinedPane = new ButtonStyleDefinedPane(); - textStylePane = new WidgetTextStylePane(100); selectBgColorBox = new NewColorSelectBox(160, true); + fontSizePane = new FontSizeComboPane(); + fontColorButton = new UIColorButton(); paneMap.put(StyleSetting.STYLE_TYPE, createStyleTypePane()); paneMap.put(StyleSetting.THEME_COLOR, colorSelectBox); paneMap.put(StyleSetting.LINE_TYPE, lineComboBox); - paneMap.put(StyleSetting.TEXT_STYLE, textStylePane); + paneMap.put(StyleSetting.TEXT_STYLE, ThemeTextStylePaneCreator.create(fontSizePane, fontColorButton)); paneMap.put(StyleSetting.BORDER_RADIUS, borderRadiusSpinner); paneMap.put(StyleSetting.FONT, frFontPane); paneMap.put(StyleSetting.BTN_BACKGROUND, buttonStyleDefinedPane); @@ -207,7 +217,7 @@ public abstract class BaseStyleSettingPane extends BasicBeanPa setLineComboBox(widgetStyle); setBorderRadiusSpinner(widgetStyle); setTextStylePane(widgetStyle); - setFrFontPane(); + setFrFontPane(widgetStyle); setButtonStyleDefinedPane(widgetStyle); setSelectBgColor(widgetStyle); } @@ -242,12 +252,14 @@ public abstract class BaseStyleSettingPane extends BasicBeanPa } private void setTextStylePane(ThemedWidgetStyle widgetStyle) { - this.textStylePane.setTextStyle(widgetStyle.getTextStyle()); + ThemeTextStyle textStyle = widgetStyle.getTextStyle(); + this.fontSizePane.setValue(textStyle.getFontSize()); + this.fontColorButton.setColor(textStyle.getFontColor()); } - private void setFrFontPane() { + private void setFrFontPane(ThemedWidgetStyle widgetStyle) { if (frFontPane != null) { - frFontPane.populateBean(FRFont.getInstance()); + frFontPane.populateBean(widgetStyle.getFontStyle().getFont()); } } @@ -269,8 +281,11 @@ public abstract class BaseStyleSettingPane extends BasicBeanPa if (borderRadiusSpinner != null) { borderRadiusSpinner.setValue(BorderStyle.DEFAULT_BORDER_RADIUS); } - if (textStylePane != null) { - textStylePane.setTextStyle(new ThemeTextStyle()); + if (fontSizePane != null) { + fontSizePane.setValue(ThemeTextStyle.DEFAULT_FONT_SIZE); + } + if (fontColorButton != null) { + fontColorButton.setColor(Color.BLACK); } if (frFontPane != null) { frFontPane.populateBean(FRFont.getInstance()); diff --git a/designer-form/src/main/java/com/fr/design/widgettheme/ParaButtonSettingPane.java b/designer-form/src/main/java/com/fr/design/widgettheme/ParaButtonSettingPane.java index 0ba714d8df..084e183abe 100644 --- a/designer-form/src/main/java/com/fr/design/widgettheme/ParaButtonSettingPane.java +++ b/designer-form/src/main/java/com/fr/design/widgettheme/ParaButtonSettingPane.java @@ -2,6 +2,7 @@ package com.fr.design.widgettheme; import com.fr.design.widgettheme.common.ButtonSettingPane; import com.fr.form.ui.Widget; +import com.fr.widgettheme.theme.widget.style.ThemeTextStyle; import com.fr.widgettheme.theme.widget.theme.ParaButtonTheme; import com.fr.widgettheme.theme.widget.theme.cell.ButtonTheme; @@ -32,14 +33,18 @@ public class ParaButtonSettingPane extends ButtonSettingPane extends EditorSettingPane extends TreeEditorS @Override protected void assignFontSizePane(TreeTheme widgetTheme) { - ParaTreeTheme paraTreeTheme= (ParaTreeTheme) widgetTheme; - textStylePane.setTextStyle(paraTreeTheme.getTextStyle()); + ThemeTextStyle textStyle = widgetTheme.getTextStyle(); + fontSizePane.setValue(textStyle.getFontSize()); + fontColorButton.setColor(textStyle.getFontColor()); } @Override protected void assignFontSizeStyle(TreeTheme widgetTheme) { - ParaTreeTheme paraTreeTheme= (ParaTreeTheme) widgetTheme; - paraTreeTheme.setTextStyle(textStylePane.getTextStyle()); + ThemeTextStyle textStyle = new ThemeTextStyle(); + textStyle.setFontSize(fontSizePane.getValue()); + textStyle.setFontColor(fontColorButton.getColor()); + widgetTheme.setTextStyle(textStyle); } } diff --git a/designer-realize/src/main/java/com/fr/design/webattr/EditToolBar.java b/designer-realize/src/main/java/com/fr/design/webattr/EditToolBar.java index 216e82cff0..36222f19c9 100644 --- a/designer-realize/src/main/java/com/fr/design/webattr/EditToolBar.java +++ b/designer-realize/src/main/java/com/fr/design/webattr/EditToolBar.java @@ -182,7 +182,7 @@ public class EditToolBar extends BasicPane { if(WidgetThemeDesignerUtils.enableWidgetEnhance()) { backgroundPane.add(createButtonColorGroup()); } - backgroundPane.setBorder(BorderFactory.createTitledBorder(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Set_Background"))); + backgroundPane.setBorder(BorderFactory.createTitledBorder(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_ToolBar_Style_Setting"))); this.add(backgroundPane, BorderLayout.SOUTH); } diff --git a/designer-realize/src/main/java/com/fr/strongest/WidgetThemeListenerStarter.java b/designer-realize/src/main/java/com/fr/strongest/WidgetThemeListenerStarter.java index e39521fd4e..8d2522350a 100644 --- a/designer-realize/src/main/java/com/fr/strongest/WidgetThemeListenerStarter.java +++ b/designer-realize/src/main/java/com/fr/strongest/WidgetThemeListenerStarter.java @@ -53,7 +53,7 @@ public class WidgetThemeListenerStarter { BaseBook workBook = (BaseBook) temp.getTarget(); if (isNeedAddAttr(temp, workBook)) { WidgetDisplayEnhanceMarkAttr attr = new WidgetDisplayEnhanceMarkAttr(); - attr.setWidgetEnhance(true); + attr.setWidgetEnhance(false); workBook.addAttrMark(attr); } }