diff --git a/designer-base/src/main/java/com/fine/theme/light/ui/FineLightIconSet.java b/designer-base/src/main/java/com/fine/theme/light/ui/FineLightIconSet.java
index 16aed93baf..40ee8c30aa 100644
--- a/designer-base/src/main/java/com/fine/theme/light/ui/FineLightIconSet.java
+++ b/designer-base/src/main/java/com/fine/theme/light/ui/FineLightIconSet.java
@@ -142,8 +142,15 @@ public class FineLightIconSet extends AbstractIconSet {
new SvgIconSource("param_view", "com/fine/theme/icon/param/view.svg", true, 18),
// 北区菜单栏
- new SvgIconSource("notification", "com/fine/theme/icon/notification/notification.svg")
+ new SvgIconSource("notification", "com/fine/theme/icon/notification/notification.svg"),
+ // 三角
+ new SvgIconSource("triangle_down", "com/fine/theme/icon/triangle/triangle_down.svg"),
+ new SvgIconSource("triangle_down_small", "com/fine/theme/icon/triangle/triangle_down_small.svg"),
+ new SvgIconSource("triangle_left", "com/fine/theme/icon/triangle/triangle_left.svg"),
+ new SvgIconSource("triangle_left_small", "com/fine/theme/icon/triangle/triangle_left_small.svg"),
+ new SvgIconSource("triangle_right", "com/fine/theme/icon/triangle/triangle_right.svg"),
+ new SvgIconSource("triangle_right_small", "com/fine/theme/icon/triangle/triangle_right_small.svg")
);
}
}
diff --git a/designer-base/src/main/java/com/fr/design/foldablepane/HeaderPane.java b/designer-base/src/main/java/com/fr/design/foldablepane/HeaderPane.java
index 07e0172373..a71cc5204f 100644
--- a/designer-base/src/main/java/com/fr/design/foldablepane/HeaderPane.java
+++ b/designer-base/src/main/java/com/fr/design/foldablepane/HeaderPane.java
@@ -1,39 +1,42 @@
package com.fr.design.foldablepane;
+import com.fine.theme.icon.LazyIcon;
import com.fr.base.GraphHelper;
-import com.fr.design.constants.UIConstants;
+import javax.swing.BorderFactory;
+import javax.swing.Icon;
import javax.swing.JFrame;
import javax.swing.JPanel;
+import javax.swing.UIManager;
+import java.awt.AlphaComposite;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Graphics2D;
-import java.awt.Image;
+import java.awt.Insets;
/**
* Created by MoMeak on 2017/7/5.
*/
public class HeaderPane extends JPanel {
private static final long serialVersionUID = 1L;
- private static final int TITLE_X = 5;
- private static final int LEFT_X = 16;
- private static final int LEFT_Y = 6;
- private static final int NORMAL_FONTSIZE = 12;
private int headWidth;
private int headHeight;
private Color bgColor;
private boolean isShow;
private boolean isPressed = false;
private String title;
- private Image image;
private int fontSize;
+ private final Icon triangleDown;
+ private final Icon triangleRight;
+ private final int hGap;
public void setPressed(boolean pressed) {
this.isPressed = pressed;
}
-
public void setShow(boolean isShow) {
this.isShow = isShow;
}
@@ -58,45 +61,44 @@ public class HeaderPane extends JPanel {
@Override
protected void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g.create();
-// g2d.setColor(isPressed ? UIConstants.POPUP_TITLE_BACKGROUND : UIConstants.COMPONENT_BACKGROUND_COLOR);
- headWidth = this.getWidth();
g2d.setColor(getBackground());
- g2d.fillRect(0, 0, headWidth, headHeight);
-// g2d.setFont(new Font("SimSun", 0, fontSize));
- g2d.setPaint(getForeground());
- int leftWdith = headWidth - LEFT_X;
+ g2d.fillRect(0, 0, this.getWidth(), this.getHeight());
+
+ int iconY = (this.getHeight() - triangleDown.getIconHeight()) / 2;
if (this.isShow) {
- image = UIConstants.DRAG_DOWN_SELECTED_SMALL;
- g2d.drawImage(image, leftWdith, LEFT_Y, null);
+ triangleDown.paintIcon(this, g2d, 0, iconY);
} else {
- image = UIConstants.DRAG_LEFT_NORMAL_SMALL;
- g2d.drawImage(image, leftWdith, LEFT_Y, null);
+ triangleRight.paintIcon(this, g2d, 0, iconY);
}
- GraphHelper.drawString(g2d, this.title, TITLE_X, headHeight - fontSize / 2 - 1);
- }
+ g2d.setFont(getFont());
+ g2d.setPaint(getForeground());
+ g2d.setComposite(AlphaComposite.SrcOver.derive((float) getForeground().getAlpha() / 255));
- @Override
- public Dimension getPreferredSize() {
- return new Dimension(this.getWidth(), headHeight);
- }
+ FontMetrics metrics = g2d.getFontMetrics();
+ int ascent = metrics.getAscent();
+ int descent = metrics.getDescent();
- @Override
- public Dimension getSize() {
- return new Dimension(this.getWidth(), headHeight);
+ double titleY = (double) (getHeight() - (ascent + descent)) / 2 + ascent;
+ GraphHelper.drawString(g2d, this.title, triangleDown.getIconWidth() + this.hGap, titleY);
+ g2d.dispose();
}
public HeaderPane(Color bgColor) {
- this.bgColor = bgColor;
this.isShow = true;
-
+ triangleDown = new LazyIcon("triangle_down");
+ triangleRight = new LazyIcon("triangle_right");
+ this.hGap = UIManager.getInt("ExpandablePane.HeaderPane.hGap");
+ this.setPreferredSize(new Dimension(UIManager.getInt("HeaderPane.width"), UIManager.getInt("HeaderPane.height")));
+ Insets insets = UIManager.getInsets("ExpandablePane.HeaderPane.borderInsets");
+ this.setForeground(UIManager.getColor("color.text.highlight"));
+ this.setFont(getFont().deriveFont(Font.BOLD));
+ this.setBorder(BorderFactory.createEmptyBorder(insets.top, insets.left, insets.bottom, insets.right));
}
public HeaderPane(Color bgColor, String title, int headHeight) {
this(bgColor);
this.title = title;
- this.headHeight = headHeight;
- this.fontSize = NORMAL_FONTSIZE;
}
public static void main(String[] args) {
diff --git a/designer-base/src/main/java/com/fr/design/foldablepane/UIExpandablePane.java b/designer-base/src/main/java/com/fr/design/foldablepane/UIExpandablePane.java
index 9ed2d9757b..7d27031468 100644
--- a/designer-base/src/main/java/com/fr/design/foldablepane/UIExpandablePane.java
+++ b/designer-base/src/main/java/com/fr/design/foldablepane/UIExpandablePane.java
@@ -1,7 +1,10 @@
package com.fr.design.foldablepane;
-import javax.swing.*;
-import java.awt.*;
+import javax.swing.BorderFactory;
+import javax.swing.JPanel;
+import javax.swing.UIManager;
+import java.awt.BorderLayout;
+import java.awt.Color;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
@@ -42,7 +45,7 @@ public class UIExpandablePane extends JPanel {
}
private void initComponents() {
- this.setLayout(new BorderLayout());
+ this.setLayout(new BorderLayout(0, UIManager.getInt("ExpandablePane.vGap")));
headerPanel = new HeaderPane(color, title, headHeight);
headerPanel.addMouseListener(new PanelAction());
diff --git a/designer-base/src/main/resources/com/fine/theme/icon/triangle/triangle_down.svg b/designer-base/src/main/resources/com/fine/theme/icon/triangle/triangle_down.svg
new file mode 100755
index 0000000000..7a0d1e3443
--- /dev/null
+++ b/designer-base/src/main/resources/com/fine/theme/icon/triangle/triangle_down.svg
@@ -0,0 +1,4 @@
+
diff --git a/designer-base/src/main/resources/com/fine/theme/icon/triangle/triangle_down_small.svg b/designer-base/src/main/resources/com/fine/theme/icon/triangle/triangle_down_small.svg
new file mode 100755
index 0000000000..b513a4de7f
--- /dev/null
+++ b/designer-base/src/main/resources/com/fine/theme/icon/triangle/triangle_down_small.svg
@@ -0,0 +1,4 @@
+
diff --git a/designer-base/src/main/resources/com/fine/theme/icon/triangle/triangle_left.svg b/designer-base/src/main/resources/com/fine/theme/icon/triangle/triangle_left.svg
new file mode 100755
index 0000000000..0e9c0637ba
--- /dev/null
+++ b/designer-base/src/main/resources/com/fine/theme/icon/triangle/triangle_left.svg
@@ -0,0 +1,4 @@
+
diff --git a/designer-base/src/main/resources/com/fine/theme/icon/triangle/triangle_left_small.svg b/designer-base/src/main/resources/com/fine/theme/icon/triangle/triangle_left_small.svg
new file mode 100755
index 0000000000..7307860955
--- /dev/null
+++ b/designer-base/src/main/resources/com/fine/theme/icon/triangle/triangle_left_small.svg
@@ -0,0 +1,4 @@
+
diff --git a/designer-base/src/main/resources/com/fine/theme/icon/triangle/triangle_right.svg b/designer-base/src/main/resources/com/fine/theme/icon/triangle/triangle_right.svg
new file mode 100755
index 0000000000..cfdd78d161
--- /dev/null
+++ b/designer-base/src/main/resources/com/fine/theme/icon/triangle/triangle_right.svg
@@ -0,0 +1,4 @@
+
diff --git a/designer-base/src/main/resources/com/fine/theme/icon/triangle/triangle_right_small.svg b/designer-base/src/main/resources/com/fine/theme/icon/triangle/triangle_right_small.svg
new file mode 100755
index 0000000000..af6ac0335a
--- /dev/null
+++ b/designer-base/src/main/resources/com/fine/theme/icon/triangle/triangle_right_small.svg
@@ -0,0 +1,4 @@
+
diff --git a/designer-base/src/main/resources/com/fine/theme/light/ui/laf/FineLightLaf.properties b/designer-base/src/main/resources/com/fine/theme/light/ui/laf/FineLightLaf.properties
index 1574aeb674..64685e8553 100644
--- a/designer-base/src/main/resources/com/fine/theme/light/ui/laf/FineLightLaf.properties
+++ b/designer-base/src/main/resources/com/fine/theme/light/ui/laf/FineLightLaf.properties
@@ -92,6 +92,7 @@ ViewportUI = com.formdev.flatlaf.ui.FlatViewportUI
color.brand.normal=#2576EF
color.text.white=#ffffff
color.text.placeholder=#0A1C3878
+color.text.highlight=#0A1C38E6
# general background and foreground (text color)
@@ -1061,6 +1062,12 @@ Tree.hash = darken($Tree.background,10%)
#---- West ----
West.border = #DADEE7
+#---- ExpandablePane ----
+ExpandablePane.HeaderPane.borderInsets=0, 6, 0, 6
+ExpandablePane.HeaderPane.hGap=2
+ExpandablePane.vGap=10
+HeaderPane.width=248
+HeaderPane.height=24
#---- East ----
East.border = #DADEE7
diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/CellOtherSetPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/CellOtherSetPane.java
index 5ac64d401a..6f01d9e192 100644
--- a/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/CellOtherSetPane.java
+++ b/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/CellOtherSetPane.java
@@ -141,17 +141,18 @@ public class CellOtherSetPane extends AbstractCellAttrPane {
* @return 面板
*/
public JPanel createContentPane() {
- JPanel contentPane = FRGUIPaneFactory.createVerticalFlowLayout_F_Pane(true, VerticalFlowLayout.TOP, 0, 0, true);
-
- contentPane.add(new UIExpandablePane(Toolkit.i18nText("Fine-Design_Report_Basic"), HEAD_WDITH, HEAD_HEIGTH, basicPane()));
- contentPane.add(new UIExpandablePane(Toolkit.i18nText("Fine-Design_Report_Advaced"), HEAD_WDITH, HEAD_HEIGTH, seniorPane()));
- contentPane.add(new UIExpandablePane(Toolkit.i18nText("Fine-Design_Report_Pagination"), HEAD_WDITH, HEAD_HEIGTH, pagePane()));
- contentPane.add(new UIExpandablePane(Toolkit.i18nText("Fine-Design_Report_Desensitization"), HEAD_WDITH, HEAD_HEIGTH, desensitizePane()));
- // VerticalFlowLayout 与 实现的滚动条有冲突,因此再加一层panel
- JPanel jPanel = new JPanel();
- jPanel.add(contentPane);
+
+ Component[][] components = new Component[][]{
+ new Component[]{new UIExpandablePane(Toolkit.i18nText("Fine-Design_Report_Basic"), HEAD_WDITH, HEAD_HEIGTH, basicPane())},
+ new Component[]{new UIExpandablePane(Toolkit.i18nText("Fine-Design_Report_Advaced"), HEAD_WDITH, HEAD_HEIGTH, seniorPane())},
+ new Component[]{new UIExpandablePane(Toolkit.i18nText("Fine-Design_Report_Pagination"), HEAD_WDITH, HEAD_HEIGTH, pagePane())},
+ new Component[]{new UIExpandablePane(Toolkit.i18nText("Fine-Design_Report_Desensitization"), HEAD_WDITH, HEAD_HEIGTH, desensitizePane())}
+ };
+
+ JPanel tableLayoutPane = TableLayoutHelper.createTableLayoutPane(components, new double[]{p, p, p, p}, new double[]{f});
+
initAllNames();
- return jPanel;
+ return tableLayoutPane;
}
private JPanel desensitizePane() {