From f28ca92503eb939f4c5d3c53f52d8ea720886d32 Mon Sep 17 00:00:00 2001 From: Robert Vokac Date: Sat, 23 Mar 2024 08:20:05 +0100 Subject: [PATCH] patch23 --- .../utils/timecalc/entity/Progress.java | 60 +++++++++++++------ .../utils/timecalc/swing/common/Widget.java | 5 ++ .../timecalc/swing/progress/ProgressLife.java | 2 +- .../swing/progress/ProgressMoney.java | 6 +- .../timecalc/swing/windows/MainWindow.java | 2 +- 5 files changed, 53 insertions(+), 22 deletions(-) diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/entity/Progress.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/entity/Progress.java index 0536f2a..b4ab9d9 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/entity/Progress.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/entity/Progress.java @@ -77,9 +77,11 @@ public class Progress { return result; } - public static double getYearProgress(Integer year, Integer month, + public static double getYearProgress(double monthProgress, Integer year, Integer month, Integer day, Integer hour, Integer minute, Integer second, Integer millisecond) { + double totalCountOfDaysInAYear = getTotalCountOfDaysInAYear(year); + Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, year); cal.set(Calendar.MONTH, month - 1); @@ -88,22 +90,46 @@ public class Progress { cal.set(Calendar.MINUTE, minute); cal.set(Calendar.SECOND, second); cal.set(Calendar.MILLISECOND, millisecond); - - double seconds = second + millisecond / 1000d; - double minutes = minute + seconds / 60d; - double hours = hour + minutes / 60d; - double days = cal.get(Calendar.DAY_OF_YEAR) + hours / 24d; - // System.out.println("millisecond=" + millisecond); - // System.out.println("seconds=" + seconds); - // System.out.println("minutes=" + minutes); - // System.out.println("hours=" + hours); - // System.out.println("days=" + days); - // System.out.println("cal.get(Calendar.DAY_OF_YEAR)=" + cal.get(Calendar.DAY_OF_YEAR)); - - double totalCountOfDaysInAYear = getTotalCountOfDaysInAYear(year); - return days / totalCountOfDaysInAYear; + int daysInMonth = cal.getActualMaximum(Calendar.DAY_OF_MONTH); + if(month == 1) { + return (daysInMonth * monthProgress + totalCountOfDaysInAYear - daysInMonth) / totalCountOfDaysInAYear; + } else { + cal.set(Calendar.MONTH, month - 2); + cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH)); + int totalDaysUntilLastDayOfLastMonth = cal.get(Calendar.DAY_OF_YEAR); + cal.set(Calendar.MONTH, month - 1); + cal.set(Calendar.DAY_OF_MONTH, day); + return (totalDaysUntilLastDayOfLastMonth + (daysInMonth * monthProgress) + (totalCountOfDaysInAYear - totalDaysUntilLastDayOfLastMonth - daysInMonth))/totalCountOfDaysInAYear; + } } +// public static double getYearProgress(Integer year, Integer month, +// Integer day, Integer hour, Integer minute, Integer second, +// Integer millisecond) { +// Calendar cal = Calendar.getInstance(); +// cal.set(Calendar.YEAR, year); +// cal.set(Calendar.MONTH, month - 1); +// cal.set(Calendar.DAY_OF_MONTH, day); +// cal.set(Calendar.HOUR, hour); +// cal.set(Calendar.MINUTE, minute); +// cal.set(Calendar.SECOND, second); +// cal.set(Calendar.MILLISECOND, millisecond); +// +// double seconds = second + millisecond / 1000d; +// double minutes = minute + seconds / 60d; +// double hours = hour + minutes / 60d; +// double days = cal.get(Calendar.DAY_OF_YEAR) + hours / 24d; +// // System.out.println("millisecond=" + millisecond); +// // System.out.println("seconds=" + seconds); +// // System.out.println("minutes=" + minutes); +// // System.out.println("hours=" + hours); +// // System.out.println("days=" + days); +// // System.out.println("cal.get(Calendar.DAY_OF_YEAR)=" + cal.get(Calendar.DAY_OF_YEAR)); +// +// double totalCountOfDaysInAYear = getTotalCountOfDaysInAYear(year); +// return days / totalCountOfDaysInAYear; +// } + private static double getTotalCountOfDaysInAYear(Integer year) { boolean leapYear = isLeapYear(year); double daysInYear = 365d; @@ -117,8 +143,8 @@ public class Progress { return year % 4 == 0; } - public static double getYearProgress(AnalogClock analogClock) { - return getYearProgress( + public static double getYearProgress(AnalogClock analogClock, double monthProgress) { + return getYearProgress(monthProgress, analogClock.yearProperty.getValue(), analogClock.monthProperty.getValue(), analogClock.dayProperty.getValue(), diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/common/Widget.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/common/Widget.java index 2eba8bb..d738f52 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/common/Widget.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/common/Widget.java @@ -243,7 +243,12 @@ public class Widget extends JPanel implements paintCloseIcon(brush, getWidth(), mouseOver, mouseOverCloseButton); if (mouseOver) { + Color currentColor = brush.getColor(); + if(visibility.isStronglyColored()) { + brush.setColor(Color.BLUE); + } brush.drawRect(1, 1, getWidth() - 2, getHeight() - 2); + brush.setColor(currentColor); } } diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/progress/ProgressLife.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/progress/ProgressLife.java index 973f3f0..3420fd4 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/progress/ProgressLife.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/progress/ProgressLife.java @@ -93,7 +93,7 @@ public class ProgressLife extends Widget implements GetProperty { // } brush.setFont(SwingUtils.MEDIUM_MONOSPACE_FONT); - brush.drawString(date, SwingUtils.MARGIN, SwingUtils.MARGIN); + brush.drawString(date, SwingUtils.MARGIN, SwingUtils.MARGIN + 5); brush.drawString(time, SwingUtils.MARGIN, (int) (2.5 * SwingUtils.MARGIN) + 5); brush.drawString(typeProperty.getValue(), SwingUtils.MARGIN, 4 * SwingUtils.MARGIN + 5); diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/progress/ProgressMoney.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/progress/ProgressMoney.java index a416afa..effc580 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/progress/ProgressMoney.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/progress/ProgressMoney.java @@ -64,9 +64,9 @@ public class ProgressMoney extends Widget implements GetProperty { double value = 0; switch(WidgetType.valueOf(this.typeProperty.getValue().toUpperCase( Locale.ROOT))) { - case MINUTE: value = perDay / 8d / 60d * progress.get(WidgetType.MINUTE);break; - case HOUR: value = perDay / 8d * progress.get(WidgetType.HOUR);break; - case DAY: value = perDay * progress.get(WidgetType.DAY);break; + case MINUTE: value = isWeekend ? 0d : perDay / 8d / 60d * progress.get(WidgetType.MINUTE);break; + case HOUR: value = isWeekend ? 0d : perDay / 8d * progress.get(WidgetType.HOUR);break; + case DAY: value = isWeekend ? 0d : perDay * progress.get(WidgetType.DAY);break; case WEEK: value = perDay * 5d * progress.get(WidgetType.WEEK);break; case MONTH: value = perMonth * progress.get(WidgetType.MONTH);break; case YEAR: value = perMonth * 12 * progress.get(WidgetType.YEAR);break; diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/windows/MainWindow.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/windows/MainWindow.java index bcf70af..375d792 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/windows/MainWindow.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/windows/MainWindow.java @@ -1034,7 +1034,7 @@ public class MainWindow extends TWindow { millisecondsRemains); double minuteProgress = Progress.getMinuteProgress(secondNow, millisecondNow); - double yearProgress = Progress.getYearProgress(clock); + double yearProgress = Progress.getYearProgress(clock, monthProgress); progress.set(WidgetType.HOUR, hourProgress); progress.set(WidgetType.WEEK, weekProgress); progress.set(WidgetType.MINUTE, minuteProgress);