package com.fr.widgettheme.theme.edit.widget; import com.fine.swing.ui.layout.Column; 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.frpane.UIPercentDragPane; import com.fr.design.gui.ibutton.UIColorButton; import com.fr.design.gui.ibutton.UIToggleButton; import com.fr.design.gui.icombobox.LineComboBox; import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ispinner.UISpinner; import com.fr.design.gui.style.FRFontPane; 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.design.style.color.NewColorSelectBox; import com.fr.design.widget.FRWidgetFactory; import com.fr.general.IOUtils; import com.fr.stable.StringUtils; import com.fr.widgettheme.theme.widget.theme.WidgetThemeDisplayConstants; import com.fr.widgettheme.util.WidgetStyleComponentCombiner; import com.fr.widgettheme.util.WidgetThemeDesignerUtils; import org.jetbrains.annotations.Nullable; import javax.swing.BorderFactory; import javax.swing.JPanel; import java.awt.BorderLayout; import java.awt.Component; import static com.fine.swing.ui.layout.Layouts.cell; import static com.fine.swing.ui.layout.Layouts.column; /** * 组件样式编辑基础类 * * @author Coral.Chen * @since 11.0 * Created on 2023/5/22 */ public class WidgetStyleEditPane extends BasicBeanPane { // 主题色 protected NewColorSelectBox colorSelectBox; // 边框线型 protected LineComboBox lineComboBox; /** * 边框颜色 */ protected NewColorSelectBox lineComboColorSelectBox; // 圆角边框 protected UISpinner borderRadiusSpinner; /** * 文本样式面板 */ protected FontSizeComboPane fontSizePane; protected UIColorButton fontColorButton; /** * 控件背景和透明度配置面板 */ protected NewColorSelectBox widgetBgColorSelectBox; protected UIPercentDragPane widgetBgAlphaDragPane; /** * 图标颜色 */ protected NewColorSelectBox iconColorSelectBox; /** * 字体粗体斜体配置 */ protected UIToggleButton bold; protected UIToggleButton italic; protected JPanel leftPanel; public WidgetStyleEditPane() { initComponents(); } private void initComponents() { this.setLayout(FRGUIPaneFactory.createBorderLayout()); initCommonStyleEditor(); double f = TableLayout.FILL; final double p = TableLayout.PREFERRED; double[] rowSize = {p, p, p, p, p, p, p, p, p}; double[] columnSize = {p, WidgetThemeDisplayConstants.THEME_WIDGET_COMPONENTS_COL_WIDTH}; int[][] rowCount = {{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}}; Component[][] components = generateComponent(); JPanel customPane = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_W1, IntervalConstants.INTERVAL_L1); customPane.setBorder(BorderFactory.createEmptyBorder(20, 10, 20, 10)); this.add(customPane, BorderLayout.NORTH); UIScrollPane scrollPane = new UIScrollPane(customPane); this.add(scrollPane); } /** * 初始化标签 * * @return components */ public Component[][] generateComponent() { return new Component[][]{ new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Widget_Theme_Color")), colorSelectBox}, new Component[]{WidgetThemeDesignerUtils.createTopAlignmentLabel(Toolkit.i18nText("Fine-Design_Widget_Theme_Widget_Background")), initBackGroundComponent()}, new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Widget_Theme_Border_Line")), lineComboBox}, 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, italic, bold)} }; } private Column initBackGroundComponent() { return column(10, cell(widgetBgColorSelectBox), cell(FRWidgetFactory.createLineWrapLabel(Toolkit.i18nText("Fine-Design_Form_Widget-Style_Alpha"))), cell(widgetBgAlphaDragPane) ).getComponent(); } private void initCommonStyleEditor() { colorSelectBox = new NewColorSelectBox(WidgetThemeDisplayConstants.THEME_WIDGET_COMPONENT_WIDTH, true); colorSelectBox.setSelectObject(WidgetThemeDisplayConstants.DEFAULT_THEME_COLOR); widgetBgColorSelectBox = new NewColorSelectBox(WidgetThemeDisplayConstants.THEME_WIDGET_COMPONENT_WIDTH, true); widgetBgAlphaDragPane = new UIPercentDragPane(); initLineBox(); borderRadiusSpinner = new UISpinner(0, Integer.MAX_VALUE, 1); iconColorSelectBox = new NewColorSelectBox(WidgetThemeDisplayConstants.THEME_WIDGET_COMPONENT_WIDTH, true); initFontSizePane(); fontColorButton = new UIColorButton(); bold = new UIToggleButton(IOUtils.readIcon("/com/fr/design/images/m_format/cellstyle/bold.png")); italic = new UIToggleButton(IOUtils.readIcon("/com/fr/design/images/m_format/cellstyle/italic.png")); } protected void initFontSizePane() { fontSizePane = new FontSizeComboPane(FRFontPane.getFontSizes()); } /** * 初始化边框线型 */ public void initLineBox() { } @Override public void populateBean(T t) { } @Nullable @Override public T updateBean() { return null; } @Override public void updateBean(T t) { } @Override protected String title4PopupWindow() { return StringUtils.EMPTY; } }