This commit is contained in:
Robert Vokac 2024-03-23 08:20:05 +01:00
parent f28ca92503
commit e56d7cf00c
No known key found for this signature in database
GPG Key ID: 693D30BEE3329055
3 changed files with 88 additions and 28 deletions

View File

@ -1,5 +1,6 @@
package org.nanoboot.utils.timecalc.swing.common;
import lombok.Getter;
import org.nanoboot.utils.timecalc.app.GetProperty;
import org.nanoboot.utils.timecalc.app.TimeCalcProperty;
import org.nanoboot.utils.timecalc.entity.Progress;
@ -38,7 +39,7 @@ import java.util.function.Consumer;
public class Widget extends JPanel implements
GetProperty {
private static final int CLOSE_BUTTON_SIDE = 25;
private static final int CLOSE_OR_MINIMIZE_BUTTON_SIDE = 25;
protected static final Color FOREGROUND_COLOR = new Color(220, 220, 220);
protected static final Color FOREGROUND_COLOR2 = new Color(210, 210, 210);
protected static final Color BACKGROUND_COLOR = new Color(238, 238, 238);
@ -49,8 +50,11 @@ public class Widget extends JPanel implements
protected static final String LEGS = " /\\ ";
public static final Color CLOSE_BUTTON_FOREGROUND_COLOR
= new Color(127, 127, 127);
public static final Color CLOSE_BUTTON_BACKGROUND_COLOR = Color.LIGHT_GRAY;
public static final Color CLOSE_OR_MINIMIZE_BUTTON_BACKGROUND_COLOR = Color.LIGHT_GRAY;
public static final Color CLOSE_BUTTON_BACKGROUND_COLOR_MOUSE_OVER_CLOSE_ICON = new Color(255, 153, 153);
public static final Color MINIMIZE_BUTTON_BACKGROUND_COLOR_MOUSE_OVER_CLOSE_ICON = new Color(
126, 179, 227);
private static final Color VERY_LIGHT_GRAY = new Color(220, 220, 220);
public final BooleanProperty visibilitySupportedColoredProperty
= new BooleanProperty("visibilitySupportedColoredProperty", true);
public final BooleanProperty visibleProperty
@ -72,12 +76,16 @@ public class Widget extends JPanel implements
protected Progress progress = null;
protected boolean mouseOver = false;
private boolean mouseOverCloseButton = false;
private boolean mouseOverMinimizeButton = false;
protected JLabel smileyIcon;
protected JLabel smileyIcon2;
private long lastUpdate = System.nanoTime();
private static final Color PURPLE_STRONGLY_COLORED = new Color(153,51,255);
private static final Color PURPLE_WEAKLY_COLORED = new Color(204,153,255);
@Getter
private boolean hidden;
private WidgetMenu widgetMenu = null;
public Widget() {
setBackground(BACKGROUND_COLOR);
@ -93,35 +101,36 @@ public class Widget extends JPanel implements
int x = e.getX();
int y = e.getY();
mouseOverCloseButton = x >= getWidth() - CLOSE_BUTTON_SIDE
&& y <= CLOSE_BUTTON_SIDE;
mouseOverCloseButton = x >= getWidth() - CLOSE_OR_MINIMIZE_BUTTON_SIDE
&& y <= CLOSE_OR_MINIMIZE_BUTTON_SIDE;
mouseOverMinimizeButton = x < getWidth() - CLOSE_OR_MINIMIZE_BUTTON_SIDE
&& x > getWidth() - 2 * CLOSE_OR_MINIMIZE_BUTTON_SIDE
&& y <= CLOSE_OR_MINIMIZE_BUTTON_SIDE;
}
});
addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
if(hidden) {
hidden = false;
}
if (mouseOverCloseButton) {
visibleProperty.setValue(false);
return;
}
if(mouseOverMinimizeButton) {
hidden = true;
return;
}
if (visibilitySupportedColoredProperty.isDisabled()) {
//nothing to do
return;
}
// if (visibleProperty.isEnabled()) {
// Visibility visibility
// = Visibility.valueOf(visibilityProperty.getValue());
// if (visibility.isStronglyColored()) {
// visibilityProperty
// .setValue(Visibility.WEAKLY_COLORED.name());
// } else {
// visibilityProperty
// .setValue(Visibility.STRONGLY_COLORED.name());
// }
// }
}
@Override
@ -227,20 +236,29 @@ public class Widget extends JPanel implements
@Override
public final void paintComponent(Graphics brush) {
super.paintComponent(brush);
setVisible(visibleProperty.isEnabled());
Visibility visibility
= Visibility.valueOf(visibilityProperty.getValue());
if (visibleProperty.isDisabled()) {
if (visibleProperty.isDisabled() || hidden) {
if(hidden) {
if (mouseOver) {
Color currentColor = brush.getColor();
brush.setColor(VERY_LIGHT_GRAY);
brush.fillRect(1, 1, getWidth() - 2, getHeight() - 2);
brush.setColor(currentColor);
}
}
//nothing to do
return;
}
Visibility visibility
= Visibility.valueOf(visibilityProperty.getValue());
super.setVisible(
visibility != Visibility.NONE && visibleProperty.isEnabled());
paintWidget(brush);
paintCloseIcon(brush, getWidth(), mouseOver, mouseOverCloseButton);
paintMinimizeIcon(brush, getWidth(), mouseOver, mouseOverMinimizeButton);
if (mouseOver) {
Color currentColor = brush.getColor();
@ -264,7 +282,8 @@ public class Widget extends JPanel implements
// return;
// }
brush.setColor(mouseOverCloseButton ? CLOSE_BUTTON_BACKGROUND_COLOR_MOUSE_OVER_CLOSE_ICON : CLOSE_BUTTON_BACKGROUND_COLOR);
brush.setColor(mouseOverCloseButton ? CLOSE_BUTTON_BACKGROUND_COLOR_MOUSE_OVER_CLOSE_ICON :
CLOSE_OR_MINIMIZE_BUTTON_BACKGROUND_COLOR);
// if(!mouseOverCloseButton) {
// brush.drawRect(width - CLOSE_BUTTON_SIDE - 1, 0 + 1, CLOSE_BUTTON_SIDE,
@ -273,18 +292,45 @@ public class Widget extends JPanel implements
// CLOSE_BUTTON_SIDE - 2);
// return;
// }
brush.fillOval(width - CLOSE_BUTTON_SIDE - 1, 0 + 1, CLOSE_BUTTON_SIDE,
CLOSE_BUTTON_SIDE);
brush.fillOval(width - CLOSE_OR_MINIMIZE_BUTTON_SIDE - 1, 0 + 1,
CLOSE_OR_MINIMIZE_BUTTON_SIDE,
CLOSE_OR_MINIMIZE_BUTTON_SIDE);
brush.setColor(CLOSE_BUTTON_FOREGROUND_COLOR);
Graphics2D brush2d = (Graphics2D) brush;
brush2d.setStroke(new BasicStroke(2f));
int offset = 6;
brush.drawLine(width - CLOSE_BUTTON_SIDE - 1 + offset, 0 + 1 + offset,
width - 0 * CLOSE_BUTTON_SIDE - 1 - offset,
0 + CLOSE_BUTTON_SIDE + 1 - offset);
brush.drawLine(width - CLOSE_BUTTON_SIDE - 1 + offset,
0 + CLOSE_BUTTON_SIDE + 1 - offset,
width - 0 * CLOSE_BUTTON_SIDE - 1 - offset, 0 + 1 + offset);
brush.drawLine(width - CLOSE_OR_MINIMIZE_BUTTON_SIDE - 1 + offset, 0 + 1 + offset,
width - 0 * CLOSE_OR_MINIMIZE_BUTTON_SIDE - 1 - offset,
0 + CLOSE_OR_MINIMIZE_BUTTON_SIDE + 1 - offset);
brush.drawLine(width - CLOSE_OR_MINIMIZE_BUTTON_SIDE - 1 + offset,
0 + CLOSE_OR_MINIMIZE_BUTTON_SIDE + 1 - offset,
width - 0 * CLOSE_OR_MINIMIZE_BUTTON_SIDE - 1 - offset, 0 + 1 + offset);
}
private static void paintMinimizeIcon(Graphics brush, int width,
boolean mouseOver, boolean mouseOverMinimizeButton) {
if (!mouseOver) {
//nothing to do
return;
}
brush.setColor(mouseOverMinimizeButton ? MINIMIZE_BUTTON_BACKGROUND_COLOR_MOUSE_OVER_CLOSE_ICON :
CLOSE_OR_MINIMIZE_BUTTON_BACKGROUND_COLOR);
brush.fillOval(width - CLOSE_OR_MINIMIZE_BUTTON_SIDE - 1 - CLOSE_OR_MINIMIZE_BUTTON_SIDE - 1, 0 + 1,
CLOSE_OR_MINIMIZE_BUTTON_SIDE,
CLOSE_OR_MINIMIZE_BUTTON_SIDE);
brush.setColor(CLOSE_BUTTON_FOREGROUND_COLOR);
Graphics2D brush2d = (Graphics2D) brush;
brush2d.setStroke(new BasicStroke(2f));
int offset = 6;
int y = ((int)(0 + 1 + CLOSE_OR_MINIMIZE_BUTTON_SIDE / 2d)) + 2;
brush.drawLine(width - CLOSE_OR_MINIMIZE_BUTTON_SIDE - 1 - CLOSE_OR_MINIMIZE_BUTTON_SIDE
- 1 + offset, y,
width - 0 * CLOSE_OR_MINIMIZE_BUTTON_SIDE - 1 - offset - CLOSE_OR_MINIMIZE_BUTTON_SIDE
- 1,
y);
}
protected void paintWidget(Graphics g) {
@ -478,4 +524,8 @@ public class Widget extends JPanel implements
//brush.setBackground(currentBackgroundColor);
brush.setFont(currentFont);
}
public void hideWidget() {
this.hidden = true;
}
}

View File

@ -88,6 +88,12 @@ public class WidgetMenu extends JPopupMenu {
//if(!aClass.getSimpleName().contains("Battery")) {
add(typeMenuItem);
//}
JMenuItem hideMenuItem = new JMenuItem("Hide");
add(hideMenuItem);
hideMenuItem.addActionListener(e -> {
this.widget.hideWidget();
});
}
public void markAsSelected(WidgetType widgetType) {
this.typeMinuteMenuItem.setText(WidgetType.MINUTE.name());

View File

@ -58,6 +58,10 @@ public class ProgressMoney extends Widget implements GetProperty {
//nothing to do
return;
} else {
if(progress == null) {
//nothing to do
return;
}
double workDaysInMonth = progress.getWorkDaysInMonth();
boolean isWeekend = progress.isWeekend();
double perDay = perMonth / workDaysInMonth;