diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcApp.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcApp.java index 71440a8..a7d273e 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcApp.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcApp.java @@ -1,8 +1,11 @@ package org.nanoboot.utils.timecalc.app; -import org.nanoboot.utils.timecalc.utils.Constants; -import org.nanoboot.utils.timecalc.utils.FileConstants; -import org.nanoboot.utils.timecalc.utils.Utils; +import org.nanoboot.utils.timecalc.entity.Visibility; +import org.nanoboot.utils.timecalc.utils.common.Constants; +import org.nanoboot.utils.timecalc.utils.common.FileConstants; +import org.nanoboot.utils.timecalc.utils.property.ReadOnlyProperty; +import org.nanoboot.utils.timecalc.utils.property.StringProperty; +import org.nanoboot.utils.timecalc.utils.common.Utils; import javax.swing.JOptionPane; import java.io.IOException; @@ -14,6 +17,8 @@ import java.io.IOException; public class TimeCalcApp { private long startNanoTime = 0l; + private StringProperty visibilityReadWriteProperty = new StringProperty(Visibility.STRONGLY_COLORED.name()); + public ReadOnlyProperty visibilityProperty = visibilityReadWriteProperty.asReadOnlyProperty(); public void start(String[] args) throws IOException { @@ -60,7 +65,7 @@ public class TimeCalcApp { Utils.writeTextToFile(FileConstants.OVERTIME_TXT, newOvertime); try { TimeCalcManager timeCalc = - new TimeCalcManager(newStartTime, newOvertime); + new TimeCalcManager(newStartTime, newOvertime, this); } catch (Exception e) { JOptionPane.showMessageDialog(null, "Error: " + e.getMessage(), e.getMessage(), JOptionPane.ERROR_MESSAGE); @@ -77,10 +82,11 @@ public class TimeCalcApp { } public long getCountOfMillisecondsSinceAppStarted() { if(startNanoTime == 0l) { - throw new TimeCalcException("App was not yet started."); + throw new TimeCalcException("TimeCalcApp was not yet started."); } return System.nanoTime() - startNanoTime; } } + diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcManager.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcManager.java index 098d123..a4531d7 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcManager.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcManager.java @@ -15,11 +15,11 @@ import org.nanoboot.utils.timecalc.swing.progress.ProgressCircle; import org.nanoboot.utils.timecalc.swing.progress.ProgressSquare; import org.nanoboot.utils.timecalc.swing.progress.WalkingHumanProgressAsciiArt; import org.nanoboot.utils.timecalc.swing.progress.WeekBattery; -import org.nanoboot.utils.timecalc.utils.Constants; -import org.nanoboot.utils.timecalc.utils.DateFormats; -import org.nanoboot.utils.timecalc.utils.Jokes; -import org.nanoboot.utils.timecalc.utils.TimeHM; -import org.nanoboot.utils.timecalc.utils.Utils; +import org.nanoboot.utils.timecalc.utils.common.Constants; +import org.nanoboot.utils.timecalc.utils.common.DateFormats; +import org.nanoboot.utils.timecalc.utils.common.Jokes; +import org.nanoboot.utils.timecalc.utils.common.TimeHM; +import org.nanoboot.utils.timecalc.utils.common.Utils; import javax.swing.JOptionPane; import java.awt.Color; @@ -48,10 +48,12 @@ public class TimeCalcManager { private final TimeHM startTime; private final TimeHM overtime; private final TimeHM endTime; + private final TimeCalcApp timeCalcApp; private boolean stopBeforeEnd = false; - private boolean vtipyShown = false; - public TimeCalcManager(String startTimeIn, String overTimeIn) { + public TimeCalcManager(String startTimeIn, String overTimeIn, + TimeCalcApp timeCalcApp) { + this.timeCalcApp = timeCalcApp; Utils.everythingHidden .setValue(TimeCalcConf.getInstance().isEverythingHidden()); Utils.toastsAreEnabled @@ -189,7 +191,7 @@ public class TimeCalcManager { break; case "uptime": JOptionPane.showMessageDialog(null, - Utils.getCountOfMinutesSinceAppStarted() + timeCalcApp.getCountOfMinutesSinceAppStarted() + " minutes"); break; case "toast": @@ -407,10 +409,6 @@ public class TimeCalcManager { double totalSecondsRemainsDouble = ((double) totalMillisecondsRemains) / 1000; - if (timeRemains.getHour() == 0 && timeRemains.getMinute() == 1 && !vtipyShown) { - vtipyShown = true; - Jokes.showRandom(); - } // if (timeRemains.getHour() == 0 && timeRemains.getMinute() <= 3) { // Utils.highlighted.set(true); // walkingHumanProgressAsciiArt.setForeground(Color.BLUE); diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/common/AboutButton.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/common/AboutButton.java index 43f1c1d..3ed979d 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/common/AboutButton.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/common/AboutButton.java @@ -1,7 +1,6 @@ package org.nanoboot.utils.timecalc.swing.common; -import org.nanoboot.utils.timecalc.swing.common.TimeCalcButton; -import org.nanoboot.utils.timecalc.utils.Utils; +import org.nanoboot.utils.timecalc.utils.common.Utils; import javax.swing.JOptionPane; diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/common/Toaster.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/common/Toaster.java index 4aa168a..eb85659 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/common/Toaster.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/common/Toaster.java @@ -31,7 +31,7 @@ package org.nanoboot.utils.timecalc.swing.common; * } */ -import org.nanoboot.utils.timecalc.utils.Utils; +import org.nanoboot.utils.timecalc.utils.common.Utils; import javax.swing.BorderFactory; import javax.swing.Icon; diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/common/WeatherWindow.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/common/WeatherWindow.java index aac468d..752c6c7 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/common/WeatherWindow.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/common/WeatherWindow.java @@ -1,6 +1,6 @@ package org.nanoboot.utils.timecalc.swing.common; -import org.nanoboot.utils.timecalc.utils.Utils; +import org.nanoboot.utils.timecalc.utils.common.Utils; import javax.swing.JEditorPane; import javax.swing.JFrame; 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 0bcb5ea..37c42ef 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 @@ -1,12 +1,21 @@ package org.nanoboot.utils.timecalc.swing.common; -import org.nanoboot.utils.timecalc.utils.Utils; +import org.nanoboot.utils.timecalc.app.TimeCalcConf; +import org.nanoboot.utils.timecalc.entity.Visibility; +import org.nanoboot.utils.timecalc.utils.common.TimeHM; +import org.nanoboot.utils.timecalc.utils.property.StringProperty; +import org.nanoboot.utils.timecalc.utils.common.Utils; import javax.swing.JPanel; import javax.swing.Timer; import java.awt.Color; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.RenderingHints; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; +import java.util.Calendar; +import java.util.GregorianCalendar; /** * @author Robert @@ -20,6 +29,8 @@ public class Widget extends JPanel { protected double donePercent = 0; protected boolean mouseOver = false; + public StringProperty visibilityProperty = new StringProperty(Visibility.STRONGLY_COLORED.name()); + public Widget() { setBackground(BACKGROUND_COLOR); new Timer(getTimerDelay(), e -> repaint()).start(); @@ -68,4 +79,16 @@ public class Widget extends JPanel { public void setBounds(int x, int y, int side) { setBounds(x, y, side, side); } + + @Override + public final void paintComponent(Graphics g) { + super.paintComponent(g); + Visibility visibility = Visibility.valueOf(visibilityProperty.getValue()); + this.setVisible(visibility != Visibility.NONE); + paintWidget(g); + + } + + protected void paintWidget(Graphics g) { + } } diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/progress/AnalogClock.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/progress/AnalogClock.java index 8509a18..764ffd0 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/progress/AnalogClock.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/progress/AnalogClock.java @@ -1,10 +1,11 @@ package org.nanoboot.utils.timecalc.swing.progress; +import org.nanoboot.utils.timecalc.entity.Visibility; import org.nanoboot.utils.timecalc.swing.common.Widget; import org.nanoboot.utils.timecalc.app.TimeCalcConf; -import org.nanoboot.utils.timecalc.utils.DateFormats; -import org.nanoboot.utils.timecalc.utils.TimeHM; -import org.nanoboot.utils.timecalc.utils.Utils; +import org.nanoboot.utils.timecalc.utils.common.DateFormats; +import org.nanoboot.utils.timecalc.utils.common.TimeHM; +import org.nanoboot.utils.timecalc.utils.common.Utils; import javax.swing.JFrame; import java.awt.BasicStroke; @@ -75,8 +76,9 @@ public class AnalogClock extends Widget { } @Override - public void paintComponent(Graphics g) { + public void paintWidget(Graphics g) { super.paintComponent(g); + Visibility visibility = Visibility.valueOf(visibilityProperty.getValue()); Graphics2D g2d = (Graphics2D) g; g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/progress/Battery.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/progress/Battery.java index 118ec2f..dc0ba70 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/progress/Battery.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/progress/Battery.java @@ -3,9 +3,9 @@ package org.nanoboot.utils.timecalc.swing.progress; import lombok.Getter; import org.nanoboot.utils.timecalc.swing.common.Widget; import org.nanoboot.utils.timecalc.app.TimeCalcConf; -import org.nanoboot.utils.timecalc.utils.BooleanProperty; -import org.nanoboot.utils.timecalc.utils.NumberFormats; -import org.nanoboot.utils.timecalc.utils.Utils; +import org.nanoboot.utils.timecalc.utils.property.BooleanProperty; +import org.nanoboot.utils.timecalc.utils.common.NumberFormats; +import org.nanoboot.utils.timecalc.utils.common.Utils; import java.awt.Color; import java.awt.Dimension; @@ -52,7 +52,7 @@ public class Battery extends Widget { } @Override - public void paintComponent(Graphics g) { + public void paintWidget(Graphics g) { if (totalHeight == 0) { this.totalHeight = (int) (this.getHeight() / 10d * 7d); this.totalWidth = this.getWidth(); diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/progress/HourBattery.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/progress/HourBattery.java index 84a926d..dc3dbd6 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/progress/HourBattery.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/progress/HourBattery.java @@ -1,6 +1,6 @@ package org.nanoboot.utils.timecalc.swing.progress; -import org.nanoboot.utils.timecalc.utils.TimeHM; +import org.nanoboot.utils.timecalc.utils.common.TimeHM; /** * @author Robert diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/progress/ProgressCircle.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/progress/ProgressCircle.java index e3eaad8..d6c3bab 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/progress/ProgressCircle.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/progress/ProgressCircle.java @@ -1,8 +1,8 @@ package org.nanoboot.utils.timecalc.swing.progress; import org.nanoboot.utils.timecalc.swing.common.Widget; -import org.nanoboot.utils.timecalc.utils.NumberFormats; -import org.nanoboot.utils.timecalc.utils.Utils; +import org.nanoboot.utils.timecalc.utils.common.NumberFormats; +import org.nanoboot.utils.timecalc.utils.common.Utils; import java.awt.Color; import java.awt.Dimension; @@ -17,7 +17,7 @@ public class ProgressCircle extends Widget { } @Override - public void paintComponent(Graphics g) { + public void paintWidget(Graphics g) { if (side == 0) { this.side = Math.min(getWidth(), getHeight()); } diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/progress/ProgressSquare.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/progress/ProgressSquare.java index d4aaab9..3f9c365 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/progress/ProgressSquare.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/progress/ProgressSquare.java @@ -1,8 +1,8 @@ package org.nanoboot.utils.timecalc.swing.progress; import org.nanoboot.utils.timecalc.swing.common.Widget; -import org.nanoboot.utils.timecalc.utils.NumberFormats; -import org.nanoboot.utils.timecalc.utils.Utils; +import org.nanoboot.utils.timecalc.utils.common.NumberFormats; +import org.nanoboot.utils.timecalc.utils.common.Utils; import java.awt.Color; import java.awt.Dimension; @@ -19,7 +19,7 @@ public class ProgressSquare extends Widget { } @Override - public void paintComponent(Graphics g) { + public void paintWidget(Graphics g) { if (side == 0) { this.side = Math.min(getWidth(), getHeight()); this.square = side * side; diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/progress/WalkingHumanProgressAsciiArt.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/progress/WalkingHumanProgressAsciiArt.java index e1ed6b0..2db826e 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/progress/WalkingHumanProgressAsciiArt.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/progress/WalkingHumanProgressAsciiArt.java @@ -1,10 +1,10 @@ package org.nanoboot.utils.timecalc.swing.progress; import org.nanoboot.utils.timecalc.swing.common.Toaster; -import org.nanoboot.utils.timecalc.utils.Constants; -import org.nanoboot.utils.timecalc.utils.NumberFormats; -import org.nanoboot.utils.timecalc.utils.TimeHM; -import org.nanoboot.utils.timecalc.utils.Utils; +import org.nanoboot.utils.timecalc.utils.common.Constants; +import org.nanoboot.utils.timecalc.utils.common.NumberFormats; +import org.nanoboot.utils.timecalc.utils.common.TimeHM; +import org.nanoboot.utils.timecalc.utils.common.Utils; import javax.imageio.ImageIO; import javax.swing.ImageIcon; diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/Property.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/Property.java deleted file mode 100644 index c55ee4e..0000000 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/Property.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.nanoboot.utils.timecalc.utils; - -import lombok.Getter; -import lombok.Setter; - -/** - * @author Robert - * @since 23.02.2024 - */ -public class Property { - @Getter @Setter - private T value; - public Property(T valueIn) { - this.value = valueIn; - } -} diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/binding/NumberBinding.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/binding/NumberBinding.java new file mode 100644 index 0000000..17be7fd --- /dev/null +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/binding/NumberBinding.java @@ -0,0 +1,8 @@ +package org.nanoboot.utils.timecalc.utils.binding; + +/** + * @author Robert + * @since 23.02.2024 + */ +public class NumberBinding { +} diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/Constants.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/common/Constants.java similarity index 85% rename from modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/Constants.java rename to modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/common/Constants.java index 85023fe..1c314ca 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/Constants.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/common/Constants.java @@ -1,7 +1,7 @@ -package org.nanoboot.utils.timecalc.utils; +package org.nanoboot.utils.timecalc.utils.common; /** - * @author pc00289 + * @author Robert * @since 21.02.2024 */ public class Constants { diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/DateFormats.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/common/DateFormats.java similarity index 90% rename from modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/DateFormats.java rename to modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/common/DateFormats.java index 67c2752..37bbda4 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/DateFormats.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/common/DateFormats.java @@ -1,4 +1,4 @@ -package org.nanoboot.utils.timecalc.utils; +package org.nanoboot.utils.timecalc.utils.common; import java.text.DateFormat; import java.text.SimpleDateFormat; @@ -6,7 +6,7 @@ import java.time.format.DateTimeFormatter; import java.util.Locale; /** - * @author pc00289 + * @author Robert * @since 21.02.2024 */ public class DateFormats { diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/FileConstants.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/common/FileConstants.java similarity index 84% rename from modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/FileConstants.java rename to modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/common/FileConstants.java index 2a07a05..fe173dc 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/FileConstants.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/common/FileConstants.java @@ -1,9 +1,9 @@ -package org.nanoboot.utils.timecalc.utils; +package org.nanoboot.utils.timecalc.utils.common; import java.io.File; /** - * @author pc00289 + * @author Robert * @since 21.02.2024 */ public class FileConstants { diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/HttpProxy.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/common/HttpProxy.java similarity index 94% rename from modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/HttpProxy.java rename to modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/common/HttpProxy.java index ab8978f..52e4488 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/HttpProxy.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/common/HttpProxy.java @@ -1,10 +1,10 @@ -package org.nanoboot.utils.timecalc.utils; +package org.nanoboot.utils.timecalc.utils.common; import java.io.File; import java.io.IOException; /** - * @author pc00289 + * @author Robert * @since 16.02.2024 */ public class HttpProxy { diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/Jokes.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/common/Jokes.java similarity index 97% rename from modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/Jokes.java rename to modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/common/Jokes.java index 58712b3..b7c929d 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/Jokes.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/common/Jokes.java @@ -1,4 +1,4 @@ -package org.nanoboot.utils.timecalc.utils; +package org.nanoboot.utils.timecalc.utils.common; import org.nanoboot.utils.timecalc.swing.common.Toaster; import org.nanoboot.utils.timecalc.app.TimeCalcConf; @@ -13,7 +13,7 @@ import java.util.HashSet; import java.util.Set; /** - * @author pc00289 + * @author Robert * @since 09.02.2024 */ public class Jokes { diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/JokesTxt.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/common/JokesTxt.java similarity index 92% rename from modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/JokesTxt.java rename to modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/common/JokesTxt.java index f77faba..7735103 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/JokesTxt.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/common/JokesTxt.java @@ -1,4 +1,4 @@ -package org.nanoboot.utils.timecalc.utils; +package org.nanoboot.utils.timecalc.utils.common; import java.io.BufferedReader; import java.io.IOException; @@ -7,7 +7,7 @@ import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; /** - * @author pc00289 + * @author Robert * @since 15.02.2024 */ public class JokesTxt { diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/NumberFormats.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/common/NumberFormats.java similarity index 89% rename from modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/NumberFormats.java rename to modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/common/NumberFormats.java index f86a4fa..896255a 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/NumberFormats.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/common/NumberFormats.java @@ -1,10 +1,10 @@ -package org.nanoboot.utils.timecalc.utils; +package org.nanoboot.utils.timecalc.utils.common; import java.text.DecimalFormat; import java.text.NumberFormat; /** - * @author pc00289 + * @author Robert * @since 21.02.2024 */ public class NumberFormats { diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/TimeHM.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/common/TimeHM.java similarity index 95% rename from modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/TimeHM.java rename to modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/common/TimeHM.java index fde210a..cabfd9c 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/TimeHM.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/common/TimeHM.java @@ -1,10 +1,10 @@ -package org.nanoboot.utils.timecalc.utils; +package org.nanoboot.utils.timecalc.utils.common; import lombok.Getter; import lombok.Setter; /** - * @author pc00289 + * @author Robert * @since 21.02.2024 */ public class TimeHM { diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/Utils.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/common/Utils.java similarity index 96% rename from modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/Utils.java rename to modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/common/Utils.java index b661659..4e60051 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/Utils.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/common/Utils.java @@ -1,6 +1,7 @@ -package org.nanoboot.utils.timecalc.utils; +package org.nanoboot.utils.timecalc.utils.common; import org.nanoboot.utils.timecalc.app.Main; +import org.nanoboot.utils.timecalc.utils.property.BooleanProperty; import java.awt.Color; import java.io.File; @@ -14,7 +15,7 @@ import java.util.jar.Attributes; import java.util.jar.Manifest; /** - * @author pc00289 + * @author Robert * @since 15.02.2024 */ public class Utils { diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/BooleanProperty.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/property/BooleanProperty.java similarity index 93% rename from modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/BooleanProperty.java rename to modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/property/BooleanProperty.java index 448297e..281cd65 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/BooleanProperty.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/property/BooleanProperty.java @@ -1,4 +1,4 @@ -package org.nanoboot.utils.timecalc.utils; +package org.nanoboot.utils.timecalc.utils.property; /** * @author Robert diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/property/BooleanReadOnlyProperty.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/property/BooleanReadOnlyProperty.java new file mode 100644 index 0000000..3989d82 --- /dev/null +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/property/BooleanReadOnlyProperty.java @@ -0,0 +1,23 @@ +package org.nanoboot.utils.timecalc.utils.property; + +/** + * @author Robert + * @since 16.02.2024 + */ +public class BooleanReadOnlyProperty extends ReadOnlyProperty { + + public BooleanReadOnlyProperty(Boolean valueIn) { + super(valueIn); + } + public BooleanReadOnlyProperty(Property property) { + super(property); + } + + public boolean isEnabled() { + return getValue(); + } + public boolean isDisabled() { + return !getValue(); + } + +} diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/property/Property.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/property/Property.java new file mode 100644 index 0000000..8e9aee6 --- /dev/null +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/property/Property.java @@ -0,0 +1,49 @@ +package org.nanoboot.utils.timecalc.utils.property; + +import lombok.Getter; +import lombok.Setter; +import org.nanoboot.utils.timecalc.app.TimeCalcException; +import org.nanoboot.utils.timecalc.utils.property.ReadOnlyProperty; +import org.nanoboot.utils.timecalc.utils.property.WriteOnlyProperty; + +/** + * @author Robert + * @since 23.02.2024 + */ +public class Property { + private T value; + private Property boundToProperty = null; + public Property(T valueIn) { + this.value = valueIn; + } + public ReadOnlyProperty asReadOnlyProperty() { + return new ReadOnlyProperty<>(this); + } + public WriteOnlyProperty asWriteOnlyProperty() { + return new WriteOnlyProperty<>(this); + } + public boolean isBound() { + return boundToProperty != null; + } + public void unBound() { + if(!isBound()) { + throw new TimeCalcException("No bound property"); + } + this.value = boundToProperty.value; + this.boundToProperty = null; + } + public void bindTo(Property anotherProperty) { + this.boundToProperty = anotherProperty; + } + public T getValue() { + return isBound() ? this.boundToProperty.getValue() : value; + } + + public void setValue(T value) { + if(isBound()) { + throw new TimeCalcException("Cannot set value, because property is bound."); + } else { + this.value = value; + } + } +} diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/property/PropertyWrapper.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/property/PropertyWrapper.java new file mode 100644 index 0000000..c16ebcd --- /dev/null +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/property/PropertyWrapper.java @@ -0,0 +1,19 @@ +package org.nanoboot.utils.timecalc.utils.property; + +import org.nanoboot.utils.timecalc.app.TimeCalcException; + +/** + * @author Robert + * @since 23.02.2024 + */ +public class PropertyWrapper { + private Property innerProperty; + + public final void unBound() { + throw new TimeCalcException("This is a write only property. Unbounding is forbiden."); + } + public final void bindTo(Property anotherProperty) { + throw new TimeCalcException("This is a write only property. Bounding to another property is forbiden."); + } + +} diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/property/ReadOnlyProperty.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/property/ReadOnlyProperty.java new file mode 100644 index 0000000..36a6013 --- /dev/null +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/property/ReadOnlyProperty.java @@ -0,0 +1,33 @@ +package org.nanoboot.utils.timecalc.utils.property; + +import org.nanoboot.utils.timecalc.app.TimeCalcException; + +/** + * @author Robert + * @since 23.02.2024 + */ +public class ReadOnlyProperty extends Property { + private Property innerProperty; + public ReadOnlyProperty(T valueIn) { + super(valueIn); + throw new TimeCalcException("This constructor is forbidden in class " + getClass().getName() + "."); + } + public ReadOnlyProperty(Property property) { + super(null); + this.innerProperty = property; + } + public final void setValue(T valueIn) { + throw new TimeCalcException("This is a read only property. New value cannot be set."); + } + + public final T getValue(T valueIn) { + return innerProperty.getValue(); + } + public final void unBound() { + throw new TimeCalcException("This is a write only property. Unbounding is forbiden."); + } + public final void bindTo(Property anotherProperty) { + throw new TimeCalcException("This is a write only property. Bounding to another property is forbiden."); + } + +} diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/property/StringProperty.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/property/StringProperty.java new file mode 100644 index 0000000..2ce6618 --- /dev/null +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/property/StringProperty.java @@ -0,0 +1,16 @@ +package org.nanoboot.utils.timecalc.utils.property; + +/** + * @author Robert + * @since 16.02.2024 + */ +public class StringProperty extends Property { + + public StringProperty(String valueIn) { + super(valueIn); + } + + public StringProperty() { + this(""); + } +} diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/property/StringReadOnlyProperty.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/property/StringReadOnlyProperty.java new file mode 100644 index 0000000..2f13b77 --- /dev/null +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/property/StringReadOnlyProperty.java @@ -0,0 +1,15 @@ +package org.nanoboot.utils.timecalc.utils.property; + +/** + * @author Robert + * @since 16.02.2024 + */ +public class StringReadOnlyProperty extends ReadOnlyProperty { + + public StringReadOnlyProperty(String valueIn) { + super(valueIn); + } + public StringReadOnlyProperty(Property property) { + super(property); + } +} diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/property/WriteOnlyProperty.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/property/WriteOnlyProperty.java new file mode 100644 index 0000000..a9f7a30 --- /dev/null +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/property/WriteOnlyProperty.java @@ -0,0 +1,34 @@ +package org.nanoboot.utils.timecalc.utils.property; + +import org.nanoboot.utils.timecalc.app.TimeCalcException; + +/** + * @author Robert + * @since 23.02.2024 + */ +public class WriteOnlyProperty extends Property { + private Property innerProperty; + public WriteOnlyProperty(T valueIn) { + super(valueIn); + throw new TimeCalcException("This constructor is forbidden in class " + getClass().getName() + "."); + } + public WriteOnlyProperty(Property property) { + super(null); + this.innerProperty = property; + } + public final void setValue(T valueIn) { + this.innerProperty.setValue(valueIn); + } + + public final T getValue(T valueIn) { + throw new TimeCalcException("This is a write only property. Current value cannot be read."); + } + public final void unBound() { + throw new TimeCalcException("This is a write only property. Unbounding is forbiden."); + } + public final void bindTo(Property anotherProperty) { + throw new TimeCalcException("This is a write only property. Bounding to another property is forbiden."); + } + + +} diff --git a/timecalc.conf b/timecalc.conf index 9db3996..fbd79c4 100644 --- a/timecalc.conf +++ b/timecalc.conf @@ -2,4 +2,5 @@ clock.colorful=false clock.hands.long=true jokes.visible=true battery.waves.enabled=true -everything-hidden=false \ No newline at end of file +everything-hidden=false +default-visibility=STRONGLY_COLORED \ No newline at end of file