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
|
||||
|
||||
## 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.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);
|
||||
|
||||
|
@ -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));
|
||||
}
|
||||
|
||||
}
|
@ -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);
|
||||
|
@ -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");
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user