4343import de .doubleslash .keeptime .view .worktable .ProjectTableRow ;
4444import de .doubleslash .keeptime .view .worktable .TableRow ;
4545import de .doubleslash .keeptime .view .worktable .WorkTableRow ;
46+ import de .jensd .fx .glyphs .fontawesome .FontAwesomeIcon ;
47+ import de .jensd .fx .glyphs .fontawesome .FontAwesomeIconView ;
4648import javafx .beans .property .ReadOnlyObjectWrapper ;
4749import javafx .event .ActionEvent ;
4850import javafx .event .EventHandler ;
4951import javafx .fxml .FXML ;
5052import javafx .fxml .FXMLLoader ;
5153import javafx .scene .Node ;
5254import javafx .scene .canvas .Canvas ;
55+ import javafx .scene .control .Alert ;
56+ import javafx .scene .control .Alert .AlertType ;
5357import javafx .scene .control .Button ;
5458import javafx .scene .control .ButtonType ;
5559import javafx .scene .control .DateCell ;
@@ -222,8 +226,9 @@ private void updateReport(final LocalDate dateToShow) {
222226 new ProjectTableRow (project , projectWorkSeconds , projectButtonBox ), circle );
223227
224228 for (final Work w : onlyCurrentProjectWork ) {
225- final HBox workButtonBox = new HBox ();
229+ final HBox workButtonBox = new HBox (5.0 );
226230 workButtonBox .getChildren ().add (createEditWorkButton (w ));
231+ workButtonBox .getChildren ().add (createDeleteWorkButton (w ));
227232 final TreeItem <TableRow > workRow = new TreeItem <>(new WorkTableRow (w , workButtonBox ));
228233 projectRow .getChildren ().add (workRow );
229234 }
@@ -268,9 +273,31 @@ public void updateItem(final LocalDate item, final boolean empty) {
268273
269274 }
270275
276+ private Button createDeleteWorkButton (final Work w ) {
277+ final Button deleteButton = new Button ("" , new FontAwesomeIconView (FontAwesomeIcon .TRASH ));
278+ deleteButton .setOnAction (e -> {
279+ LOG .info ("Delete work clicked." );
280+ final Alert alert = new Alert (AlertType .CONFIRMATION );
281+ alert .setTitle ("Delete Work" );
282+ alert .setHeaderText ("Delete work item" );
283+ alert .setContentText (w .toString ());
284+ alert .initOwner (stage );
285+
286+ final Optional <ButtonType > result = alert .showAndWait ();
287+
288+ result .ifPresent (buType -> {
289+ if (buType .equals (ButtonType .OK )) {
290+ controller .deleteWork (w );
291+ this .update ();
292+ }
293+ });
294+ });
295+ return deleteButton ;
296+ }
297+
271298 private Button createEditWorkButton (final Work work ) {
272- final Button bProjectReport = new Button ("edit" );
273- bProjectReport .setOnAction (e -> {
299+ final Button editButton = new Button ("" , new FontAwesomeIconView ( FontAwesomeIcon . PENCIL ) );
300+ editButton .setOnAction (e -> {
274301 LOG .info ("Edit work clicked." );
275302 final Dialog <Work > dialog = setupEditWorkDialog (work );
276303
@@ -282,7 +309,7 @@ private Button createEditWorkButton(final Work work) {
282309 this .update ();
283310 });
284311 });
285- return bProjectReport ;
312+ return editButton ;
286313 }
287314
288315 private Dialog <Work > setupEditWorkDialog (final Work work ) {
@@ -321,7 +348,7 @@ private GridPane setUpEditWorkGridPane(final Work work, final Dialog<Work> dialo
321348 }
322349
323350 private Button createProjectReportButton (final List <Work > projectWork ) {
324- final Button bProjectReport = new Button ("Copy to clipboard" );
351+ final Button bProjectReport = new Button ("" , new FontAwesomeIconView ( FontAwesomeIcon . CLIPBOARD ) );
325352 final EventHandler <ActionEvent > eventListener = actionEvent -> {
326353 LOG .debug ("Copy to Clipboard clicked." );
327354 final ProjectReport pr = new ProjectReport (projectWork .size ());
0 commit comments