Skip to content

Commit 95f155d

Browse files
author
Martin Plieske
committed
#10 outsourced ColorTimeLine
1 parent b6e3d4c commit 95f155d

File tree

2 files changed

+45
-20
lines changed

2 files changed

+45
-20
lines changed
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package de.doubleslash.keeptime.common;
2+
3+
import java.time.Duration;
4+
5+
import de.doubleslash.keeptime.controller.Controller;
6+
import de.doubleslash.keeptime.model.Model;
7+
import de.doubleslash.keeptime.model.Work;
8+
import javafx.scene.canvas.Canvas;
9+
import javafx.scene.canvas.GraphicsContext;
10+
import javafx.scene.paint.Color;
11+
12+
public class ColorTimeLine {
13+
14+
private final Canvas canvas;
15+
private final Model model;
16+
private final Controller controller;
17+
18+
public ColorTimeLine(final Canvas canvas, final Model model, final Controller controller) {
19+
this.canvas = canvas;
20+
this.model = model;
21+
this.controller = controller;
22+
}
23+
24+
public void update() {
25+
final GraphicsContext gc = canvas.getGraphicsContext2D();
26+
27+
gc.setFill(new Color(.3, .3, .3, .3));
28+
gc.clearRect(0, 0, canvas.getWidth(), canvas.getHeight());
29+
gc.fillRect(0, 0, canvas.getWidth(), canvas.getHeight());
30+
31+
double currentX = 0;
32+
final long maxSeconds = controller.calcTodaysSeconds();
33+
for (final Work w : model.getPastWorkItems()) {
34+
final long workedSeconds = Duration.between(w.getStartTime(), w.getEndTime()).getSeconds();
35+
final double fillX = (float) workedSeconds / maxSeconds * canvas.getWidth();
36+
gc.setFill(w.getProject().getColor());
37+
gc.fillRect(currentX, 0, fillX, canvas.getHeight());
38+
currentX += fillX;
39+
}
40+
}
41+
42+
}

src/main/java/de/doubleslash/keeptime/view/ViewController.java

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,14 @@
1616
import org.springframework.stereotype.Component;
1717

1818
import de.doubleslash.keeptime.common.ColorHelper;
19+
import de.doubleslash.keeptime.common.ColorTimeLine;
1920
import de.doubleslash.keeptime.common.DateFormatter;
2021
import de.doubleslash.keeptime.common.Resources;
2122
import de.doubleslash.keeptime.common.Resources.RESOURCE;
2223
import de.doubleslash.keeptime.controller.Controller;
2324
import de.doubleslash.keeptime.exceptions.FXMLLoaderException;
2425
import de.doubleslash.keeptime.model.Model;
2526
import de.doubleslash.keeptime.model.Project;
26-
import de.doubleslash.keeptime.model.Work;
2727
import de.doubleslash.keeptime.view.time.Interval;
2828
import javafx.application.Platform;
2929
import javafx.beans.binding.Bindings;
@@ -316,7 +316,8 @@ private void initialize() {
316316
label.setText(DateFormatter.secondsToHHMMSS(seconds));
317317
}
318318

319-
updateProjectColorTimeline();
319+
final ColorTimeLine mainColorTimeLine = new ColorTimeLine(canvas, model, controller);
320+
mainColorTimeLine.update();
320321
updateTaskbarIcon(currentWorkSeconds);
321322
});
322323

@@ -754,24 +755,6 @@ private void realignProjectList() {
754755
}
755756
}
756757

757-
private void updateProjectColorTimeline() {
758-
final GraphicsContext gc = canvas.getGraphicsContext2D();
759-
760-
gc.setFill(new Color(.3, .3, .3, .3));
761-
gc.clearRect(0, 0, canvas.getWidth(), canvas.getHeight());
762-
gc.fillRect(0, 0, canvas.getWidth(), canvas.getHeight());
763-
764-
double currentX = 0;
765-
final long maxSeconds = controller.calcTodaysSeconds();
766-
for (final Work w : model.getPastWorkItems()) {
767-
final long workedSeconds = Duration.between(w.getStartTime(), w.getEndTime()).getSeconds();
768-
final double fillX = (float) workedSeconds / maxSeconds * canvas.getWidth();
769-
gc.setFill(w.getProject().getColor());
770-
gc.fillRect(currentX, 0, fillX, canvas.getHeight());
771-
currentX += fillX;
772-
}
773-
}
774-
775758
private void updateTaskbarIcon(final long currentWorkSeconds) {
776759
final GraphicsContext gcIcon = taskbarCanvas.getGraphicsContext2D();
777760

0 commit comments

Comments
 (0)