diff --git a/designer-base/src/main/java/com/fr/design/fun/CellExpandAttrPanelProvider.java b/designer-base/src/main/java/com/fr/design/fun/CellExpandAttrPanelProvider.java index ec37e1600..fd3953564 100644 --- a/designer-base/src/main/java/com/fr/design/fun/CellExpandAttrPanelProvider.java +++ b/designer-base/src/main/java/com/fr/design/fun/CellExpandAttrPanelProvider.java @@ -18,4 +18,11 @@ public interface CellExpandAttrPanelProvider extends Mutable { * @return 创建单元格属性-扩展设置中的额外面板 */ BasicBeanPane createPanel(); + + /** + * 是否应该展示 + * + * @return return {@code true} if extra panel is displayable + */ + boolean isDisplayable(); } diff --git a/designer-base/src/main/java/com/fr/design/fun/impl/AbstractCellExpandAttrPanelProvider.java b/designer-base/src/main/java/com/fr/design/fun/impl/AbstractCellExpandAttrPanelProvider.java index 3ec730862..d0b1eca5c 100644 --- a/designer-base/src/main/java/com/fr/design/fun/impl/AbstractCellExpandAttrPanelProvider.java +++ b/designer-base/src/main/java/com/fr/design/fun/impl/AbstractCellExpandAttrPanelProvider.java @@ -36,4 +36,8 @@ public class AbstractCellExpandAttrPanelProvider implements CellExpandAttrPanelP public BasicBeanPane createPanel() { return null; } + + public boolean isDisplayable() { + return true; + } } diff --git a/designer-base/src/main/java/com/fr/design/mainframe/mobile/ui/MobileStyleDefinePane.java b/designer-base/src/main/java/com/fr/design/mainframe/mobile/ui/MobileStyleDefinePane.java index 5f11e46db..e418bba0e 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/mobile/ui/MobileStyleDefinePane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/mobile/ui/MobileStyleDefinePane.java @@ -5,6 +5,7 @@ import com.fr.design.beans.BasicBeanPane; import com.fr.design.constants.LayoutConstants; import com.fr.design.designer.IntervalConstants; 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; @@ -21,14 +22,14 @@ import com.fr.stable.Constants; import javax.swing.JPanel; import javax.swing.border.TitledBorder; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Font; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; public class MobileStyleDefinePane extends BasicBeanPane { @@ -42,6 +43,8 @@ public class MobileStyleDefinePane extends BasicBeanPane { private Widget widget; private MobileStyleCustomDefinePane customBeanPane; private Class mobileStyleClazz; + private UIComboBox customCombo; + private JPanel settingPane; private ColorSelectBox colorSelectBox; private Color titleColor = new Color(47, 142, 241); private JPanel commomPane; @@ -62,6 +65,8 @@ public class MobileStyleDefinePane extends BasicBeanPane { @Override public void populateBean(MobileStyle ob) { this.customBeanPane.populateBean(ob); + + customCombo.setSelectedIndex(ob.isCommonCustom() ? 1 : 0); if(ob.getBackground() != null) { colorSelectBox.setSelectObject(((ColorBackground)ob.getBackground()).getColor()); } @@ -83,6 +88,7 @@ public class MobileStyleDefinePane extends BasicBeanPane { MobileStyle mobileStyle = Reflect.on(mobileStyleClazz).create().get(); this.widget.setMobileStyle(mobileStyle); this.customBeanPane.updateBean(); + mobileStyle.setCommonCustom(customCombo.getSelectedIndex() == 1); mobileStyle.setBackground(ColorBackground.getInstance(colorSelectBox.getSelectObject())); mobileStyle.setBorderType(borderType.getSelectedLineStyle()); mobileStyle.setBorderColor(borderColor.getSelectObject()); @@ -126,6 +132,23 @@ public class MobileStyleDefinePane extends BasicBeanPane { commomPane.setBorder(titledBorder); this.add(commomPane, BorderLayout.NORTH); + + customCombo = new UIComboBox(new String[]{Toolkit.i18nText("Fine-Design_Mobile_Default"), Toolkit.i18nText("Fine-Design_Mobile_Custom")}); + customCombo.setSelectedIndex(0); + customCombo.setPreferredSize(new Dimension(NORMAL_COMBO_WIDTH + 15, 20)); + customCombo.addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + boolean custom = customCombo.getSelectedIndex() == 1; + settingPane.setVisible(custom); + } + }); + commomPane.add(createLeftRightComponentsPane(createConfigLabel(Toolkit.i18nText("Fine-Design_Mobile_Attribute_Settings")), customCombo)); + + settingPane = FRGUIPaneFactory.createVerticalFlowLayout_Pane(true, FlowLayout.LEADING, 0, 10); + settingPane.setVisible(false); + commomPane.add(settingPane); + createBackgroundPane(); createBorderPane(); createIconSettingPane(); @@ -136,7 +159,7 @@ public class MobileStyleDefinePane extends BasicBeanPane { colorSelectBox = new ColorSelectBox(NORMAL_COMBO_WIDTH); JPanel backgroundPane = createLeftRightComponentsPane(createConfigLabel(Toolkit.i18nText("Fine-Design_Mobile_Widget_Background")), colorSelectBox); - commomPane.add(backgroundPane); + settingPane.add(backgroundPane); } private void createBorderPane() { @@ -146,19 +169,20 @@ public class MobileStyleDefinePane extends BasicBeanPane { borderColor = new NewColorSelectBox(NORMAL_COMBO_WIDTH); borderRadius = new UISpinner(0, Integer.MAX_VALUE, 1, 2); borderRadius.setPreferredSize(new Dimension(NORMAL_COMBO_WIDTH + 20, 20)); - commomPane.add(createLeftRightComponentsPane(createConfigLabel(Toolkit.i18nText("Fine-Design_Mobile_Widget_BorderType")), borderType)); - commomPane.add(createLeftRightComponentsPane(createConfigLabel(Toolkit.i18nText("Fine-Design_Mobile_Widget_BorderColor")), borderColor)); - commomPane.add(createLeftRightComponentsPane(createConfigLabel(Toolkit.i18nText("Fine-Design_Mobile_Widget_BorderRadius")), borderRadius)); + settingPane.add(createLeftRightComponentsPane(createConfigLabel(Toolkit.i18nText("Fine-Design_Mobile_Widget_BorderType")), borderType)); + settingPane.add(createLeftRightComponentsPane(createConfigLabel(Toolkit.i18nText("Fine-Design_Mobile_Widget_BorderColor")), borderColor)); + settingPane.add(createLeftRightComponentsPane(createConfigLabel(Toolkit.i18nText("Fine-Design_Mobile_Widget_BorderRadius")), borderRadius)); } private void createIconSettingPane() { iconColor = new NewColorSelectBox(NORMAL_COMBO_WIDTH); - commomPane.add(createLeftRightComponentsPane(createConfigLabel(Toolkit.i18nText("Fine-Design_Mobile_Widget_Icon_Color")), iconColor)); + iconColor.setSelectObject(new Color(31,173,229)); + settingPane.add(createLeftRightComponentsPane(createConfigLabel(Toolkit.i18nText("Fine-Design_Mobile_Widget_Icon_Color")), iconColor)); } private void createFontPane() { fontConfigPane = new MobileStyleFontConfigPane(); - commomPane.add(createLeftRightComponentsPane(createConfigLabel(Toolkit.i18nText("Fine-Design_Mobile_Widget_Font")), fontConfigPane)); + settingPane.add(createLeftRightComponentsPane(createConfigLabel(Toolkit.i18nText("Fine-Design_Mobile_Widget_Font")), fontConfigPane)); } private void createCustomPane() { diff --git a/designer-base/src/main/java/com/fr/design/mainframe/mobile/ui/MobileStyleFontConfigPane.java b/designer-base/src/main/java/com/fr/design/mainframe/mobile/ui/MobileStyleFontConfigPane.java index f765e2584..3c756db09 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/mobile/ui/MobileStyleFontConfigPane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/mobile/ui/MobileStyleFontConfigPane.java @@ -2,6 +2,7 @@ package com.fr.design.mainframe.mobile.ui; import com.fr.base.BaseUtils; import com.fr.design.constants.LayoutConstants; +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.icombobox.UIComboBoxRenderer; @@ -16,7 +17,6 @@ import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPanel; import java.awt.BorderLayout; -import java.awt.Color; import java.awt.Component; import java.awt.Dimension; import java.awt.FlowLayout; @@ -31,7 +31,6 @@ public class MobileStyleFontConfigPane extends JPanel { public static Vector getFontSizes() { Vector FONT_SIZES = new Vector(); - FONT_SIZES.add(FONT_NONE); for (int i = MIN_FONT_SIZE; i <= MAX_FONT_SIZE; i++) { FONT_SIZES.add(i); } @@ -39,7 +38,7 @@ public class MobileStyleFontConfigPane extends JPanel { } private UIComboBox fontSizeComboBox; - private UIToggleButton underline; + private UIColorButton color; private UIToggleButton italic; private UIToggleButton bold; @@ -51,10 +50,10 @@ public class MobileStyleFontConfigPane extends JPanel { fontSizeComboBox = new UIComboBox(); fontSizeComboBox.setModel(new DefaultComboBoxModel(getFontSizes())); - fontSizeComboBox.setSelectedItem(0); + fontSizeComboBox.setSelectedItem(16); fontSizeComboBox.setPreferredSize(new Dimension(60, 20)); fontSizeComboBox.setRenderer(new LineCellRenderer()); - underline = new UIToggleButton(BaseUtils.readIcon("/com/fr/design/images/m_format/cellstyle/underline.png")); + color = new UIColorButton(); italic = new UIToggleButton(BaseUtils.readIcon("/com/fr/design/images/m_format/cellstyle/italic.png")); bold = new UIToggleButton(BaseUtils.readIcon("/com/fr/design/images/m_format/cellstyle/bold.png")); @@ -62,7 +61,7 @@ public class MobileStyleFontConfigPane extends JPanel { this.setButtonsSize(BUTTON_SIZE); Component[] components_font = new Component[]{ - fontSizeComboBox, underline, italic, bold + fontSizeComboBox, color, italic, bold }; JPanel buttonPane = new JPanel(new BorderLayout()); @@ -73,13 +72,13 @@ public class MobileStyleFontConfigPane extends JPanel { } private void setButtonsTips() { - underline.setToolTipText(Toolkit.i18nText("Fine-Design_Report_Underline")); + color.setToolTipText(Toolkit.i18nText("Fine-Design_Report_Foreground")); italic.setToolTipText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Italic")); bold.setToolTipText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Bold")); } private void setButtonsSize(Dimension size) { - underline.setPreferredSize(size); + color.setPreferredSize(size); italic.setPreferredSize(size); bold.setPreferredSize(size); } @@ -87,9 +86,9 @@ public class MobileStyleFontConfigPane extends JPanel { public void populateBean(FRFont frFont) { fontSizeComboBox.setSelectedItem(frFont.getSize()); + color.setColor(frFont.getForeground()); bold.setSelected(frFont.isBold()); italic.setSelected(frFont.isItalic()); - underline.setSelected(frFont.getUnderline() != Constants.LINE_NONE); } public FRFont updateBean() { @@ -100,8 +99,8 @@ public class MobileStyleFontConfigPane extends JPanel { FRFont.DEFAULT_FONTNAME, style, Float.parseFloat(fontSizeComboBox.getSelectedItem().toString()), - Color.BLACK, - underline.isSelected() ? Constants.LINE_THIN : Constants.LINE_NONE + color.getColor(), + Constants.LINE_NONE ); } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/CellExpandExtraAttrPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/CellExpandExtraAttrPane.java index 58f11277c..c59afcaf7 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/CellExpandExtraAttrPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/CellExpandExtraAttrPane.java @@ -73,6 +73,7 @@ public class CellExpandExtraAttrPane extends JPanel { } public void populate(TemplateCellElement cellElement) { + refreshExtraPanel(); this.cellElement = cellElement; if (extras != null) { for (BasicBeanPane extra : extras) { @@ -91,6 +92,17 @@ public class CellExpandExtraAttrPane extends JPanel { } private void refresh() { + refreshExtraPanel(); + if (this.cellElement != null) { + if (extras != null) { + for (BasicBeanPane extra : extras) { + extra.populateBean(cellElement); + } + } + } + } + + private void refreshExtraPanel() { this.removeAll(); if (extras == null) { extras = new ArrayList<>(); @@ -99,9 +111,11 @@ public class CellExpandExtraAttrPane extends JPanel { Set attrProviders = ExtraDesignClassManager.getInstance().getArray(CellExpandAttrPanelProvider.MARK_STRING); if (attrProviders != null) { for (CellExpandAttrPanelProvider attrProvider : attrProviders) { - BasicBeanPane extra = attrProvider.createPanel(); - if (extra != null) { - extras.add(extra); + if (attrProvider.isDisplayable()) { + BasicBeanPane extra = attrProvider.createPanel(); + if (extra != null) { + extras.add(extra); + } } } } @@ -115,9 +129,6 @@ public class CellExpandExtraAttrPane extends JPanel { double[] columnSize = {TableLayout.PREFERRED, TableLayout.FILL}; JPanel content = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, H_GAP, V_GAP); this.add(content, BorderLayout.CENTER); - if (this.cellElement != null) { - this.populate(cellElement); - } this.validate(); this.repaint(); }