diff --git a/designer-base/src/main/java/com/fr/design/jxbrowser/JxUIPane.java b/designer-base/src/main/java/com/fr/design/jxbrowser/JxUIPane.java index 97ffeadc7..463cf39b7 100644 --- a/designer-base/src/main/java/com/fr/design/jxbrowser/JxUIPane.java +++ b/designer-base/src/main/java/com/fr/design/jxbrowser/JxUIPane.java @@ -206,12 +206,11 @@ public class JxUIPane extends ModernUIPane { * 执行一段js * * @param javaScript 待执行的js脚本 + * @see JxUIPane#executeJS(String) */ public void executeJavaScript(String javaScript) { if (browser != null) { - browser.mainFrame().ifPresent(frame -> { - frame.executeJavaScript(javaScript); - }); + browser.mainFrame().ifPresent(frame -> frame.executeJavaScript(javaScript)); } } @@ -227,6 +226,22 @@ public class JxUIPane extends ModernUIPane { return Optional.ofNullable(frame.executeJavaScript(name)); } + /** + * 执行js脚本并返回,使用范围包含{@link JxUIPane#executeJavaScript(String)},可以代替使用 + * + * @param name 变量命名 + * @return js对象 + */ + public

Optional

executeJS(String name) { + if (browser != null) { + Optional frame = browser.mainFrame(); + if (frame.isPresent()) { + return Optional.ofNullable(frame.get().executeJavaScript(name)); + } + } + return Optional.empty(); + } + /** * 由于自定义scheme目前走的是url,因此路径会被自动转化,比如windows路径下对冒号问题 * C:\\abc 变成 /C/abc,这里对冒号进行编码转义 diff --git a/designer-base/src/main/java/com/fr/design/mainframe/mobile/ui/radiogroup/CapsuleCustomDefinePane.java b/designer-base/src/main/java/com/fr/design/mainframe/mobile/ui/radiogroup/CapsuleCustomDefinePane.java index 1d6987526..6bc3821b0 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/mobile/ui/radiogroup/CapsuleCustomDefinePane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/mobile/ui/radiogroup/CapsuleCustomDefinePane.java @@ -183,7 +183,7 @@ public class CapsuleCustomDefinePane extends MobileStyleCustomDefinePane { * 初始化固定列数面板 */ private void initColumnSizePane() { - UILabel columnSizeLabel = DesignerUtils.createConfigLabel(Toolkit.i18nText("Fine-Plugin-RadioGroup_Layout_Fixed_Number")); + UILabel columnSizeLabel = DesignerUtils.createConfigLabel(""); columnSizeSpinner = new UISpinner(0, Integer.MAX_VALUE, 1, DesignerUtils.INITIAL_COLUMN_SIZE); columnSizeSpinner.setPreferredSize(new Dimension(DesignerUtils.LARGE_COMBO_WIDTH, 20)); columnSizePane = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{new Component[]{columnSizeLabel, columnSizeSpinner}}, TableLayoutHelper.FILL_LASTCOLUMN, IntervalConstants.INTERVAL_L1, LayoutConstants.VGAP_SMALL); diff --git a/designer-base/src/main/java/com/fr/design/mainframe/mobile/ui/radiogroup/IconConfigPane.java b/designer-base/src/main/java/com/fr/design/mainframe/mobile/ui/radiogroup/IconConfigPane.java index 17d995d3c..85f4f3601 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/mobile/ui/radiogroup/IconConfigPane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/mobile/ui/radiogroup/IconConfigPane.java @@ -74,6 +74,8 @@ public class IconConfigPane extends JPanel { public void addCount() { deleteCountButton.setEnabled(true); IconButton iconButton = new IconButton(""); + selectIconButton = iconButton; + editIconButton.setEnabled(true); iconButtons.add(iconButton); int indexToInsert = northPane.getComponentCount() - 2; deleteCountButton.setEnabled(!iconButtons.isEmpty()); diff --git a/designer-base/src/main/java/com/fr/design/mainframe/mobile/ui/radiogroup/ImageCustomDefinePane.java b/designer-base/src/main/java/com/fr/design/mainframe/mobile/ui/radiogroup/ImageCustomDefinePane.java index 0284f28c5..c517e0357 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/mobile/ui/radiogroup/ImageCustomDefinePane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/mobile/ui/radiogroup/ImageCustomDefinePane.java @@ -9,6 +9,7 @@ import com.fr.design.gui.ibutton.UIColorButton; import com.fr.design.gui.ibutton.UIToggleButton; import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.ilable.UILabel; +import com.fr.design.gui.iscrollbar.UIScrollBar; import com.fr.design.gui.ispinner.UISpinner; import com.fr.design.i18n.Toolkit; import com.fr.design.layout.FRGUIPaneFactory; @@ -23,6 +24,7 @@ import com.fr.form.ui.mobile.radiogroup.ImageMobileStyle; import com.fr.general.FRFont; import javax.swing.*; +import javax.swing.border.EmptyBorder; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import java.awt.*; @@ -83,6 +85,14 @@ public class ImageCustomDefinePane extends MobileStyleCustomDefinePane { protected JPanel createContentPane() { return scrollPanel; } + + @Override + protected void setLeftContentPaneBounds(Container parent, UIScrollBar scrollBar, int beginY, int maxheight) { + int width = parent.getWidth(); + int height = parent.getHeight(); + leftcontentPane.setBounds(0, -beginY, width - scrollBar.getWidth() + getOverWidth(), leftcontentPane.getPreferredSize().height); + scrollBar.setBounds(width - scrollBar.getWidth(), 0, scrollBar.getWidth(), height); + } }; this.add(basicScrollPane); } @@ -160,6 +170,7 @@ public class ImageCustomDefinePane extends MobileStyleCustomDefinePane { Toolkit.i18nText("Fine-Plugin-RadioGroup_Alignment_Nature"), Toolkit.i18nText("Fine-Plugin-RadioGroup_Alignment_Split"), }); + buttonAlignCombo.setSelectedIndex(1); buttonAlignCombo.setPreferredSize(new Dimension(DesignerUtils.LARGE_COMBO_WIDTH, 20)); buttonAlignPane = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{new Component[]{buttonAlignLabel, buttonAlignCombo}}, TableLayoutHelper.FILL_LASTCOLUMN, IntervalConstants.INTERVAL_L1, LayoutConstants.VGAP_SMALL); } @@ -168,8 +179,8 @@ public class ImageCustomDefinePane extends MobileStyleCustomDefinePane { * 初始化固定列数面板 */ private void initColumnSizePane() { - UILabel columnSizeLabel = DesignerUtils.createConfigLabel(Toolkit.i18nText("Fine-Plugin-RadioGroup_Layout_Fixed_Number")); - columnSizeSpinner = new UISpinner(0, Integer.MAX_VALUE, 1, DesignerUtils.INITIAL_COLUMN_SIZE); + UILabel columnSizeLabel = DesignerUtils.createConfigLabel(""); + columnSizeSpinner = new UISpinner(1, Integer.MAX_VALUE, 1, DesignerUtils.INITIAL_COLUMN_SIZE); columnSizeSpinner.setPreferredSize(new Dimension(DesignerUtils.LARGE_COMBO_WIDTH, 20)); columnSizePane = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{new Component[]{columnSizeLabel, columnSizeSpinner}}, TableLayoutHelper.FILL_LASTCOLUMN, IntervalConstants.INTERVAL_L1, LayoutConstants.VGAP_SMALL); columnSizePane.setVisible(false); @@ -271,18 +282,22 @@ public class ImageCustomDefinePane extends MobileStyleCustomDefinePane { UILabel initialLabel = DesignerUtils.createConfigLabel(Toolkit.i18nText("Fine-Plugin-RadioGroup_Icon_Init")); UILabel selectedLabel = DesignerUtils.createConfigLabel(Toolkit.i18nText("Fine-Plugin-RadioGroup_Icon_Select")); + initialLabel.setVerticalAlignment(SwingConstants.TOP); + initialLabel.setBorder(new EmptyBorder(5, 0, 0, 0)); + selectedLabel.setVerticalAlignment(SwingConstants.TOP); + selectedLabel.setBorder(new EmptyBorder(5, 0, 0, 0)); initInitialIconConfigPane(); initSelectedIconConfigPane(); JPanel container = FRGUIPaneFactory.createVerticalFlowLayout_Pane(true, FlowLayout.LEADING, 0, 5); - JPanel initialPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); - initialPane.add(initialLabel); - initialPane.add(initialIconConfigPane); + JPanel initialPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + initialPane.add(initialLabel, BorderLayout.WEST); + initialPane.add(initialIconConfigPane, BorderLayout.CENTER); container.add(initialPane); - JPanel selectedPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); - selectedPane.add(selectedLabel); - selectedPane.add(selectedIconConfigPane); + JPanel selectedPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + selectedPane.add(selectedLabel, BorderLayout.WEST); + selectedPane.add(selectedIconConfigPane, BorderLayout.CENTER); container.add(selectedPane); centerPane.add(container); diff --git a/designer-base/src/main/java/com/fr/design/mainframe/mobile/ui/radiogroup/UnitedCustomDefinePane.java b/designer-base/src/main/java/com/fr/design/mainframe/mobile/ui/radiogroup/UnitedCustomDefinePane.java index 7d39b2ad0..0badf3498 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/mobile/ui/radiogroup/UnitedCustomDefinePane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/mobile/ui/radiogroup/UnitedCustomDefinePane.java @@ -144,8 +144,9 @@ public class UnitedCustomDefinePane extends MobileStyleCustomDefinePane { // 按钮排布下拉框 buttonAlignCombo = new UIComboBox(new String[]{ Toolkit.i18nText("Fine-Plugin-RadioGroup_Alignment_Nature"), - Toolkit.i18nText("Fine-Plugin-RadioGroup_Alignment_Split"), + Toolkit.i18nText("Fine-Plugin-RadioGroup_Alignment_Split") }); + buttonAlignCombo.setSelectedIndex(1); buttonAlignCombo.setPreferredSize(new Dimension(DesignerUtils.NORMAL_COMBO_WIDTH, 20)); double p = TableLayout.PREFERRED; double[] rowSize = {p, p, p}; diff --git a/designer-base/src/main/java/com/fr/design/mainframe/theme/TemplateThemeEditorPane.java b/designer-base/src/main/java/com/fr/design/mainframe/theme/TemplateThemeEditorPane.java index 963f387f3..5432109dc 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/theme/TemplateThemeEditorPane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/theme/TemplateThemeEditorPane.java @@ -5,6 +5,7 @@ import com.fr.base.theme.TemplateTheme; import com.fr.base.theme.TemplateThemeConfig; import com.fr.base.theme.settings.ThemedCellStyleList; import com.fr.base.theme.settings.ThemedColorScheme; +import com.fr.widgettheme.ThemePreviewTerminal; import com.fr.widgettheme.util.WidgetThemeDesignerUtils; import com.fr.design.ExtraDesignClassManager; import com.fr.design.beans.BasicBeanPane; @@ -340,4 +341,20 @@ public abstract class TemplateThemeEditorPane extends J } } } + + /** + * 开启控件显示增强时,从配置面板处获取主题样式预览的终端类型 + * 默认为PC端,兼容原有场景 + */ + public ThemePreviewTerminal getWidgetStyleEditorTerminal() { + if (!WidgetThemeDesignerUtils.enableWidgetEnhance()) { + return ThemePreviewTerminal.PC; + } + for (BasicBeanPane pane : extraPaneList) { + if (pane instanceof WidgetStyleEditContainerPane) { + return ((WidgetStyleEditContainerPane) pane).getTerminalStyle(); + } + } + return ThemePreviewTerminal.PC; + } } \ No newline at end of file diff --git a/designer-base/src/main/java/com/fr/design/mainframe/theme/TemplateThemeProfilePane.java b/designer-base/src/main/java/com/fr/design/mainframe/theme/TemplateThemeProfilePane.java index 92acb5c71..c79ccd909 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/theme/TemplateThemeProfilePane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/theme/TemplateThemeProfilePane.java @@ -14,12 +14,13 @@ import com.fr.design.mainframe.theme.dialog.TemplateThemeProfileDialog; import com.fr.design.mainframe.theme.edit.ui.LabelUtils; import com.fr.design.mainframe.theme.ui.AutoCheckTextField; import com.fr.design.mainframe.theme.ui.AutoCheckThemeNameTextField; -import com.fr.design.mainframe.theme.ui.BorderUtils; import com.fr.design.mainframe.toast.DesignerToastMsgUtil; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.log.FineLoggerFactory; import com.fr.stable.StringUtils; import com.fr.transaction.CallBackAdaptor; +import com.fr.widgettheme.ThemePreviewTerminal; +import com.fr.widgettheme.theme.widget.theme.WidgetThemeDisplayConstants; import javax.swing.BorderFactory; import javax.swing.JDialog; @@ -51,7 +52,8 @@ public abstract class TemplateThemeProfilePane extends protected TemplateThemePreviewPane themePreviewPane; protected TemplateThemeEditorPane themeEditorPane; - + protected UILabel leftTitleLabel; + protected UILabel leftTitlePromptLabel; protected boolean isPopulating = false; protected boolean isMutable = false; @@ -83,10 +85,9 @@ public abstract class TemplateThemeProfilePane extends private JPanel createLeftPane() { JPanel titleContainer = FRGUIPaneFactory.createBorderLayout_S_Pane(); titleContainer.setPreferredSize(new Dimension(LEFT_TITLE_PANE_WIDTH, LEFT_TITLE_PANE_HEIGHT)); - titleContainer.setBorder(BorderUtils.createTitleBorder(Toolkit.i18nText("Fine-Design_Basic_Template_Theme_Preview_Pane_Title"), TITLE_BORDER_FONT)); - JPanel previewContainer = FRGUIPaneFactory.createBorderLayout_S_Pane(); previewContainer.setBorder(BorderFactory.createEmptyBorder(5, 4, 10, 4)); + titleContainer.add(createTitlePane(), BorderLayout.NORTH); titleContainer.add(previewContainer, BorderLayout.CENTER); themePreviewPane = createThemePreviewPane(); @@ -103,7 +104,10 @@ public abstract class TemplateThemeProfilePane extends if (isPopulating) { return; } - themePreviewPane.refresh(updateBean()); + ThemePreviewTerminal terminal = themeEditorPane.getWidgetStyleEditorTerminal(); + themePreviewPane.refresh(updateBean(), terminal); + String prompt = terminal == ThemePreviewTerminal.PC ? Toolkit.i18nText("Fine-Design_Theme_Control_PC_Prompt") : Toolkit.i18nText("Fine-Design_Theme_Control_Mobile_Prompt"); + leftTitlePromptLabel.setText(prompt); saveButton.setEnabled(themeEditorPane.checkNameValid() && isMutable); } }); @@ -367,4 +371,20 @@ public abstract class TemplateThemeProfilePane extends @Override public void onSaved(TemplateTheme theme) {} } + + /** + * 创建预览界面标题面板 + */ + protected JPanel createTitlePane() { + JPanel titlePane = new JPanel(); + titlePane.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 5)); + titlePane.setLayout(new BorderLayout()); + leftTitleLabel = new UILabel(Toolkit.i18nText("Fine-Design_Basic_Template_Theme_Preview_Pane_Title")); + leftTitlePromptLabel = new UILabel(Toolkit.i18nText("Fine-Design_Theme_Control_PC_Prompt")); + leftTitleLabel.setForeground(WidgetThemeDisplayConstants.THEME_PREVIEW_TITLE_COLOR); + leftTitlePromptLabel.setForeground(WidgetThemeDisplayConstants.COMPATIBLE_STYLE_FONT_COLOR); + titlePane.add(leftTitleLabel, BorderLayout.WEST); + titlePane.add(leftTitlePromptLabel, BorderLayout.EAST); + return titlePane; + } } \ No newline at end of file diff --git a/designer-base/src/main/java/com/fr/design/mainframe/theme/edit/chart/ChartTitleAndBackgroundStylePane.java b/designer-base/src/main/java/com/fr/design/mainframe/theme/edit/chart/ChartTitleAndBackgroundStylePane.java index 570593586..2dc0659d0 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/theme/edit/chart/ChartTitleAndBackgroundStylePane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/theme/edit/chart/ChartTitleAndBackgroundStylePane.java @@ -83,10 +83,13 @@ public class ChartTitleAndBackgroundStylePane extends AbstractChartStylePane { } protected Component[][] getComponent() { + String chartAreaBgLabelName = Toolkit.i18nText("Fine-Design_Chart_Area_Background_Color"); + UILabel chartAreaBgLabel = new UILabel(chartAreaBgLabelName); + chartAreaBgLabel.setToolTipText(chartAreaBgLabelName); return new Component[][]{ new Component[]{chartFontPane, null}, new Component[]{null, null}, - new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Chart_Area_Background_Color")), typeComboBox}, + new Component[]{chartAreaBgLabel, typeComboBox}, new Component[]{null, centerPane}, new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Chart_Grid_Line_Color")), mainGridColor} }; diff --git a/designer-base/src/main/java/com/fr/design/mainframe/theme/preview/ThemePreviewed.java b/designer-base/src/main/java/com/fr/design/mainframe/theme/preview/ThemePreviewed.java index bb2aa05c2..272c7716c 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/theme/preview/ThemePreviewed.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/theme/preview/ThemePreviewed.java @@ -1,5 +1,7 @@ package com.fr.design.mainframe.theme.preview; +import com.fr.widgettheme.ThemePreviewTerminal; + /** * @author Starryi * @version 1.0 @@ -7,4 +9,14 @@ package com.fr.design.mainframe.theme.preview; */ public interface ThemePreviewed { void refresh(T style); + + /** + * 根据主题预览样式类型进行刷新 + * + * @param style 样式,可以包含多个终端展现效果 + * @param terminal 终端类型 + */ + default void refresh(T style, ThemePreviewTerminal terminal) { + refresh(style); + } } diff --git a/designer-base/src/main/java/com/fr/widgettheme/ThemePreviewTerminal.java b/designer-base/src/main/java/com/fr/widgettheme/ThemePreviewTerminal.java new file mode 100644 index 000000000..844e64219 --- /dev/null +++ b/designer-base/src/main/java/com/fr/widgettheme/ThemePreviewTerminal.java @@ -0,0 +1,62 @@ +package com.fr.widgettheme; + +import com.fr.base.theme.TemplateTheme; +import com.fr.widgettheme.theme.widget.style.MobileThemedWidgetStyle; +import com.fr.widgettheme.theme.widget.style.ThemedWidgetStyle; + +/** + * 主题样式预览终端类型 + * + * @author obo + * @since 11.0 + * Created on 2024/2/2 + */ +public enum ThemePreviewTerminal { + + /** + * 桌面端,为默认类型 + */ + PC(0) { + @Override + public ThemedWidgetStyle getThemeWidgetStyle(TemplateTheme theme) { + return (ThemedWidgetStyle) theme.getWidgetStyle(); + } + }, + + /** + * 移动端 + */ + MOBILE(1) { + @Override + public ThemedWidgetStyle getThemeWidgetStyle(TemplateTheme theme) { + return (MobileThemedWidgetStyle) theme.getMobileWidgetStyle(); + } + }; + + /** + * 类型码 + */ + final int code; + + ThemePreviewTerminal(int code) { + this.code = code; + } + + public int getCode() { + return code; + } + + public abstract ThemedWidgetStyle getThemeWidgetStyle(TemplateTheme theme); + + /** + * 根据code获取对应的枚举 + */ + public static ThemePreviewTerminal getTypeByCode(int code) { + for (ThemePreviewTerminal type : ThemePreviewTerminal.values()) { + if (type.code == code) { + return type; + } + } + throw new IllegalArgumentException("Invalid ThemePreviewTerminalType code :" + code); + } +} 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 bc21732be..8bae70e83 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 @@ -2,6 +2,7 @@ package com.fr.widgettheme.theme.edit.widget; import com.fr.base.background.ColorBackground; import com.fr.base.theme.TemplateTheme; +import com.fr.design.gui.icombobox.LineComboBox; import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.style.color.NewColorSelectBox; import com.fr.design.utils.DesignUtils; @@ -57,7 +58,7 @@ public class DesktopWidgetStyleEditPane extends WidgetS new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Widget_Theme_Border_Radius")), borderRadiusSpinner}, new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Widget_Theme_Icon_Color")), iconColorSelectBox}, new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Widget_Theme_Text_Style")), fontNameSelectBox}, - new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Widget_Theme_Text_Style")), WidgetStyleComponentCombiner.combineTextStyleComponent(fontSizePane, fontColorButton, bold, italic)}, + new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Widget_Theme_Text_Style")), WidgetStyleComponentCombiner.combineTextStyleComponent(fontSizePane, fontColorButton, italic, bold)}, new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Widget_Background_Select_Box")), selectBackgroundColorBox} }; } @@ -154,4 +155,11 @@ public class DesktopWidgetStyleEditPane extends WidgetS widgetBgColorSelectBox.setSelectObject(ColorUtils.ignoreColorAlpha(style.getWidgetBackground().getColor())); widgetBgAlphaDragPane.populateBean(ColorUtils.roundColorAlphaDouble(style.getWidgetBackground().getColor())); } + + @Override + public void initLineBox() { + lineComboBox = new LineComboBox(WidgetThemeDisplayConstants.BORDER_LINE_STYLE_ARRAY); + lineComboColorSelectBox = new NewColorSelectBox(WidgetThemeDisplayConstants.THEME_WIDGET_COMPONENT_WIDTH, true); + lineComboBox.addItemListener(e -> lineComboColorSelectBox.setVisible(!Integer.valueOf(0).equals(e.getItem()))); + } } \ No newline at end of file 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 ec6ef9aeb..0e5200418 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 @@ -2,6 +2,8 @@ package com.fr.widgettheme.theme.edit.widget; import com.fr.base.theme.TemplateTheme; import com.fr.design.gui.frpane.FontSizeComboPane; +import com.fr.design.style.color.NewColorSelectBox; +import com.fr.util.ColorUtils; import com.fr.widgettheme.theme.widget.style.BorderStyle; import com.fr.widgettheme.theme.widget.style.MobileThemedWidgetStyle; import com.fr.design.gui.icombobox.LineComboBox; @@ -36,6 +38,8 @@ public class MobileWidgetStyleEditPane extends WidgetSt public void initLineBox() { lineComboBox = new LineComboBox(WidgetThemeDisplayConstants.MOBILE_BORDER_LINE_STYLE_ARRAY); lineComboBox.setSelectedLineStyle(com.fr.stable.Constants.LINE_THIN); + lineComboColorSelectBox = new NewColorSelectBox(WidgetThemeDisplayConstants.THEME_WIDGET_COMPONENT_WIDTH, true); + lineComboBox.addItemListener(e -> lineComboColorSelectBox.setVisible(!Integer.valueOf(0).equals(e.getItem()))); } @Override @@ -51,10 +55,16 @@ public class MobileWidgetStyleEditPane extends WidgetSt t.setMobileWidgetStyle(style); } colorSelectBox.setSelectObject(style.getThemeColor()); + widgetBgColorSelectBox.setSelectObject(ColorUtils.ignoreColorAlpha(style.getWidgetBackground().getColor())); + widgetBgAlphaDragPane.populateBean(ColorUtils.roundColorAlphaDouble(style.getWidgetBackground().getColor())); lineComboBox.setSelectedLineStyle(style.getBorderStyle().getLineType()); + lineComboColorSelectBox.setSelectObject(style.getBorderStyle().getBorderColor()); + iconColorSelectBox.setSelectObject(style.getIconColor()); borderRadiusSpinner.setValue(style.getBorderStyle().getRadius()); fontSizePane.setValue(style.getTextStyle().getFontSize()); fontColorButton.setColor(style.getTextStyle().getFontColor()); + bold.setSelected(style.getTextStyle().isBold()); + italic.setSelected(style.getTextStyle().isItalic()); } @Override @@ -65,13 +75,18 @@ public class MobileWidgetStyleEditPane extends WidgetSt t.setMobileWidgetStyle(style); } style.setThemeColor(colorSelectBox.getSelectObject()); + style.setWidgetBackground(ColorUtils.createColorBackgroundWithAlpha(widgetBgColorSelectBox.getSelectObject(), widgetBgAlphaDragPane.updateBean())); BorderStyle borderStyle = new BorderStyle(); borderStyle.setLineType(lineComboBox.getSelectedLineStyle()); borderStyle.setRadius((int) borderRadiusSpinner.getValue()); + borderStyle.setBorderColor(lineComboColorSelectBox.getSelectObject()); style.setBorderStyle(borderStyle); + style.setIconColor(iconColorSelectBox.getSelectObject()); ThemeTextStyle textStyle = new ThemeTextStyle(); textStyle.setFontSize(fontSizePane.getValue()); textStyle.setFontColor(fontColorButton.getColor()); + textStyle.setBold(bold.isSelected()); + textStyle.setItalic(italic.isSelected()); style.setTextStyle(textStyle); } diff --git a/designer-base/src/main/java/com/fr/widgettheme/theme/edit/widget/WidgetStyleEditContainerPane.java b/designer-base/src/main/java/com/fr/widgettheme/theme/edit/widget/WidgetStyleEditContainerPane.java index 789c0f61a..16e4a4f58 100644 --- a/designer-base/src/main/java/com/fr/widgettheme/theme/edit/widget/WidgetStyleEditContainerPane.java +++ b/designer-base/src/main/java/com/fr/widgettheme/theme/edit/widget/WidgetStyleEditContainerPane.java @@ -8,6 +8,7 @@ import com.fr.design.i18n.Toolkit; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; +import com.fr.widgettheme.ThemePreviewTerminal; import org.jetbrains.annotations.Nullable; import javax.swing.JPanel; @@ -133,4 +134,8 @@ public class WidgetStyleEditContainerPane extends Basic protected String title4PopupWindow() { return Toolkit.i18nText("Fine-Design_Theme_Widget_Style"); } + + public ThemePreviewTerminal getTerminalStyle() { + return ThemePreviewTerminal.getTypeByCode(terminalStyleGroup.getSelectedIndex()); + } } \ 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 8a0062d04..21a64ad22 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 @@ -109,7 +109,7 @@ public class WidgetStyleEditPane extends BasicBeanPane< new Component[]{null, lineComboColorSelectBox}, new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Widget_Theme_Border_Radius")), borderRadiusSpinner}, new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Widget_Theme_Icon_Color")), iconColorSelectBox}, - new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Widget_Theme_Text_Style")), WidgetStyleComponentCombiner.combineTextStyleComponent(fontSizePane, fontColorButton, bold, italic)} + new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Widget_Theme_Text_Style")), WidgetStyleComponentCombiner.combineTextStyleComponent(fontSizePane, fontColorButton, italic, bold)} }; } @@ -135,9 +135,6 @@ public class WidgetStyleEditPane extends BasicBeanPane< * 初始化边框线型 */ public void initLineBox() { - lineComboBox = new LineComboBox(WidgetThemeDisplayConstants.BORDER_LINE_STYLE_ARRAY); - lineComboColorSelectBox = new NewColorSelectBox(WidgetThemeDisplayConstants.THEME_WIDGET_COMPONENT_WIDTH, true); - lineComboBox.addItemListener(e -> lineComboColorSelectBox.setVisible(!Integer.valueOf(0).equals(e.getItem()))); } diff --git a/designer-base/src/main/java/com/fr/widgettheme/theme/panel/ControlPreviewCell.java b/designer-base/src/main/java/com/fr/widgettheme/theme/panel/ControlPreviewCell.java index b42c26fcf..ec3603271 100644 --- a/designer-base/src/main/java/com/fr/widgettheme/theme/panel/ControlPreviewCell.java +++ b/designer-base/src/main/java/com/fr/widgettheme/theme/panel/ControlPreviewCell.java @@ -3,6 +3,8 @@ package com.fr.widgettheme.theme.panel; import com.fr.base.BaseUtils; import com.fr.base.Style; import com.fr.base.theme.TemplateTheme; +import com.fr.widgettheme.ThemePreviewTerminal; +import com.fr.widgettheme.theme.widget.style.ThemeTextStyle; import com.fr.widgettheme.theme.widget.style.ThemedWidgetStyle; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.general.FRFont; @@ -14,7 +16,6 @@ import javax.swing.ImageIcon; import javax.swing.JPanel; import java.awt.Color; import java.awt.Dimension; -import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.LayoutManager; @@ -39,6 +40,11 @@ public class ControlPreviewCell extends JPanel { */ protected String value; protected TemplateTheme reportTheme; + + /** + * 主题预览类型,默认为PC端 + */ + protected ThemePreviewTerminal themePreviewTerminal = ThemePreviewTerminal.PC; /** * 字体的颜色 */ @@ -70,9 +76,10 @@ public class ControlPreviewCell extends JPanel { /** * 主题样式变化后监听改变 */ - public void refresh(TemplateTheme reportTheme) { + public void refresh(TemplateTheme reportTheme, ThemePreviewTerminal type) { this.reportTheme = reportTheme; - ThemedWidgetStyle widgetStyle = (ThemedWidgetStyle) this.reportTheme.getWidgetStyle(); + this.themePreviewTerminal = type; + ThemedWidgetStyle widgetStyle = this.themePreviewTerminal.getThemeWidgetStyle(reportTheme); //主题色设置为透明或者插件启动前已有的主题启动插件后主题色为null if (widgetStyle.getThemeColor() == null) { widgetStyle.setThemeColor(DEFAULT_THEME_COLOR); @@ -87,8 +94,7 @@ public class ControlPreviewCell extends JPanel { } public Color getIconColor() { - ThemedWidgetStyle widgetStyle = (ThemedWidgetStyle) reportTheme.getWidgetStyle(); - return widgetStyle.getIconColor(); + return this.themePreviewTerminal.getThemeWidgetStyle(reportTheme).getIconColor(); } protected Icon setStyleTwoIcon(Icon icon, Icon defaultIcon) { @@ -106,13 +112,15 @@ public class ControlPreviewCell extends JPanel { * 填充圆角矩形背景色 */ public void paintBgColor(Graphics g, ThemedWidgetStyle widgetStyle, int alpha) { - Color themeColor = widgetStyle.getWidgetBackground().getColor(); + ThemedWidgetStyle themeWidgetStyle = this.themePreviewTerminal.getThemeWidgetStyle(this.reportTheme); + Color themeColor = themeWidgetStyle.getThemeColor(); themeColor = themeColor == null ? WidgetThemeDisplayConstants.DEFAULT_TRANSPARENT_COLOR : themeColor; g.setColor(new Color(themeColor.getRed(), themeColor.getGreen(), themeColor.getBlue(), alpha)); g.fillRoundRect(0, 0, getSize().width - 1, getSize().height - 1, (int) widgetStyle.getBorderStyle().getRadius(), (int) widgetStyle.getBorderStyle().getRadius()); //需要重新绘制一遍字体,否则会被颜色填充给遮住 Graphics2D g2d = (Graphics2D) g.create(); - FRFont font = FRFont.getInstance(FRFont.DEFAULT_FONTNAME, Font.PLAIN, widgetStyle.getTextStyle().getFontSize(), textColor); + ThemeTextStyle textStyle = themeWidgetStyle.getTextStyle(); + FRFont font = FRFont.getInstance(textStyle.getName(), textStyle.getCompositeFontStyle(), textStyle.getFontSize(), textStyle.getFontColor()); BaseUtils.drawStringStyleInRotation(g2d, getWidth(), getHeight(), this.value, Style.getInstance(font).deriveHorizontalAlignment(Constants.LEFT) .deriveTextStyle(Style.TEXTSTYLE_SINGLELINE), NO_SCALE_RESOLUTION); @@ -125,8 +133,8 @@ public class ControlPreviewCell extends JPanel { return; } Graphics2D g2d = (Graphics2D) g.create(); - ThemedWidgetStyle widgetStyle = (ThemedWidgetStyle) reportTheme.getWidgetStyle(); - FRFont font = FRFont.getInstance(FRFont.DEFAULT_FONTNAME, Font.PLAIN, widgetStyle.getTextStyle().getFontSize(), textColor); + ThemeTextStyle textStyle = this.themePreviewTerminal.getThemeWidgetStyle(reportTheme).getTextStyle(); + FRFont font = FRFont.getInstance(textStyle.getName(), textStyle.getCompositeFontStyle(), textStyle.getFontSize(), textStyle.getFontColor()); //每个预览格子通用的字体绘制 BaseUtils.drawStringStyleInRotation(g2d, getWidth(), getHeight(), this.value, Style.getInstance(font).deriveHorizontalAlignment(Constants.LEFT) diff --git a/designer-base/src/main/java/com/fr/widgettheme/theme/panel/ControlPreviewPane.java b/designer-base/src/main/java/com/fr/widgettheme/theme/panel/ControlPreviewPane.java index 110e6943c..69a34fd3b 100644 --- a/designer-base/src/main/java/com/fr/widgettheme/theme/panel/ControlPreviewPane.java +++ b/designer-base/src/main/java/com/fr/widgettheme/theme/panel/ControlPreviewPane.java @@ -6,6 +6,7 @@ import com.fr.design.i18n.Toolkit; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.mainframe.theme.preview.ThemePreviewed; import com.fr.general.Background; +import com.fr.widgettheme.ThemePreviewTerminal; import javax.swing.JPanel; import java.awt.Color; @@ -42,9 +43,14 @@ public class ControlPreviewPane extends JPanel implements ThemePreviewed pane) { JButton button = new JButton("点击我可以看到Swing的弹框,输出填写的信息"); - panel.add(button); button.addActionListener(e -> { Model returnValue = pane.update(); if (returnValue != null) { - JOptionPane.showMessageDialog(frame, String.format("姓名为:%s,年龄为:%d", returnValue.getName(), returnValue.getAge())); + JOptionPane.showMessageDialog(container.getRootPane(), String.format("姓名为:%s,年龄为:%d", returnValue.getName(), returnValue.getAge())); } }); - frame.setVisible(true); - frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); + container.add(button); + } + + private static void testExecuteJS1(JPanel container, JxUIPane pane) { + JButton button = new JButton("执行回显js对象内容"); + button.addActionListener(e -> { + pane.executeJavaScript("var pagesize={\"page\":1,\"size\":10};"); + Optional value = pane.executeJS("pagesize"); + value.ifPresent(v -> JOptionPane.showMessageDialog(container.getRootPane(), + String.format("page为:%s,年龄为:%s", v.property("page").get(), v.property("size").get()))); + + }); + container.add(button); + + } + + private static void testExecuteJS2(JPanel container, JxUIPane pane) { + JButton button = new JButton("执行回显数字内容"); + button.addActionListener(e -> { + pane.executeJavaScript("var tom = {\"age\":18};"); + Optional value = pane.executeJS("tom.age"); + JOptionPane.showMessageDialog(container.getRootPane(), + String.format("var tom = {\"age\":18}; age:%s", value.get())); + }); + container.add(button); + } @JsAccessible diff --git a/designer-chart/src/main/java/com/fr/van/chart/custom/component/VanChartHyperLinkPane.java b/designer-chart/src/main/java/com/fr/van/chart/custom/component/VanChartHyperLinkPane.java index 8dfb3ac48..5b17494da 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/custom/component/VanChartHyperLinkPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/custom/component/VanChartHyperLinkPane.java @@ -6,6 +6,7 @@ import com.fr.chart.web.ChartHyperPoplink; import com.fr.chart.web.ChartHyperRelateCellLink; import com.fr.chart.web.ChartHyperRelateFloatLink; import com.fr.design.ExtraDesignClassManager; +import com.fr.design.base.mode.DesignModeContext; import com.fr.design.beans.BasicBeanPane; import com.fr.design.chart.javascript.ChartEmailPane; import com.fr.design.chart.series.SeriesCondition.impl.ChartHyperPoplinkPane; @@ -24,7 +25,6 @@ import com.fr.design.javascript.JavaScriptImplPane; import com.fr.design.javascript.ParameterJavaScriptPane; import com.fr.design.mainframe.BaseJForm; import com.fr.design.mainframe.JTemplate; -import com.fr.design.mainframe.chart.mode.ChartEditContext; import com.fr.design.module.DesignModuleFactory; import com.fr.general.ComparatorUtils; import com.fr.general.NameObject; @@ -149,7 +149,7 @@ public class VanChartHyperLinkPane extends VanChartUIListControlPane { } private void refreshNameableCreator() { - if (ChartEditContext.duchampMode()) { + if (DesignModeContext.isDuchampMode()) { return; } HashMap paneMap = getHyperlinkMap(); 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 a1f16beb9..ef9391482 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 @@ -7,6 +7,7 @@ import com.fr.design.gui.frpane.UIPercentDragPane; import com.fr.design.gui.ibutton.UIColorButton; import com.fr.design.gui.ibutton.UIToggleButton; import com.fr.design.gui.icombobox.UIComboBox; +import com.fr.design.utils.DesignUtils; import com.fr.general.IOUtils; import com.fr.util.ColorUtils; import com.fr.widgettheme.theme.widget.style.BorderStyle; @@ -136,6 +137,7 @@ public abstract class BaseStyleSettingPane extends BasicBeanPa buttonStyleDefinedPane = new ButtonStyleDefinedPane(); selectBgColorBox = new NewColorSelectBox(WidgetThemeDisplayConstants.THEME_WIDGET_COMPONENT_WIDTH, true); iconColorSelectBox = new NewColorSelectBox(WidgetThemeDisplayConstants.THEME_WIDGET_COMPONENT_WIDTH, true); + fontNameSelectBox = new UIComboBox(DesignUtils.getAvailableFontFamilyNames4Report()); fontSizePane = new FontSizeComboPane(); fontColorButton = new UIColorButton(); bold = new UIToggleButton(IOUtils.readIcon("/com/fr/design/images/m_format/cellstyle/bold.png")); @@ -145,7 +147,7 @@ public abstract class BaseStyleSettingPane extends BasicBeanPa paneMap.put(StyleSetting.THEME_COLOR, colorSelectBox); paneMap.put(StyleSetting.LINE_TYPE, lineComboBox); paneMap.put(StyleSetting.LINE_COLOR, borderColorSelectBox); - paneMap.put(StyleSetting.TEXT_STYLE, WidgetStyleComponentCombiner.combineTextStyleComponent(fontNameSelectBox, fontSizePane, fontColorButton, bold, italic)); + paneMap.put(StyleSetting.TEXT_STYLE, WidgetStyleComponentCombiner.combineTextStyleComponent(fontNameSelectBox, fontSizePane, fontColorButton, italic, bold)); paneMap.put(StyleSetting.BORDER_RADIUS, borderRadiusSpinner); paneMap.put(StyleSetting.FONT, frFontPane); paneMap.put(StyleSetting.BTN_BACKGROUND, buttonStyleDefinedPane); @@ -268,6 +270,15 @@ public abstract class BaseStyleSettingPane extends BasicBeanPa if (fontColorButton != null) { this.fontColorButton.setColor(textStyle.getFontColor()); } + if (bold != null) { + this.bold.setSelected(textStyle.isBold()); + } + if (italic != null) { + this.italic.setSelected(textStyle.isItalic()); + } + if (fontNameSelectBox != null) { + this.fontNameSelectBox.setSelectedItem(textStyle.getName()); + } } private void setFrFontPane(FRFont font) { diff --git a/designer-form/src/main/java/com/fr/design/widgettheme/common/ButtonSettingPane.java b/designer-form/src/main/java/com/fr/design/widgettheme/common/ButtonSettingPane.java index acdebeb96..f6b140345 100644 --- a/designer-form/src/main/java/com/fr/design/widgettheme/common/ButtonSettingPane.java +++ b/designer-form/src/main/java/com/fr/design/widgettheme/common/ButtonSettingPane.java @@ -3,9 +3,11 @@ package com.fr.design.widgettheme.common; import com.fr.design.widgettheme.StyleSetting; import com.fr.design.widgettheme.BaseStyleSettingPane; import com.fr.form.ui.Widget; +import com.fr.util.ColorUtils; import com.fr.widgettheme.theme.widget.theme.cell.ButtonTheme; import org.jetbrains.annotations.Nullable; +import java.awt.Color; import java.util.Arrays; import java.util.List; @@ -64,6 +66,9 @@ public class ButtonSettingPane extends BaseStyleSettingPane } else { styleSettingHead.setSelectedIndex(1); colorSelectBox.setSelectObject(buttonTheme.getThemeColor()); + Color widgetBgColor = buttonTheme.getWidgetBackground().getColor(); + widgetBgColorSelectBox.setSelectObject(ColorUtils.ignoreColorAlpha(widgetBgColor)); + widgetBgAlphaDragPane.populateBean(ColorUtils.roundColorAlphaDouble(widgetBgColor)); assignFontSizePane(buttonTheme); } switchCard(); @@ -83,6 +88,7 @@ public class ButtonSettingPane extends BaseStyleSettingPane protected void updateButtonStyleBean(ButtonTheme buttonTheme) { buttonTheme.setThemeColor(colorSelectBox.getSelectObject()); + buttonTheme.setWidgetBackground(ColorUtils.createColorBackgroundWithAlpha(widgetBgColorSelectBox.getSelectObject(), widgetBgAlphaDragPane.updateBean())); assignFontSizeStyle(buttonTheme); switchCard(); } diff --git a/designer-form/src/main/java/com/fr/design/widgettheme/common/EditorSettingPane.java b/designer-form/src/main/java/com/fr/design/widgettheme/common/EditorSettingPane.java index ea547eb67..17bbbe2c1 100644 --- a/designer-form/src/main/java/com/fr/design/widgettheme/common/EditorSettingPane.java +++ b/designer-form/src/main/java/com/fr/design/widgettheme/common/EditorSettingPane.java @@ -78,6 +78,7 @@ public class EditorSettingPane extends BaseStyleSettingPane colorSelectBox.setSelectObject(editorTheme.getThemeColor()); lineComboBox.setSelectedLineStyle(editorTheme.getBorderStyle().getLineType()); borderRadiusSpinner.setValue(editorTheme.getBorderStyle().getRadius()); + borderColorSelectBox.setSelectObject(editorTheme.getBorderStyle().getBorderColor()); widgetBgColorSelectBox.setSelectObject(ColorUtils.ignoreColorAlpha(editorTheme.getWidgetBackground().getColor())); widgetBgAlphaDragPane.populateBean(ColorUtils.roundColorAlphaDouble(editorTheme.getWidgetBackground().getColor())); iconColorSelectBox.setSelectObject(editorTheme.getIconColor()); @@ -110,6 +111,7 @@ public class EditorSettingPane extends BaseStyleSettingPane editorTheme.setSelectBoxBgColor(selectBgColorBox.getSelectObject()); editorTheme.setBorderStyle(new BorderStyle((int) borderRadiusSpinner.getValue(), lineComboBox.getSelectedLineStyle(), borderColorSelectBox.getSelectObject())); editorTheme.setWidgetBackground(ColorUtils.createColorBackgroundWithAlpha(widgetBgColorSelectBox.getSelectObject(), widgetBgAlphaDragPane.updateBean())); + editorTheme.setIconColor(iconColorSelectBox.getSelectObject()); assignFontSizeStyle(editorTheme); switchCard(); } diff --git a/designer-form/src/main/java/com/fr/design/widgettheme/common/NormalButtonSettingPane.java b/designer-form/src/main/java/com/fr/design/widgettheme/common/NormalButtonSettingPane.java index 2cfc721e5..7fa1efbe8 100644 --- a/designer-form/src/main/java/com/fr/design/widgettheme/common/NormalButtonSettingPane.java +++ b/designer-form/src/main/java/com/fr/design/widgettheme/common/NormalButtonSettingPane.java @@ -61,8 +61,10 @@ public class NormalButtonSettingPane extends BaseStyleSettingP styleSettingHead.setSelectedIndex(0); } else { styleSettingHead.setSelectedIndex(1); - lineComboBox.setSelectedLineStyle(widgetTheme.getBorderStyle().getLineType()); - borderRadiusSpinner.setValue(widgetTheme.getBorderStyle().getRadius()); + BorderStyle borderStyle = widgetTheme.getBorderStyle(); + lineComboBox.setSelectedLineStyle(borderStyle.getLineType()); + borderRadiusSpinner.setValue(borderStyle.getRadius()); + borderColorSelectBox.setSelectObject(borderStyle.getBorderColor()); assignFontPane(widgetTheme); buttonStyleDefinedPane.populate(ButtonBackground.create(widgetTheme.getButtonBackgroundStyle())); } diff --git a/designer-form/src/main/java/com/fr/design/widgettheme/common/TreeEditorSettingPane.java b/designer-form/src/main/java/com/fr/design/widgettheme/common/TreeEditorSettingPane.java index 6f6676071..a2e570dfe 100644 --- a/designer-form/src/main/java/com/fr/design/widgettheme/common/TreeEditorSettingPane.java +++ b/designer-form/src/main/java/com/fr/design/widgettheme/common/TreeEditorSettingPane.java @@ -3,9 +3,11 @@ package com.fr.design.widgettheme.common; import com.fr.design.widgettheme.StyleSetting; import com.fr.design.widgettheme.BaseStyleSettingPane; import com.fr.form.ui.TreeEditor; +import com.fr.util.ColorUtils; import com.fr.widgettheme.theme.widget.theme.cell.TreeTheme; import org.jetbrains.annotations.Nullable; +import java.awt.Color; import java.util.Arrays; import java.util.List; @@ -56,6 +58,9 @@ public class TreeEditorSettingPane extends BaseStyleSettin } else { styleSettingHead.setSelectedIndex(1); colorSelectBox.setSelectObject(treeTheme.getThemeColor()); + Color widgetBgColor = treeTheme.getWidgetBackground().getColor(); + widgetBgColorSelectBox.setSelectObject(ColorUtils.ignoreColorAlpha(widgetBgColor)); + widgetBgAlphaDragPane.populateBean(ColorUtils.roundColorAlphaDouble(widgetBgColor)); assignFontSizePane(treeTheme); } switchCard(); @@ -83,6 +88,7 @@ public class TreeEditorSettingPane extends BaseStyleSettin protected void updateTreeStyleBean(TreeTheme treeTheme) { treeTheme.setThemeColor(colorSelectBox.getSelectObject()); + treeTheme.setWidgetBackground(ColorUtils.createColorBackgroundWithAlpha(widgetBgColorSelectBox.getSelectObject(), widgetBgAlphaDragPane.updateBean())); assignFontSizeStyle(treeTheme); switchCard(); }