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.ibutton.UIButtonGroup; 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; import java.awt.BorderLayout; import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; /** * 组件主题编辑容器,包含移动端控制面板和桌面端控制面板 * 默认展开桌面端 * * @author Coral.Chen * @since 11.0 * Created on 2023/3/28 */ public class WidgetStyleEditContainerPane extends BasicBeanPane { private UIButtonGroup terminalStyleGroup; private WidgetStyleEditPane desktop; private WidgetStyleEditPane mobile; public WidgetStyleEditContainerPane() { initComponent(); } private void initComponent() { this.setLayout(FRGUIPaneFactory.createBorderLayout()); // 初始化按钮组,桌面端&移动端 initButtonGroup(); // 创建按钮组面板 createButtonGroupPane(); // 默认选中桌面端 terminalStyleGroup.setSelectedIndex(0); // cardLayout用来切换面板 // 桌面端 initDesktopPanel(); // 移动端 initMobilePanel(); createCardContainer(); initListener(); } private void createCardContainer() { JPanel cardPanel = FRGUIPaneFactory.createCardLayout_S_Pane(); cardPanel.add(desktop, BorderLayout.CENTER); cardPanel.add(mobile, BorderLayout.CENTER); this.add(cardPanel, BorderLayout.CENTER); } private void initMobilePanel() { mobile = new MobileWidgetStyleEditPane<>(); mobile.setVisible(false); } private void initDesktopPanel() { desktop = new DesktopWidgetStyleEditPane<>(); // 默认可见性 desktop.setVisible(true); } private void createButtonGroupPane() { Component[][] components = { new Component[]{terminalStyleGroup}, }; final double p = TableLayout.PREFERRED; double[] rowSize = {p}; double[] columnSize = {p, p}; int[][] rowCount = {{1, 1}}; JPanel groupPane = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_W1, IntervalConstants.INTERVAL_L1); this.add(groupPane, BorderLayout.NORTH); } /** * 初始化按钮组 */ private void initButtonGroup() { terminalStyleGroup = new UIButtonGroup<>(new String[]{ Toolkit.i18nText("Fine-Design_Widget_Terminal_Desktop"), Toolkit.i18nText("Fine-Design_Widget_Terminal_Mobile")}); this.add(terminalStyleGroup, BorderLayout.NORTH); terminalStyleGroup.setSelectedIndex(0); } /** * 初始化按钮组的listener */ private void initListener() { terminalStyleGroup.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { showTerminalPane(); } }); } /** * 展示具体面板 */ private void showTerminalPane() { desktop.setVisible(terminalStyleGroup.getSelectedIndex() == 0); mobile.setVisible(terminalStyleGroup.getSelectedIndex() == 1); } @Override public void populateBean(T ob) { desktop.populateBean(ob); mobile.populateBean(ob); } @Nullable @Override public T updateBean() { return null; } @Override public void updateBean(T ob) { desktop.updateBean(ob); mobile.updateBean(ob); } @Override protected String title4PopupWindow() { return Toolkit.i18nText("Fine-Design_Theme_Widget_Style"); } public ThemePreviewTerminal getTerminalStyle() { return ThemePreviewTerminal.getTypeByCode(terminalStyleGroup.getSelectedIndex()); } }