mirror of
https://github.com/robertvokac/time-calc.git
synced 2025-03-25 07:27:49 +01:00
Added new improvements
This commit is contained in:
parent
0a86661fe1
commit
d3b134586b
@ -46,3 +46,7 @@ If file test.txt exists, then user is not asked for start time and overtime. Ins
|
|||||||
## Key shortcuts
|
## Key shortcuts
|
||||||
|
|
||||||
## Command button
|
## Command button
|
||||||
|
|
||||||
|
## Todos
|
||||||
|
|
||||||
|
Config window
|
||||||
|
@ -3,6 +3,7 @@ package org.nanoboot.utils.timecalc.gui.progress;
|
|||||||
import org.nanoboot.utils.timecalc.gui.common.Widget;
|
import org.nanoboot.utils.timecalc.gui.common.Widget;
|
||||||
import org.nanoboot.utils.timecalc.main.TimeCalcConf;
|
import org.nanoboot.utils.timecalc.main.TimeCalcConf;
|
||||||
import org.nanoboot.utils.timecalc.utils.DateFormats;
|
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.Utils;
|
||||||
|
|
||||||
import javax.swing.JFrame;
|
import javax.swing.JFrame;
|
||||||
@ -13,27 +14,64 @@ import java.awt.Font;
|
|||||||
import java.awt.Graphics;
|
import java.awt.Graphics;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.RenderingHints;
|
import java.awt.RenderingHints;
|
||||||
import java.text.DateFormat;
|
|
||||||
import java.text.SimpleDateFormat;
|
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.GregorianCalendar;
|
import java.util.GregorianCalendar;
|
||||||
import java.util.Locale;
|
|
||||||
|
|
||||||
//https://kodejava.org/how-do-i-write-a-simple-analog-clock-using-java-2d/
|
//https://kodejava.org/how-do-i-write-a-simple-analog-clock-using-java-2d/
|
||||||
public class AnalogClock extends Widget {
|
public class AnalogClock extends Widget {
|
||||||
|
|
||||||
public AnalogClock() {
|
private TimeHM startTime;
|
||||||
setPreferredSize(new Dimension(400, 300));
|
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) {
|
public static void main(String[] args) {
|
||||||
JFrame frame = new JFrame("Analog Clock");
|
JFrame window = new JFrame("Analog Clock");
|
||||||
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
frame.add(new AnalogClock());
|
AnalogClock clock =
|
||||||
frame.pack();
|
new AnalogClock(new TimeHM("6:30"), new TimeHM("19:00"));
|
||||||
frame.setVisible(true);
|
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
|
@Override
|
||||||
@ -52,6 +90,20 @@ public class AnalogClock extends Widget {
|
|||||||
int minute = time.get(Calendar.MINUTE);
|
int minute = time.get(Calendar.MINUTE);
|
||||||
int hour = time.get(Calendar.HOUR_OF_DAY);
|
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
|
// Draw clock numbers and circle
|
||||||
drawClockFace(g2d, centerX, centerY, side / 2 - 40);
|
drawClockFace(g2d, centerX, centerY, side / 2 - 40);
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package org.nanoboot.utils.timecalc.gui.progress;
|
package org.nanoboot.utils.timecalc.gui.progress;
|
||||||
|
|
||||||
import org.nanoboot.utils.timecalc.gui.common.Widget;
|
import org.nanoboot.utils.timecalc.gui.common.Widget;
|
||||||
|
import org.nanoboot.utils.timecalc.utils.NumberFormats;
|
||||||
import org.nanoboot.utils.timecalc.utils.Utils;
|
import org.nanoboot.utils.timecalc.utils.Utils;
|
||||||
|
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
@ -37,6 +38,10 @@ public class ProgressCircle extends Widget {
|
|||||||
new Color(105, 175, 236) : FOREGROUND_COLOR2);
|
new Color(105, 175, 236) : FOREGROUND_COLOR2);
|
||||||
g2d.fillArc(0 + (side2 / 2), 0 + (side2 / 2), side2, side2, 90,
|
g2d.fillArc(0 + (side2 / 2), 0 + (side2 / 2), side2, side2, 90,
|
||||||
-(int) angleDouble2);
|
-(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));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -223,7 +223,7 @@ public class TimeCalcManager {
|
|||||||
stopBeforeEnd = true;
|
stopBeforeEnd = true;
|
||||||
});
|
});
|
||||||
|
|
||||||
AnalogClock analogClock = new AnalogClock();
|
AnalogClock analogClock = new AnalogClock(startTime, endTime);
|
||||||
analogClock.setBounds(MARGIN, MARGIN, 200);
|
analogClock.setBounds(MARGIN, MARGIN, 200);
|
||||||
window.add(analogClock);
|
window.add(analogClock);
|
||||||
|
|
||||||
@ -356,6 +356,7 @@ public class TimeCalcManager {
|
|||||||
|
|
||||||
int hourNow = Integer.parseInt(nowString.split(":")[0]);
|
int hourNow = Integer.parseInt(nowString.split(":")[0]);
|
||||||
int minuteNow = Integer.parseInt(nowString.split(":")[1]);
|
int minuteNow = Integer.parseInt(nowString.split(":")[1]);
|
||||||
|
|
||||||
int secondNow = Integer.parseInt(nowString.split(":")[2]);
|
int secondNow = Integer.parseInt(nowString.split(":")[2]);
|
||||||
int millisecondNow = Integer.parseInt(nowString.split(":")[3]);
|
int millisecondNow = Integer.parseInt(nowString.split(":")[3]);
|
||||||
TimeHM timeRemains = new TimeHM(endTime.getHour() - hourNow, endTime.getMinute() - minuteNow);
|
TimeHM timeRemains = new TimeHM(endTime.getHour() - hourNow, endTime.getMinute() - minuteNow);
|
||||||
|
@ -11,6 +11,7 @@ public class NumberFormats {
|
|||||||
private NumberFormats() {
|
private NumberFormats() {
|
||||||
//Not meant to be instantiated.
|
//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_TWO_DECIMAL_PLACES = new DecimalFormat("#00.00");
|
||||||
public static final NumberFormat FORMATTER_FIVE_DECIMAL_PLACES = new DecimalFormat("#0.00000");
|
public static final NumberFormat FORMATTER_FIVE_DECIMAL_PLACES = new DecimalFormat("#0.00000");
|
||||||
public static final NumberFormat FORMATTER_THREE_DECIMAL_PLACES = new DecimalFormat("#0.000");
|
public static final NumberFormat FORMATTER_THREE_DECIMAL_PLACES = new DecimalFormat("#0.000");
|
||||||
|
@ -43,4 +43,7 @@ public class TimeHM {
|
|||||||
public static int countDiffInMinutes(TimeHM startTime, TimeHM endTime) {
|
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());
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user