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 5892c21..615b093 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 @@ -3,6 +3,7 @@ package org.nanoboot.utils.timecalc.app; import org.nanoboot.utils.timecalc.entity.Visibility; import org.nanoboot.utils.timecalc.swing.common.AboutButton; import org.nanoboot.utils.timecalc.swing.common.ComponentRegistry; +import org.nanoboot.utils.timecalc.swing.common.ConfigWindow; import org.nanoboot.utils.timecalc.swing.common.SwingUtils; import org.nanoboot.utils.timecalc.swing.common.TimeCalcButton; import org.nanoboot.utils.timecalc.swing.common.TimeCalcWindow; @@ -46,6 +47,7 @@ import java.util.logging.Logger; public class TimeCalcManager { public static final Color BACKGROUND_COLOR = new Color(238, 238, 238); public static final Color FOREGROUND_COLOR = new Color(210, 210, 210); + private ConfigWindow configWindow = null; private boolean stopBeforeEnd = false; private final TimeCalcConfiguration timeCalcConfiguration = @@ -146,6 +148,12 @@ public class TimeCalcManager { stopBeforeEnd = true; }); + configButton.addActionListener(e -> { + if(configWindow == null) { + this.configWindow = new ConfigWindow(timeCalcConfiguration); + } + configWindow.setVisible(true); + }); Calendar calNow = Calendar.getInstance(); calNow.setTime(new Date()); @@ -266,14 +274,17 @@ public class TimeCalcManager { window.setSize(dayBattery.getX() + dayBattery.getWidth() + 3 * SwingUtils.MARGIN, exitButton.getY() + 3 * exitButton.getHeight() + SwingUtils.MARGIN); while (true) { + //System.out.println("timeCalcConfiguration.handsLongProperty=" + timeCalcConfiguration.clockHandLongProperty.isEnabled()); Visibility currentVisibility = Visibility .valueOf(timeCalcApp.visibilityProperty.getValue()); if(timeCalcConfiguration.visibilityOnlyGreyOrNoneEnabledProperty.isEnabled() && currentVisibility.isColored() ){ timeCalcApp.visibilityProperty.setValue(Visibility.GRAY.name()); } if (stopBeforeEnd) { + if(configWindow != null) {configWindow.setVisible(false);configWindow.dispose();} window.setVisible(false); window.dispose(); + break; } @@ -380,6 +391,7 @@ public class TimeCalcManager { } } + if(configWindow != null) {configWindow.setVisible(false);configWindow.dispose();} window.setVisible(false); window.dispose(); } diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcProperties.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcProperties.java index 7387dc7..8a76300 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcProperties.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcProperties.java @@ -42,28 +42,7 @@ public class TimeCalcProperties { } catch (IOException e) { System.err.println(e); } - if (!isSecondEnabled() && isMillisecondEnabled()) { - System.out.println( - "Sorry, seconds are disabled, millisecond must be disabled too."); - this.properties.setProperty( - TimeCalcProperties.CLOCK_HANDS_MILLISECOND_ENABLED, - "false"); - } - if (!isMinuteEnabled() && isSecondEnabled()) { - System.out.println( - "Sorry, minutes are disabled, second must be disabled too."); - this.properties.setProperty( - TimeCalcProperties.CLOCK_HANDS_SECOND_ENABLED, - "false"); - } - if (!isMinuteEnabled() && isMillisecondEnabled()) { - System.out.println( - "Sorry, minutes are disabled, millisecond must be disabled too."); - this.properties.setProperty( - TimeCalcProperties.CLOCK_HANDS_MILLISECOND_ENABLED, - "false"); - } } public static TimeCalcProperties getInstance() { diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/common/ConfigWindow.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/common/ConfigWindow.java index 40f7a3e..6e474c8 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/common/ConfigWindow.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/common/ConfigWindow.java @@ -1,32 +1,71 @@ package org.nanoboot.utils.timecalc.swing.common; -import org.nanoboot.utils.timecalc.utils.common.Utils; +import org.nanoboot.utils.timecalc.app.TimeCalcConfiguration; +import org.nanoboot.utils.timecalc.entity.Visibility; -import javax.swing.JEditorPane; +import javax.swing.JCheckBox; import javax.swing.JFrame; -import javax.swing.JScrollPane; -import javax.xml.transform.OutputKeys; -import javax.xml.transform.Source; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.stream.StreamResult; -import javax.xml.transform.stream.StreamSource; -import java.io.BufferedReader; -import java.io.File; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.StringReader; -import java.io.StringWriter; -import java.net.HttpURLConnection; -import java.net.URL; +import javax.swing.JLabel; +import javax.swing.JTextField; +import java.awt.FlowLayout; +import java.awt.LayoutManager; /** * @author Robert Vokac * @since 16.02.2024 */ public class ConfigWindow extends JFrame { - public ConfigWindow() { - this.setSize(800, 600); + private final TimeCalcConfiguration timeCalcConfiguration; + private JCheckBox clockHandLongProperty = new JCheckBox("Visibility : Clock : Hands are long", true); + private JCheckBox clockHandMinuteEnabledProperty = new JCheckBox("Visibility : Clock : Minute hand", true); + private JCheckBox clockHandSecondEnabledProperty = new JCheckBox("Visibility : Clock : Second hand", true); + private JCheckBox clockHandMillisecondEnabledProperty = new JCheckBox("Visibility : Clock : Millisecond hand", false); + private JCheckBox batteryWavesEnabledProperty = new JCheckBox("Visibility : Battery : Waves", true); + public final JTextField defaultVisibilityProperty = new JTextField(Visibility.STRONGLY_COLORED.name()); - } + private JCheckBox visibilityOnlyGreyOrNoneEnabledProperty = new JCheckBox("Visibility : Only GREY or NONE", + false); + private JCheckBox jokesEnabledProperty = new JCheckBox("Visibility : Jokes", true); + private JCheckBox commandsEnabledProperty = new JCheckBox("Visibility : Commands", true); + private JCheckBox toastsEnabledProperty = new JCheckBox("Visibility : Toasts", true); + private JCheckBox smileysColoredProperty = new JCheckBox("Visibility : Smileys", true); + + + public ConfigWindow(TimeCalcConfiguration timeCalcConfiguration) { + this.timeCalcConfiguration = timeCalcConfiguration; + setTitle("Configuration"); + this.setSize(800, 600); + LayoutManager flowLayout = new FlowLayout(FlowLayout.LEFT); + setLayout(flowLayout); + + add(clockHandLongProperty); + add(clockHandMinuteEnabledProperty); + add(clockHandSecondEnabledProperty); + add(clockHandMillisecondEnabledProperty); + add(batteryWavesEnabledProperty); + add(new JLabel("Visibility : Default")); + add(defaultVisibilityProperty); + + clockHandLongProperty.addActionListener(e -> { + timeCalcConfiguration.clockHandLongProperty.setValue(clockHandLongProperty.isSelected()); + }); + clockHandMinuteEnabledProperty.addActionListener(e -> { + timeCalcConfiguration.clockHandMinuteEnabledProperty.setValue(clockHandMinuteEnabledProperty.isSelected()); + }); + clockHandSecondEnabledProperty.addActionListener(e -> { + timeCalcConfiguration.clockHandSecondEnabledProperty.setValue(clockHandSecondEnabledProperty.isSelected()); + }); + clockHandMillisecondEnabledProperty.addActionListener(e -> { + timeCalcConfiguration.clockHandMillisecondEnabledProperty.setValue(clockHandMillisecondEnabledProperty.isSelected()); + }); + batteryWavesEnabledProperty.addActionListener(e -> { + timeCalcConfiguration.batteryWavesEnabledProperty.setValue(batteryWavesEnabledProperty.isSelected()); + }); + + defaultVisibilityProperty.addActionListener(e -> { + timeCalcConfiguration.defaultVisibilityProperty.setValue(defaultVisibilityProperty.getText()); + }); + + + } } 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 47d6e89..167c7ed 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,5 +1,6 @@ package org.nanoboot.utils.timecalc.swing.progress; +import org.nanoboot.utils.timecalc.app.TimeCalcProperties; import org.nanoboot.utils.timecalc.entity.Visibility; import org.nanoboot.utils.timecalc.swing.common.Widget; import org.nanoboot.utils.timecalc.utils.common.DateFormats; @@ -107,6 +108,7 @@ public class AnalogClock extends Widget { @Override public void paintWidget(Graphics g) { + //System.out.println("clock.handsLongProperty=" + handsLongProperty.isEnabled()); Visibility visibility = Visibility.valueOf(visibilityProperty.getValue()); Graphics2D g2d = (Graphics2D) g; @@ -142,7 +144,7 @@ public class AnalogClock extends Widget { drawClockFace(g2d, centerX, centerY, side / 2 - 40, visibility); // - if (millisecondEnabledProperty.isEnabled()) { + if (millisecondEnabledProperty.isEnabled() && secondEnabledProperty.isEnabled() && minuteEnabledProperty.isEnabled()) { drawHand(g2d, side / 2 - 10, millisecond / 1000.0, 1.0f, COLOR_FOR_MILLISECOND_HAND_STRONGLY_COLORED, visibility); @@ -155,7 +157,7 @@ public class AnalogClock extends Widget { } } - if (secondEnabledProperty.isEnabled()) { + if (secondEnabledProperty.isEnabled() && minuteEnabledProperty.isEnabled()) { drawHand(g2d, side / 2 - 10, second / 60.0, 0.5f, Color.RED, visibility); diff --git a/timecalc.conf b/timecalc.conf index 8158816..00b7553 100644 --- a/timecalc.conf +++ b/timecalc.conf @@ -4,7 +4,7 @@ clock.hands.second.enabled=true clock.hands.millisecond.enabled=false battery.waves.enabled=true default-visibility=STRONGLY_COLORED -visibility.only-grey-or-none.enabled=false +visibility.only-grey-or-none.enabled=true jokes.enabled=true commands.enabled=true toasts.enabled=true