diff --git a/Readme.md b/Readme.md index d9422ad..1ff9afc 100644 --- a/Readme.md +++ b/Readme.md @@ -46,3 +46,7 @@ If file test.txt exists, then user is not asked for start time and overtime. Ins ## Key shortcuts ## Command button + +## Todos + +Config window diff --git a/src/main/java/org/nanoboot/utils/timecalc/gui/progress/AnalogClock.java b/src/main/java/org/nanoboot/utils/timecalc/gui/progress/AnalogClock.java index e76e070..ad9b555 100644 --- a/src/main/java/org/nanoboot/utils/timecalc/gui/progress/AnalogClock.java +++ b/src/main/java/org/nanoboot/utils/timecalc/gui/progress/AnalogClock.java @@ -3,6 +3,7 @@ package org.nanoboot.utils.timecalc.gui.progress; import org.nanoboot.utils.timecalc.gui.common.Widget; import org.nanoboot.utils.timecalc.main.TimeCalcConf; import org.nanoboot.utils.timecalc.utils.DateFormats; +import org.nanoboot.utils.timecalc.utils.TimeHM; import org.nanoboot.utils.timecalc.utils.Utils; import javax.swing.JFrame; @@ -13,27 +14,64 @@ import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; -import java.text.DateFormat; -import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; -import java.util.Locale; //https://kodejava.org/how-do-i-write-a-simple-analog-clock-using-java-2d/ public class AnalogClock extends Widget { - public AnalogClock() { - setPreferredSize(new Dimension(400, 300)); + private TimeHM startTime; + private TimeHM endTime; + private int angleDiff; + private int startAngle; + private int endAngle; + + public AnalogClock(TimeHM startTimeIn, + TimeHM endTimeIn) { + + this.endTime = endTimeIn.cloneInstance(); + this.endAngle = + (int) ((endTime.getHour() + endTime.getMinute() / 60d) / 12d * 360d); + if(endTime.getHour() >12) { + endTime.setHour(endTime.getHour() - 12); + } + this.startTime = startTimeIn.cloneInstance(); + this.startAngle = + (int) ((startTime.getHour() + startTime.getMinute() / 60d) / 12d * 360d); + + + + setPreferredSize(new Dimension(200, 200)); } public static void main(String[] args) { - JFrame frame = new JFrame("Analog Clock"); - frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - frame.add(new AnalogClock()); - frame.pack(); - frame.setVisible(true); + JFrame window = new JFrame("Analog Clock"); + window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + AnalogClock clock = + new AnalogClock(new TimeHM("6:30"), new TimeHM("19:00")); + window.add(clock); + window.pack(); + window.setVisible(true); +// window.addKeyListener(new KeyAdapter() { +// // Key Pressed method +// public void keyPressed(KeyEvent e) { +// if (e.getKeyCode() == KeyEvent.VK_UP) { +// clock.startAngle_++; +// } +// if (e.getKeyCode() == KeyEvent.VK_DOWN) { +// clock.startAngle_--; +// } +// +// if (e.getKeyCode() == KeyEvent.VK_RIGHT) { +// clock.arcAngle_++; +// } +// if (e.getKeyCode() == KeyEvent.VK_LEFT) { +// clock.arcAngle_--; +// } +// } +// }); } @Override @@ -52,6 +90,20 @@ public class AnalogClock extends Widget { int minute = time.get(Calendar.MINUTE); int hour = time.get(Calendar.HOUR_OF_DAY); + if(mouseOver && Utils.highlighted.isEnabled()) { + this.startTime = new TimeHM(hour, minute); + this.startAngle = + (int) ((startTime.getHour() + startTime.getMinute() / 60d) / 12d * 360d); + + Color currentColor = g2d.getColor(); + g2d.setColor(Color.YELLOW); + g2d.fillArc(0, 0, side, side, -startAngle +90, startAngle - endAngle); + + //System.out.println("ANGLES: " + startAngle + " " + endAngle + " " + angleDiff ); + + g2d.setColor(currentColor); + } + // Draw clock numbers and circle drawClockFace(g2d, centerX, centerY, side / 2 - 40); diff --git a/src/main/java/org/nanoboot/utils/timecalc/gui/progress/ProgressCircle.java b/src/main/java/org/nanoboot/utils/timecalc/gui/progress/ProgressCircle.java index 10e24e3..f0ca496 100644 --- a/src/main/java/org/nanoboot/utils/timecalc/gui/progress/ProgressCircle.java +++ b/src/main/java/org/nanoboot/utils/timecalc/gui/progress/ProgressCircle.java @@ -1,6 +1,7 @@ package org.nanoboot.utils.timecalc.gui.progress; import org.nanoboot.utils.timecalc.gui.common.Widget; +import org.nanoboot.utils.timecalc.utils.NumberFormats; import org.nanoboot.utils.timecalc.utils.Utils; import java.awt.Color; @@ -37,6 +38,10 @@ public class ProgressCircle extends Widget { new Color(105, 175, 236) : FOREGROUND_COLOR2); g2d.fillArc(0 + (side2 / 2), 0 + (side2 / 2), side2, side2, 90, -(int) angleDouble2); + g2d.setColor(Utils.highlighted.get() || mouseOver ? Color.blue :FOREGROUND_COLOR); + + g2d.drawString( + NumberFormats.FORMATTER_ZERO_DECIMAL_PLACES.format(donePercent * 100) + "%", (int)(side / 8d * 0d),(int)(side / 8d * 7.5d)); } } \ No newline at end of file diff --git a/src/main/java/org/nanoboot/utils/timecalc/main/TimeCalcManager.java b/src/main/java/org/nanoboot/utils/timecalc/main/TimeCalcManager.java index 4633581..e6f548c 100644 --- a/src/main/java/org/nanoboot/utils/timecalc/main/TimeCalcManager.java +++ b/src/main/java/org/nanoboot/utils/timecalc/main/TimeCalcManager.java @@ -223,7 +223,7 @@ public class TimeCalcManager { stopBeforeEnd = true; }); - AnalogClock analogClock = new AnalogClock(); + AnalogClock analogClock = new AnalogClock(startTime, endTime); analogClock.setBounds(MARGIN, MARGIN, 200); window.add(analogClock); @@ -356,6 +356,7 @@ public class TimeCalcManager { int hourNow = Integer.parseInt(nowString.split(":")[0]); int minuteNow = Integer.parseInt(nowString.split(":")[1]); + int secondNow = Integer.parseInt(nowString.split(":")[2]); int millisecondNow = Integer.parseInt(nowString.split(":")[3]); TimeHM timeRemains = new TimeHM(endTime.getHour() - hourNow, endTime.getMinute() - minuteNow); diff --git a/src/main/java/org/nanoboot/utils/timecalc/utils/NumberFormats.java b/src/main/java/org/nanoboot/utils/timecalc/utils/NumberFormats.java index 5250cc1..c76d052 100644 --- a/src/main/java/org/nanoboot/utils/timecalc/utils/NumberFormats.java +++ b/src/main/java/org/nanoboot/utils/timecalc/utils/NumberFormats.java @@ -11,6 +11,7 @@ public class NumberFormats { private NumberFormats() { //Not meant to be instantiated. } + public static final NumberFormat FORMATTER_ZERO_DECIMAL_PLACES = new DecimalFormat("#00"); public static final NumberFormat FORMATTER_TWO_DECIMAL_PLACES = new DecimalFormat("#00.00"); public static final NumberFormat FORMATTER_FIVE_DECIMAL_PLACES = new DecimalFormat("#0.00000"); public static final NumberFormat FORMATTER_THREE_DECIMAL_PLACES = new DecimalFormat("#0.000"); diff --git a/src/main/java/org/nanoboot/utils/timecalc/utils/TimeHM.java b/src/main/java/org/nanoboot/utils/timecalc/utils/TimeHM.java index 0f27ac6..fde210a 100644 --- a/src/main/java/org/nanoboot/utils/timecalc/utils/TimeHM.java +++ b/src/main/java/org/nanoboot/utils/timecalc/utils/TimeHM.java @@ -43,4 +43,7 @@ public class TimeHM { public static int countDiffInMinutes(TimeHM startTime, TimeHM endTime) { return (endTime.getHour() * TimeHM.MINUTES_PER_HOUR + endTime.getMinute()) - (startTime.getHour() * TimeHM.MINUTES_PER_HOUR + startTime.getMinute()); } + public TimeHM cloneInstance() { + return new TimeHM(hour, minute); + } }