|
|
|
@ -44,8 +44,26 @@ import java.util.stream.Collectors;
|
|
|
|
|
**/ |
|
|
|
|
public class NotificationDialog extends JDialog { |
|
|
|
|
|
|
|
|
|
private Dimension contentSize = new Dimension(300, 100); |
|
|
|
|
private Dimension buttonDimension = new Dimension(68, 20); |
|
|
|
|
/** |
|
|
|
|
* 通知框的内部高度 |
|
|
|
|
*/ |
|
|
|
|
private static final int CONTENT_INNER_HEIGHT = 60; |
|
|
|
|
/** |
|
|
|
|
* 通知框如果出现滚动条后的内部宽度 |
|
|
|
|
*/ |
|
|
|
|
private static final int CONTENT_SCROLL_WIDTH = 280; |
|
|
|
|
|
|
|
|
|
private static final int CONTENT_WIDTH = 300; |
|
|
|
|
private static final int CONTENT_HEIGHT = 100; |
|
|
|
|
/** |
|
|
|
|
* 通知框的外部宽高 |
|
|
|
|
*/ |
|
|
|
|
private static final Dimension CONTENT_SIZE = new Dimension(CONTENT_WIDTH, CONTENT_HEIGHT); |
|
|
|
|
private static final Dimension BUTTON_DIMENSION = new Dimension(68, 20); |
|
|
|
|
|
|
|
|
|
private static final UILabel SIGN_LABEL = new UILabel("#"); |
|
|
|
|
|
|
|
|
|
private static final Dimension SIGN_LABEL_DIMENSION = SIGN_LABEL.getPreferredSize(); |
|
|
|
|
|
|
|
|
|
private NotificationDialogProperties properties; |
|
|
|
|
|
|
|
|
@ -154,9 +172,9 @@ public class NotificationDialog extends JDialog {
|
|
|
|
|
}) |
|
|
|
|
.collect(Collectors.toList()); |
|
|
|
|
|
|
|
|
|
// 当高度 / 15(每个字的大小) 大于 4 时,就会出现滚动条。
|
|
|
|
|
// 当高度 大于 60 时,就会出现滚动条。
|
|
|
|
|
// 当出现滚动条时,需要将内部的宽度限制为 280, 否则会展示不出来
|
|
|
|
|
Function<Double, Integer> calStandardWidth = heightFactor -> heightFactor > 4 ? 280 : 300; |
|
|
|
|
Function<Double, Integer> calStandardWidth = height -> height > CONTENT_INNER_HEIGHT ? CONTENT_SCROLL_WIDTH : CONTENT_WIDTH; |
|
|
|
|
|
|
|
|
|
int widthUnit = messageComponents.stream() |
|
|
|
|
.map((component) -> { |
|
|
|
@ -165,16 +183,17 @@ public class NotificationDialog extends JDialog {
|
|
|
|
|
}) |
|
|
|
|
.reduce(Double::sum) |
|
|
|
|
.map(calStandardWidth) |
|
|
|
|
.orElse(300); |
|
|
|
|
.orElse(CONTENT_WIDTH); |
|
|
|
|
|
|
|
|
|
messageComponents = messageComponents.stream() |
|
|
|
|
.peek((component) -> { |
|
|
|
|
int size = component.getFont().getSize(); |
|
|
|
|
Dimension preferredSize = component.getPreferredSize(); |
|
|
|
|
double componentWidth = preferredSize.getWidth(); |
|
|
|
|
double componentHeight = preferredSize.getHeight(); |
|
|
|
|
double heightFactor = Math.ceil(componentHeight / 15); |
|
|
|
|
double heightFactor = Math.ceil(componentHeight / SIGN_LABEL_DIMENSION.getHeight()); |
|
|
|
|
double widthFactor = Math.ceil(componentWidth / widthUnit); |
|
|
|
|
int realHeight = (int) (heightFactor + widthFactor - 1) * 15; |
|
|
|
|
int realHeight = (int)Math.ceil(heightFactor + widthFactor - 1) * (int)(Math.ceil(SIGN_LABEL_DIMENSION.getHeight())); |
|
|
|
|
component.setPreferredSize(new Dimension(widthUnit, realHeight)); |
|
|
|
|
}) |
|
|
|
|
.collect(Collectors.toList()); |
|
|
|
@ -187,7 +206,7 @@ public class NotificationDialog extends JDialog {
|
|
|
|
|
jScrollPane.setBorder(BorderFactory.createEmptyBorder()); |
|
|
|
|
|
|
|
|
|
centerPanel.add(jScrollPane, BorderLayout.CENTER); |
|
|
|
|
centerPanel.setPreferredSize(contentSize); |
|
|
|
|
centerPanel.setPreferredSize(CONTENT_SIZE); |
|
|
|
|
|
|
|
|
|
contentPanel.add(centerPanel, BorderLayout.CENTER); |
|
|
|
|
|
|
|
|
@ -256,7 +275,7 @@ public class NotificationDialog extends JDialog {
|
|
|
|
|
NotificationAction action = currentModel.getAction(); |
|
|
|
|
if (action != null) { |
|
|
|
|
UIButton actionButton = new UIButton(action.name()); |
|
|
|
|
actionButton.setPreferredSize(buttonDimension); |
|
|
|
|
actionButton.setPreferredSize(BUTTON_DIMENSION); |
|
|
|
|
actionButton.addActionListener(new ActionListener() { |
|
|
|
|
@Override |
|
|
|
|
public void actionPerformed(ActionEvent e) { |
|
|
|
@ -267,7 +286,7 @@ public class NotificationDialog extends JDialog {
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
UIButton knowButton = new UIButton(Toolkit.i18nText("Fine-Design_Basic_Know")); |
|
|
|
|
knowButton.setPreferredSize(buttonDimension); |
|
|
|
|
knowButton.setPreferredSize(BUTTON_DIMENSION); |
|
|
|
|
knowButton.addActionListener(new ActionListener() { |
|
|
|
|
@Override |
|
|
|
|
public void actionPerformed(ActionEvent e) { |
|
|
|
|