Added new improvements

This commit is contained in:
Robert Vokac 2024-02-04 14:13:00 +00:00
parent 0a86661fe1
commit d3b134586b
No known key found for this signature in database
GPG Key ID: 693D30BEE3329055
6 changed files with 77 additions and 11 deletions

View File

@ -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

View File

@ -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);

View File

@ -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));
}
}

View File

@ -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);

View File

@ -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");

View File

@ -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);
}
}