From 621875c3256ea943f37b8fcc25d4650c53349ba3 Mon Sep 17 00:00:00 2001 From: Robert Vokac Date: Sat, 27 Jan 2024 16:07:03 +0000 Subject: [PATCH] New improvements --- highlight.txt | 0 overtime.txt | 2 +- src/main/java/rvc/timecalc/Main.java | 2 +- .../java/rvc/timecalc/ProgressCircle.java | 112 ++++++++++++++++++ .../java/rvc/timecalc/TimeCalcWindow.java | 9 +- starttime.txt | 2 +- 6 files changed, 123 insertions(+), 4 deletions(-) delete mode 100644 highlight.txt create mode 100644 src/main/java/rvc/timecalc/ProgressCircle.java diff --git a/highlight.txt b/highlight.txt deleted file mode 100644 index e69de29..0000000 diff --git a/overtime.txt b/overtime.txt index 5b70e78..bcb4bda 100644 --- a/overtime.txt +++ b/overtime.txt @@ -1 +1 @@ -0:09 \ No newline at end of file +0:00 \ No newline at end of file diff --git a/src/main/java/rvc/timecalc/Main.java b/src/main/java/rvc/timecalc/Main.java index 1ba6c50..ec66092 100644 --- a/src/main/java/rvc/timecalc/Main.java +++ b/src/main/java/rvc/timecalc/Main.java @@ -12,7 +12,7 @@ public class Main { public static void main(String[] args) throws IOException { while (true) { - boolean test = false; + boolean test = true; File starttimeTxt = new File("starttime.txt"); File overtimeTxt = new File("overtime.txt"); String lastStartTime = Utils.readTextFromFile(starttimeTxt); diff --git a/src/main/java/rvc/timecalc/ProgressCircle.java b/src/main/java/rvc/timecalc/ProgressCircle.java new file mode 100644 index 0000000..8a24c07 --- /dev/null +++ b/src/main/java/rvc/timecalc/ProgressCircle.java @@ -0,0 +1,112 @@ +package rvc.timecalc; + +import javax.swing.JPanel; +import javax.swing.Timer; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.RenderingHints; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.io.IOException; + +public class ProgressCircle extends JPanel { + + private static final Color FOREGROUND_COLOR = new Color(220,220,220); + private static final Color FOREGROUND_COLOR2 = new Color(210,210,210); + private static final Color BACKGROUND_COLOR = new Color(238, 238, 238); + private int side = 0; + private double donePercent = 0; + + private boolean highlight = false; + + public void setHighlight(boolean highlight) { + this.highlight = highlight; + if (highlight && !Utils.highlightTxt.exists()) { + try { + Utils.highlightTxt.createNewFile(); + } catch (IOException ioException) { + System.out.println(ioException); + } + } + if (!highlight && Utils.highlightTxt.exists()) { + Utils.highlightTxt.delete(); + } + } + + public ProgressCircle() { + setPreferredSize(new Dimension(200, 200)); + setBackground(BACKGROUND_COLOR); + new Timer(100, e -> repaint()).start(); + addMouseListener(new MouseListener() { + @Override + public void mouseClicked(MouseEvent e) { + highlight = !highlight; + if (highlight && !Utils.highlightTxt.exists()) { + try { + Utils.highlightTxt.createNewFile(); + } catch (IOException ioException) { + System.out.println(e); + } + } + if (!highlight && Utils.highlightTxt.exists()) { + Utils.highlightTxt.delete(); + } + } + + @Override + public void mousePressed(MouseEvent e) { + + } + + @Override + public void mouseReleased(MouseEvent e) { + + } + + @Override + public void mouseEntered(MouseEvent e) { + + } + + @Override + public void mouseExited(MouseEvent e) { + + } + }); + } + + public void setDonePercent(double donePercent) { + this.donePercent = donePercent; + } + + @Override + public void paintComponent(Graphics g) { + if (side == 0) { + this.side = Math.min(getWidth(), getHeight()); + } + super.paintComponent(g); + Graphics2D g2d = (Graphics2D) g; + g2d.setColor(FOREGROUND_COLOR); + g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, + RenderingHints.VALUE_ANTIALIAS_ON); +// if (highlight) { +// g2d.setColor(Color.BLUE); +// } + + double angleDouble = donePercent * 360; +// System.out.println("angleDouble=" + angleDouble); + //// + + double angleDouble2 = (angleDouble - (int)(angleDouble)) * 360; +// System.out.println("remainingAngle=" + angleDouble2); + + g2d.fillArc(0,0,side,side,90, -(int) angleDouble); + int side2 = ((int)(side/2)); + g2d.setColor(FOREGROUND_COLOR2); + g2d.fillArc(0+(side2/2),0+(side2/2),side2, side2,90, -(int) angleDouble2); + } + +} \ No newline at end of file diff --git a/src/main/java/rvc/timecalc/TimeCalcWindow.java b/src/main/java/rvc/timecalc/TimeCalcWindow.java index 952496e..6791203 100644 --- a/src/main/java/rvc/timecalc/TimeCalcWindow.java +++ b/src/main/java/rvc/timecalc/TimeCalcWindow.java @@ -117,10 +117,16 @@ public class TimeCalcWindow { .setBounds(10 + analogClock.getWidth() + 10, 10, 200, 200); window.add(progressSquare); + ProgressCircle progressCircle = new ProgressCircle(); + progressCircle + .setBounds(10 + progressSquare.getBounds().x + progressSquare.getWidth() + 10, 10, 80, 80); + window.add(progressCircle); + if(Utils.highlightTxt.exists()) { analogClock.setHighlight(true); progressSquare.setHighlight(true); + progressCircle.setHighlight(true); } StringBuilder sb = null; while (true) { @@ -176,6 +182,7 @@ public class TimeCalcWindow { double done = ((double) totalMillisecondsDone) / ((double) totalMilliseconds); progressSquare.setDonePercent(done); + progressCircle.setDonePercent(done); int totalSecondsRemains = (hourRemains * 60 * 60 + minuteRemains * 60 + secondsRemains); int totalMillisecondsRemains = totalSecondsRemains * 1000 + millisecondsRemains; @@ -271,7 +278,7 @@ public class TimeCalcWindow { toasterManager.setDisplayTime(10000); toasterManager.setToasterWidth(600); toasterManager.setToasterHeight(400); - toasterManager.setToasterColor(Color.YELLOW); + toasterManager.setToasterColor(new Color(255,255,102)); Base64.Decoder base64Decoder = Base64.getDecoder(); byte[] btDataFile = base64Decoder diff --git a/starttime.txt b/starttime.txt index 1d467db..e84ee8f 100644 --- a/starttime.txt +++ b/starttime.txt @@ -1 +1 @@ -6:39 \ No newline at end of file +7:00 \ No newline at end of file