package com.fr.design.mainframe.mobile.ui.radiogroup; import com.fr.design.constants.LayoutConstants; import com.fr.design.designer.IntervalConstants; import com.fr.design.dialog.AttrScrollPane; import com.fr.design.dialog.BasicScrollPane; import com.fr.design.gui.ibutton.UIColorButton; import com.fr.design.gui.icombobox.LineComboBox; import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ispinner.UISpinner; 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.mainframe.mobile.ui.MobileStyleCustomDefinePane; import com.fr.design.mainframe.mobile.utils.DesignerUtils; import com.fr.design.mainframe.mobile.utils.FontConfigPane; import com.fr.design.style.color.NewColorSelectBox; import com.fr.form.ui.Widget; import com.fr.form.ui.mobile.MobileStyle; import com.fr.form.ui.mobile.radiogroup.UnitedMobileStyle; import com.fr.general.FRFont; import com.fr.stable.Constants; import javax.swing.*; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import java.awt.*; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; public class UnitedCustomDefinePane extends MobileStyleCustomDefinePane { private JPanel scrollPanel; private UIComboBox custom; private JPanel centerPane; private UISpinner leftSpinner; private UISpinner rightSpinner; private UISpinner topSpinner; private UISpinner bottomSpinner; private UIComboBox buttonAlignCombo; private NewColorSelectBox initialColorSelectBox; private NewColorSelectBox selectedColorSelectBox; private LineComboBox borderLineCombo; private NewColorSelectBox borderColor; private UISpinner borderRadiusSpinner; private FontConfigPane initialFontConfPane; private UIColorButton selectedFontColor; public UnitedCustomDefinePane(Widget widget) { super(widget); } @Override protected JPanel createPreviewPane() { return null; } @Override protected void init() { this.setLayout(FRGUIPaneFactory.createBorderLayout()); this.addScrollPane(); this.addStyleSelectPane(); this.addConfigPane(); } private void addScrollPane() { scrollPanel = FRGUIPaneFactory.createBorderLayout_S_Pane(); BasicScrollPane basicScrollPane = new AttrScrollPane() { @Override protected JPanel createContentPane() { return scrollPanel; } }; this.add(basicScrollPane); } private void addStyleSelectPane() { JPanel stylePanel = new JPanel(); stylePanel.setLayout(new FlowLayout(FlowLayout.LEFT, 5, 0)); UILabel buttonStyleLabel = DesignerUtils.createConfigLabel(Toolkit.i18nText("Fine-Plugin-RadioGroup_Style")); custom = new UIComboBox(new String[]{Toolkit.i18nText("Fine-Plugin-RadioGroup_Style_Default"), Toolkit.i18nText("Fine-Plugin-RadioGroup_Style_Custom")}); custom.setPreferredSize(new Dimension(DesignerUtils.NORMAL_COMBO_WIDTH, 20)); custom.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { boolean isCustom = custom.getSelectedIndex() == 1; centerPane.setVisible(isCustom); } }); stylePanel.add(buttonStyleLabel); stylePanel.add(custom); scrollPanel.add(stylePanel, BorderLayout.NORTH); } private void addConfigPane() { centerPane = createCenterPane(); centerPane.setVisible(false); addPaddingPane(); addBackgroundPane(); addBorderPane(); addFontPane(); scrollPanel.add(centerPane, BorderLayout.CENTER); custom.setSelectedIndex(1); } private JPanel createCenterPane() { return FRGUIPaneFactory.createVerticalFlowLayout_Pane(true, FlowLayout.LEADING, 0, 10); } private void addPaddingPane() { centerPane.add(DesignerUtils.createTitleSplitLine(Toolkit.i18nText("Fine-Plugin-RadioGroup_Layout"))); UILabel buttonAlignLabel = DesignerUtils.createConfigLabel(Toolkit.i18nText("Fine-Plugin-RadioGroup_Alignment")); UILabel paddingHintLabel = DesignerUtils.createConfigLabel(Toolkit.i18nText("Fine-Plugin-RadioGroup_Button_Padding")); UILabel emptyHintLabel = DesignerUtils.createConfigLabel(Toolkit.i18nText("")); UILabel leftLabel = new UILabel(Toolkit.i18nText("Fine-Plugin-RadioGroup_Padding_Left")); leftSpinner = new UISpinner(0, Integer.MAX_VALUE, 1, DesignerUtils.kDefaultHorizontalPadding); UILabel rightLabel = new UILabel(Toolkit.i18nText("Fine-Plugin-RadioGroup_Padding_Right")); rightSpinner = new UISpinner(0, Integer.MAX_VALUE, 1, DesignerUtils.kDefaultHorizontalPadding); UILabel topLabel = new UILabel(Toolkit.i18nText("Fine-Plugin-RadioGroup_Padding_Top")); topSpinner = new UISpinner(0, Integer.MAX_VALUE, 1, DesignerUtils.kDefaultVerticalPadding); UILabel bottomLabel = new UILabel(Toolkit.i18nText("Fine-Plugin-RadioGroup_Padding_Bottom")); bottomSpinner = new UISpinner(0, Integer.MAX_VALUE, 1, DesignerUtils.kDefaultVerticalPadding); JPanel leftSpinnerPanel = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{new Component[]{leftLabel, leftSpinner}}, TableLayoutHelper.FILL_LASTCOLUMN, IntervalConstants.INTERVAL_L1, LayoutConstants.VGAP_SMALL); JPanel rightSpinnerPanel = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{new Component[]{rightLabel, rightSpinner}}, TableLayoutHelper.FILL_LASTCOLUMN, IntervalConstants.INTERVAL_L1, LayoutConstants.VGAP_SMALL); JPanel topSpinnerPanel = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{new Component[]{topLabel, topSpinner}}, TableLayoutHelper.FILL_LASTCOLUMN, IntervalConstants.INTERVAL_L1, LayoutConstants.VGAP_SMALL); JPanel bottomSpinnerPanel = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{new Component[]{bottomLabel, bottomSpinner}}, TableLayoutHelper.FILL_LASTCOLUMN, IntervalConstants.INTERVAL_L1, LayoutConstants.VGAP_SMALL); JPanel vPaddingSpinnerPanel = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{new Component[]{topSpinnerPanel, bottomSpinnerPanel}}, TableLayoutHelper.FILL_LASTCOLUMN, IntervalConstants.INTERVAL_W1, LayoutConstants.VGAP_SMALL); JPanel hPaddingSpinnerPanel = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{new Component[]{leftSpinnerPanel, rightSpinnerPanel}}, TableLayoutHelper.FILL_LASTCOLUMN, IntervalConstants.INTERVAL_W1, LayoutConstants.VGAP_SMALL); // 按钮排布下拉框 buttonAlignCombo = new UIComboBox(new String[]{ Toolkit.i18nText("Fine-Plugin-RadioGroup_Alignment_Split"), Toolkit.i18nText("Fine-Plugin-RadioGroup_Alignment_Nature"), }); buttonAlignCombo.setPreferredSize(new Dimension(DesignerUtils.NORMAL_COMBO_WIDTH, 20)); double p = TableLayout.PREFERRED; double[] rowSize = {p, p, p}; double[] columnSize = {p, p}; JPanel paddingPanel = TableLayoutHelper.createCommonTableLayoutPane(new Component[][]{ {paddingHintLabel, vPaddingSpinnerPanel}, {emptyHintLabel, hPaddingSpinnerPanel}, {buttonAlignLabel, buttonAlignCombo} }, rowSize, columnSize, 10); centerPane.add(paddingPanel); } private void addBackgroundPane() { centerPane.add(DesignerUtils.createTitleSplitLine(Toolkit.i18nText("Fine-Plugin-RadioGroup_Background"))); UILabel initialColorLabel = DesignerUtils.createConfigLabel(Toolkit.i18nText("Fine-Plugin-RadioGroup_Background_Init")); initialColorSelectBox = DesignerUtils.createNormalColorSelectBox(new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { } }); initialColorSelectBox.setSelectObject(Color.WHITE); JPanel initialColorSelectPane = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{new Component[]{initialColorLabel, initialColorSelectBox}}, TableLayoutHelper.FILL_LASTCOLUMN, IntervalConstants.INTERVAL_L1, LayoutConstants.VGAP_MEDIUM); centerPane.add(initialColorSelectPane); UILabel selectedColorLabel = DesignerUtils.createConfigLabel(Toolkit.i18nText("Fine-Plugin-RadioGroup_Background_Select")); selectedColorSelectBox = DesignerUtils.createNormalColorSelectBox(new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { } }); selectedColorSelectBox.setSelectObject(new Color(31, 173, 229)); JPanel selectedColorSelectPane = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{new Component[]{selectedColorLabel, selectedColorSelectBox}}, TableLayoutHelper.FILL_LASTCOLUMN, IntervalConstants.INTERVAL_L1, LayoutConstants.VGAP_MEDIUM); centerPane.add(selectedColorSelectPane); } private void addBorderPane() { centerPane.add(DesignerUtils.createTitleSplitLine(Toolkit.i18nText("Fine-Plugin-RadioGroup_Border"))); UILabel borderTypeLabel = DesignerUtils.createConfigLabel(Toolkit.i18nText("Fine-Plugin-RadioGroup_Border_Line")); borderLineCombo = new LineComboBox(DesignerUtils.BORDER_LINE_STYLE_ARRAY); borderLineCombo.setSelectedLineStyle(Constants.LINE_THIN); UILabel colorLabel = DesignerUtils.createConfigLabel(Toolkit.i18nText("Fine-Plugin-RadioGroup_Border_Color")); borderColor = DesignerUtils.createNormalColorSelectBox(new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { } }); borderColor.setSelectObject(new Color(31, 173, 229) ); UILabel radiusLabel = DesignerUtils.createConfigLabel(Toolkit.i18nText("Fine-Plugin-RadioGroup_Border_Radius")); borderRadiusSpinner = new UISpinner(0, Integer.MAX_VALUE, 1, 2); borderRadiusSpinner.setPreferredSize(new Dimension(DesignerUtils.NORMAL_COMBO_WIDTH, 20)); double p = TableLayout.PREFERRED; double[] rowSize = {p, p, p}; double[] columnSize = {p, p}; JPanel borderPanel = TableLayoutHelper.createCommonTableLayoutPane(new Component[][] { {borderTypeLabel, borderLineCombo}, {colorLabel, borderColor}, {radiusLabel, borderRadiusSpinner} }, rowSize, columnSize, 10); centerPane.add(borderPanel); } private void addFontPane() { centerPane.add(DesignerUtils.createTitleSplitLine(Toolkit.i18nText("Fine-Plugin-RadioGroup_Font"))); UILabel initialFontLabel = DesignerUtils.createConfigLabel(Toolkit.i18nText("Fine-Plugin-RadioGroup_Font_init")); initialFontConfPane = new FontConfigPane(); initialFontConfPane.setFontColor(new Color(31, 173, 229)); JPanel fontPanel = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{new Component[]{initialFontLabel, initialFontConfPane}}, TableLayoutHelper.FILL_LASTCOLUMN, IntervalConstants.INTERVAL_L1, LayoutConstants.VGAP_MEDIUM); centerPane.add(fontPanel); UILabel selectedFontLabel = DesignerUtils.createConfigLabel(Toolkit.i18nText("Fine-Plugin-RadioGroup_Font_Select")); selectedFontColor = new UIColorButton(); selectedFontColor.setPreferredSize(new Dimension(20, 20)); selectedFontColor.setColor(Color.WHITE); JPanel selectFontColorPanel = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{new Component[]{selectedFontLabel, selectedFontColor}}, TableLayoutHelper.FILL_LASTCOLUMN, IntervalConstants.INTERVAL_L1, LayoutConstants.VGAP_MEDIUM); centerPane.add(selectFontColorPanel); } @Override public void populateBean(MobileStyle ob) { UnitedMobileStyle mobileStyle = (UnitedMobileStyle) ob; custom.setSelectedIndex(mobileStyle.isCustom() ? 1 : 0); leftSpinner.setValue(mobileStyle.getLeftPadding()); rightSpinner.setValue(mobileStyle.getRightPadding()); topSpinner.setValue(mobileStyle.getTopPadding()); bottomSpinner.setValue(mobileStyle.getBottomPadding()); buttonAlignCombo.setSelectedIndex(mobileStyle.getButtonAlign()); initialColorSelectBox.setSelectObject(mobileStyle.getInitialBackgroundColor()); selectedColorSelectBox.setSelectObject(mobileStyle.getSelectedBackgroundColor()); borderLineCombo.setSelectedLineStyle(mobileStyle.getBorderType()); borderColor.setSelectObject(mobileStyle.getBorderColor()); borderRadiusSpinner.setValue(mobileStyle.getBorderRadius()); if(mobileStyle.getInitialFont() != null) { initialFontConfPane.populate(mobileStyle.getInitialFont()); } if(mobileStyle.getSelectedFont() != null) { selectedFontColor.setColor(mobileStyle.getSelectedFont().getForeground()); } } @Override public MobileStyle updateBean() { UnitedMobileStyle mobileStyle = (UnitedMobileStyle)this.widget.getMobileStyle(); mobileStyle.setCustom(custom.getSelectedIndex() == 1); mobileStyle.setLeftPadding(leftSpinner.getValue()); mobileStyle.setRightPadding(rightSpinner.getValue()); mobileStyle.setTopPadding(topSpinner.getValue()); mobileStyle.setBottomPadding(bottomSpinner.getValue()); mobileStyle.setButtonAlign(buttonAlignCombo.getSelectedIndex()); mobileStyle.setInitialBackgroundColor(initialColorSelectBox.getSelectObject()); mobileStyle.setSelectedBackgroundColor(selectedColorSelectBox.getSelectObject()); mobileStyle.setBorderType(borderLineCombo.getSelectedLineStyle()); mobileStyle.setBorderColor(borderColor.getSelectObject()); mobileStyle.setBorderRadius(borderRadiusSpinner.getValue()); FRFont initialFont = initialFontConfPane.updateFont(null, null, null); FRFont selectedFont = initialFontConfPane.updateFont(selectedFontColor.getColor(), null, null); selectedFont.setForeground(selectedFontColor.getColor()); mobileStyle.setInitialFont(initialFont); mobileStyle.setSelectedFont(selectedFont); return mobileStyle; } @Override protected String title4PopupWindow() { return null; } }