diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcConfiguration.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcConfiguration.java index 4064a88..6f9cf9c 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcConfiguration.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcConfiguration.java @@ -33,6 +33,9 @@ public class TimeCalcConfiguration { public final BooleanProperty clockHandsMillisecondVisibleProperty = new BooleanProperty(TimeCalcProperty.CLOCK_HANDS_MILLISECOND_VISIBLE .getKey()); + public final BooleanProperty clockBorderVisibleProperty = + new BooleanProperty(TimeCalcProperty.CLOCK_BORDER_VISIBLE + .getKey()); // public final BooleanProperty batteryWavesVisibleProperty = new BooleanProperty(TimeCalcProperty.BATTERY_WAVES_VISIBLE @@ -64,6 +67,7 @@ public class TimeCalcConfiguration { clockHandsMinuteVisibleProperty, clockHandsSecondVisibleProperty, clockHandsMillisecondVisibleProperty, + clockBorderVisibleProperty, batteryWavesVisibleProperty, jokesVisibleProperty, commandsVisibleProperty, diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcKeyAdapter.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcKeyAdapter.java index 1682d5a..4f9c8bc 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcKeyAdapter.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcKeyAdapter.java @@ -129,6 +129,11 @@ public class TimeCalcKeyAdapter extends KeyAdapter { window.openConfigWindow(); } + + if (e.getKeyCode() == KeyEvent.VK_P) { + window.openHelpWindow(); + } + window.repaint(); } diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcProperty.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcProperty.java index 6306bac..d7bba79 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcProperty.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcProperty.java @@ -22,6 +22,7 @@ public enum TimeCalcProperty { CLOCK_HANDS_MINUTE_VISIBLE("clock.hands.minute.visible", "Clock : Minute hand"), CLOCK_HANDS_SECOND_VISIBLE("clock.hands.second.visible", "Clock : Second hand"), CLOCK_HANDS_MILLISECOND_VISIBLE("clock.hands.millisecond.visible", "Clock : Millisecond hand"), + CLOCK_BORDER_VISIBLE("clock.border.visible", "Clock : Border"), // BATTERY_WAVES_VISIBLE("battery.waves.visible", "Battery : Waves"), JOKES_VISIBLE("jokes.visible", "Jokes"), @@ -31,6 +32,8 @@ public enum TimeCalcProperty { SQUARE_VISIBLE("square.visible", "Square"); + + @Getter private final String key; @Getter 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 b183f4a..6a94429 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 @@ -45,6 +45,8 @@ public class ConfigWindow extends TWindow { new JCheckBox("clock.hands.second.visible"); private JCheckBox clockHandsMillisecondVisibleProperty = new JCheckBox("clock.hands.millisecond.visible"); + private JCheckBox clockBorderVisibleProperty = + new JCheckBox("clock.border.visible"); private JCheckBox batteryWavesVisibleProperty = new JCheckBox("battery.waves.visible"); @@ -67,10 +69,11 @@ public class ConfigWindow extends TWindow { propertiesList.addAll(Arrays.asList(visibilityDefaultProperty, visibilitySupportedColoredProperty, - clockHandsLongVisibleProperty, clockHandsMinuteVisibleProperty, clockHandsSecondVisibleProperty, clockHandsMillisecondVisibleProperty, + clockHandsLongVisibleProperty, + clockBorderVisibleProperty, batteryWavesVisibleProperty, jokesVisibleProperty, commandsVisibleProperty, diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/common/MainWindow.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/common/MainWindow.java index 4ceb200..7e6ce53 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/common/MainWindow.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/common/MainWindow.java @@ -253,6 +253,7 @@ public class MainWindow extends TWindow { .bindTo(timeCalcConfiguration.clockHandsMinuteVisibleProperty); analogClock.handsLongProperty .bindTo(timeCalcConfiguration.clockHandsLongVisibleProperty); + analogClock.borderVisibleProperty.bindTo(timeCalcConfiguration.clockBorderVisibleProperty); MinuteBattery minuteBattery = new MinuteBattery(progressCircle.getBounds().x, progressCircle.getY() + SwingUtils.MARGIN + progressCircle.getHeight(),140); @@ -485,6 +486,7 @@ public class MainWindow extends TWindow { activitiesButton.doClick(); } public void doExit() { + timeCalcConfiguration.saveToTimeCalcProperties(); exitButton.doClick(); } @@ -493,10 +495,15 @@ public class MainWindow extends TWindow { } public void doRestart() { + timeCalcConfiguration.saveToTimeCalcProperties(); restartButton.doClick(); } public void doCommand() { commandButton.doClick(); } + + public void openHelpWindow() { + helpButton.doClick(); + } } 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 167c7ed..b6cef96 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,6 +1,7 @@ package org.nanoboot.utils.timecalc.swing.progress; import org.nanoboot.utils.timecalc.app.TimeCalcProperties; +import org.nanoboot.utils.timecalc.app.TimeCalcProperty; import org.nanoboot.utils.timecalc.entity.Visibility; import org.nanoboot.utils.timecalc.swing.common.Widget; import org.nanoboot.utils.timecalc.utils.common.DateFormats; @@ -53,6 +54,9 @@ public class AnalogClock extends Widget { new BooleanProperty("millisecondEnabledProperty", false); public BooleanProperty handsLongProperty = new BooleanProperty("handsLongProperty", true); + public final BooleanProperty borderVisibleProperty = + new BooleanProperty(TimeCalcProperty.CLOCK_BORDER_VISIBLE + .getKey()); private TimeHM startTime; private final TimeHM endTime; private int startAngle; @@ -189,43 +193,64 @@ public class AnalogClock extends Widget { hours + (hours > 0.5 ? (-1) : 1) * 0.5, 4.0f, Color.BLACK, visibility); } + if(borderVisibleProperty.isEnabled()) { + for (int minuteI = 0; minuteI < 60; minuteI++) { + drawBorder(g2d, minuteI, minuteI % 5 == 0 ? 2f : 1f, + Color.BLACK, visibility); + } + } drawCentre(g2d, centerX, centerY); } - private void drawCentre(Graphics2D g2d, int centerX, int centerY) { - Color currentColor = g2d.getColor(); + private void drawCentre(Graphics2D brush, int centerX, int centerY) { + Color currentColor = brush.getColor(); Visibility visibility = Visibility.valueOf(visibilityProperty.getValue()); - g2d.setColor(visibility.isStronglyColored() || mouseOver ? Color.RED : + brush.setColor(visibility.isStronglyColored() || mouseOver ? Color.RED : FOREGROUND_COLOR); - g2d.fillOval(centerX - 3, centerY - 3, 8, 8); - g2d.setColor(currentColor); + brush.fillOval(centerX - 3, centerY - 3, 8, 8); + brush.setColor(currentColor); } - private void drawHand(Graphics2D g2d, int length, double value, + private void drawBorder(Graphics2D brush, int forMinute, + float stroke, Color color, Visibility visibility) { + double value = ((double)forMinute) / 60d; + int length = side / 18; + double angle = Math.PI * 2 * (value - 0.25); + int startX = (int) (getWidth() / 2 + (side/2 - length) * Math.cos(angle)); + int startY = (int) (getHeight() / 2 + (side/2 - length) * Math.sin(angle)); + int endX = (int) (getWidth() / 2 + (side/2 - length * 0.50d) * Math.cos(angle)); + int endY = (int) (getHeight() / 2 + (side/2 - length * 0.50d) * Math.sin(angle)); + + brush.setColor((visibility.isStronglyColored() || mouseOver) ? color : + FOREGROUND_COLOR); + brush.setStroke(new BasicStroke(stroke)); + brush.drawLine(startX, startY, endX, endY); + } + private void drawHand(Graphics2D brush, int length, double value, float stroke, Color color, Visibility visibility) { length = length - 4; double angle = Math.PI * 2 * (value - 0.25); int endX = (int) (getWidth() / 2 + length * Math.cos(angle)); int endY = (int) (getHeight() / 2 + length * Math.sin(angle)); - g2d.setColor((visibility.isStronglyColored() || mouseOver) ? color : + brush.setColor((visibility.isStronglyColored() || mouseOver) ? color : FOREGROUND_COLOR); - g2d.setStroke(new BasicStroke(stroke)); - g2d.drawLine(getWidth() / 2, getHeight() / 2, endX, endY); + brush.setStroke(new BasicStroke(stroke)); + brush.drawLine(getWidth() / 2, getHeight() / 2, endX, endY); } - private void drawClockFace(Graphics2D g2d, int centerX, int centerY, + private void drawClockFace(Graphics2D brush, int centerX, int centerY, int radius, Visibility visibility) { - g2d.setStroke(new BasicStroke(2.0f)); - g2d.setColor(visibility.isStronglyColored() || mouseOver ? Color.BLACK : + brush.setStroke(new BasicStroke(2.0f)); + brush.setColor(visibility.isStronglyColored() || mouseOver ? Color.BLACK : FOREGROUND_COLOR); // System.out.println("centerX=" + centerX); // System.out.println("centerY=" + centerY); // System.out.println("radius=" + radius); - g2d.drawOval(1, 1, centerX * 2 - 4, centerY * 2 - 4); - g2d.drawOval(2, 2, centerX * 2 - 4, centerY * 2 - 4); + brush.drawOval(1, 1, centerX * 2 - 3, centerY * 2 - 3); + brush.drawOval(2, 2, centerX * 2 - 3, centerY * 2 - 3); // g2d.drawOval(3, 3, centerX * 2 - 6, centerY * 2 - 6); // g2d.drawOval(4, 4, centerX * 2 - 8, centerY * 2 - 8); @@ -236,10 +261,10 @@ public class AnalogClock extends Widget { cal.set(Calendar.MONTH, monthProperty.getValue() - 1); cal.set(Calendar.DAY_OF_MONTH, dayProperty.getValue()); Date date = cal.getTime(); - g2d.drawString(DateFormats.DATE_TIME_FORMATTER_LONG.format(date), + brush.drawString(DateFormats.DATE_TIME_FORMATTER_LONG.format(date), ((int) (side * 0.25)), ((int) (side * 0.35))); - g2d.drawString(DateFormats.DATE_TIME_FORMATTER_TIME.format(date), + brush.drawString(DateFormats.DATE_TIME_FORMATTER_TIME.format(date), ((int) (side * 0.25) + 30), ((int) (side * 0.35)) + 60); } @@ -248,8 +273,8 @@ public class AnalogClock extends Widget { int dx = centerX + (int) ((radius + 20) * Math.cos(angle)) - 4; int dy = centerY + (int) ((radius + 20) * Math.sin(angle)) + 4; - g2d.setFont(new Font("sans", Font.BOLD, 16)); - g2d.drawString(Integer.toString(i), dx, dy); + brush.setFont(new Font("sans", Font.BOLD, 16)); + brush.drawString(Integer.toString(i), dx + (i == 12 ? -3 : 0), dy + (i == 12 ? +3 : 0)); } } diff --git a/modules/time-calc-app/src/main/resources/timecalc-default.conf b/modules/time-calc-app/src/main/resources/timecalc-default.conf index 225dc1b..9ce1990 100644 --- a/modules/time-calc-app/src/main/resources/timecalc-default.conf +++ b/modules/time-calc-app/src/main/resources/timecalc-default.conf @@ -5,6 +5,7 @@ clock.hands.long.visible=true clock.hands.minute.visible=true clock.hands.second.visible=true clock.hands.millisecond.visible=false +clock.border.visible=true # battery.waves.visible=true # @@ -12,22 +13,4 @@ jokes.visible=true commands.visible=true notifications.visible=true smileys.colored=true -square.visible=true - -#todo -logs.detailed=false -smileys.visible=true -battery.smileys.visible=true -square.smileys.visible=true -circle.smileys.visible=true -battery.charging-unicode-character.visible=true -battery.percent-precision.count-of-decimal-points=5 -battery.label.finished-from-total.visible=true -widgets.clock.visible=true -circle.visible=true -walking-human.visible=true -battery.visible=true -battery.hour.visible=true -battery.day.visible=true -battery.week.visible=true -battery.month.visible=true +square.visible=true \ No newline at end of file diff --git a/timecalc.template.conf b/timecalc.template.conf index fe407b2..83238da 100644 --- a/timecalc.template.conf +++ b/timecalc.template.conf @@ -15,14 +15,19 @@ smileys.colored=false #todo logs.detailed=false -smileys.visible=true + battery.smileys.visible=true square.smileys.visible=true circle.smileys.visible=true battery.charging-unicode-character.visible=true battery.percent-precision.count-of-decimal-points=5 -battery.label.finished-from-total.visible=true -widgets.clock.visible=true +battery.percent-progress.visible +battery.label.visible=true +battery.circle-progress.visible=true +clock.visible=true +clock.date.visible-if-mouse-moving-over=true +clock.centre-circle.visible=true +clock.border.visible=true square.visible=true circle.visible=true walking-human.visible=true @@ -33,4 +38,7 @@ battery.day.visible=true battery.week.visible=true battery.month.visible=true battery.year.visible=true +battery.blinking-if-critical-low=true +smileys.visible=true +smileys.visible-only-if-mouse-moving-over=true