Skip to content

Commit 965d8c2

Browse files
authored
Merge pull request #115 from DavidDamke/bug/Project_colors_in_report_on_wrong_position
Bug/project colors in report on wrong position
2 parents 58d150b + 4c5b50e commit 965d8c2

File tree

4 files changed

+54
-29
lines changed

4 files changed

+54
-29
lines changed

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

Lines changed: 40 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -18,20 +18,14 @@
1818

1919
import java.io.IOException;
2020
import java.time.LocalDate;
21-
import java.util.Comparator;
22-
import java.util.List;
23-
import java.util.Optional;
24-
import java.util.SortedSet;
25-
import java.util.TreeSet;
21+
import java.util.*;
2622
import java.util.stream.Collectors;
2723

28-
import javafx.scene.control.skin.DatePickerSkin;
2924
import org.slf4j.Logger;
3025
import org.slf4j.LoggerFactory;
3126
import org.springframework.beans.factory.annotation.Autowired;
3227
import org.springframework.stereotype.Component;
3328

34-
3529
import de.doubleslash.keeptime.common.DateFormatter;
3630
import de.doubleslash.keeptime.common.Resources;
3731
import de.doubleslash.keeptime.common.Resources.RESOURCE;
@@ -51,21 +45,10 @@
5145
import javafx.fxml.FXMLLoader;
5246
import javafx.scene.Node;
5347
import javafx.scene.canvas.Canvas;
54-
import javafx.scene.control.Alert;
48+
import javafx.scene.control.*;
5549
import javafx.scene.control.Alert.AlertType;
56-
import javafx.scene.control.Button;
57-
import javafx.scene.control.ButtonType;
58-
import javafx.scene.control.ContentDisplay;
59-
import javafx.scene.control.DateCell;
60-
import javafx.scene.control.DatePicker;
61-
import javafx.scene.control.Dialog;
62-
import javafx.scene.control.Label;
63-
import javafx.scene.control.Tooltip;
64-
import javafx.scene.control.TreeItem;
65-
import javafx.scene.control.TreeTableCell;
66-
import javafx.scene.control.TreeTableColumn;
67-
import javafx.scene.control.TreeTableView;
6850
import javafx.scene.control.cell.TreeItemPropertyValueFactory;
51+
import javafx.scene.control.skin.DatePickerSkin;
6952
import javafx.scene.input.Clipboard;
7053
import javafx.scene.input.ClipboardContent;
7154
import javafx.scene.layout.AnchorPane;
@@ -152,10 +135,14 @@ protected void updateItem(final TableRow item, final boolean empty) {
152135
setText(null);
153136
} else {
154137
final String notes = item.getNotes();
155-
final Label label = new Label(notes.isEmpty() ? EMPTY_NOTE : notes);
156-
label.setUnderline(item.isUnderlined());
157-
label.setTooltip(new Tooltip(notes));
158-
this.setGraphic(label);
138+
final String text = notes.isEmpty() ? EMPTY_NOTE : notes;
139+
this.setText(text);
140+
if (item.getProjectColor() != null) {
141+
final Circle circle = new Circle(6, item.getProjectColor());
142+
this.setGraphic(circle);
143+
} else {
144+
this.setGraphic(null);
145+
}
159146
}
160147
}
161148
};
@@ -175,8 +162,34 @@ protected void updateItem(final TableRow item, final boolean empty) {
175162
timeRangeColumn.setReorderable(false);
176163
this.workTableTreeView.getColumns().add(timeRangeColumn);
177164

178-
final TreeTableColumn<TableRow, String> timeSumColumn = new TreeTableColumn<>("Duration");
179-
timeSumColumn.setCellValueFactory(new TreeItemPropertyValueFactory<TableRow, String>("timeSum"));
165+
final TreeTableColumn<TableRow, TableRow> timeSumColumn = new TreeTableColumn<>("Duration");
166+
timeSumColumn.setCellFactory(new Callback<>() {
167+
@Override
168+
public TreeTableCell<TableRow, TableRow> call(
169+
TreeTableColumn<TableRow, TableRow> tableRowStringTreeTableColumn) {
170+
171+
return new TreeTableCell<>() {
172+
173+
@Override
174+
protected void updateItem(TableRow workItem, boolean empty) {
175+
super.updateItem(workItem, empty);
176+
177+
if (workItem == null || empty) {
178+
this.setGraphic(null);
179+
this.setText(null);
180+
} else {
181+
Label workLabel = new Label(workItem.getTimeSum());
182+
workLabel.setUnderline(workItem.isUnderlined());
183+
this.setGraphic(workLabel);
184+
this.setText(null);
185+
}
186+
}
187+
};
188+
}
189+
});
190+
timeSumColumn.setCellValueFactory(
191+
(final TreeTableColumn.CellDataFeatures<TableRow, TableRow> entry) -> new ReadOnlyObjectWrapper<>(
192+
entry.getValue().getValue()));
180193
timeSumColumn.setMinWidth(60);
181194
timeSumColumn.setReorderable(false);
182195
this.workTableTreeView.getColumns().add(timeSumColumn);
@@ -228,10 +241,8 @@ private void updateReport(final LocalDate dateToShow) {
228241
final HBox projectButtonBox = new HBox();
229242
projectButtonBox.getChildren().add(createCopyProjectButton(onlyCurrentProjectWork));
230243

231-
final Circle circle = new Circle(6, project.getColor());
232-
233244
final TreeItem<TableRow> projectRow = new TreeItem<>(
234-
new ProjectTableRow(project, projectWorkSeconds, projectButtonBox), circle);
245+
new ProjectTableRow(project, projectWorkSeconds, projectButtonBox));
235246

236247
for (final Work w : onlyCurrentProjectWork) {
237248
final HBox workButtonBox = new HBox(5.0);

src/main/java/de/doubleslash/keeptime/view/worktable/ProjectTableRow.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import de.doubleslash.keeptime.common.DateFormatter;
44
import de.doubleslash.keeptime.model.Project;
55
import javafx.scene.layout.HBox;
6+
import javafx.scene.paint.Color;
67

78
public class ProjectTableRow implements TableRow {
89

@@ -43,4 +44,9 @@ public boolean isUnderlined() {
4344
return project.isWork();
4445
}
4546

47+
@Override
48+
public Color getProjectColor() {
49+
return project.getColor();
50+
}
51+
4652
}

src/main/java/de/doubleslash/keeptime/view/worktable/TableRow.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package de.doubleslash.keeptime.view.worktable;
22

33
import javafx.scene.layout.HBox;
4+
import javafx.scene.paint.Color;
45

56
public interface TableRow {
67

@@ -14,4 +15,5 @@ public interface TableRow {
1415

1516
public boolean isUnderlined();
1617

18+
public Color getProjectColor();
1719
}

src/main/java/de/doubleslash/keeptime/view/worktable/WorkTableRow.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import de.doubleslash.keeptime.common.DateFormatter;
55
import de.doubleslash.keeptime.model.Work;
66
import javafx.scene.layout.HBox;
7+
import javafx.scene.paint.Color;
78

89
public class WorkTableRow implements TableRow {
910
private final Work work;
@@ -41,4 +42,9 @@ public boolean isUnderlined() {
4142
return false;
4243
}
4344

45+
@Override
46+
public Color getProjectColor() {
47+
return null;
48+
}
49+
4450
}

0 commit comments

Comments
 (0)