Skip to content

Commit 661aa78

Browse files
author
Martin Plieske
committed
refactored class, so the manageProjectController field is not needed
1 parent 7ec4398 commit 661aa78

File tree

1 file changed

+27
-31
lines changed

1 file changed

+27
-31
lines changed

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

Lines changed: 27 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
import de.doubleslash.keeptime.exceptions.FXMLLoaderException;
1919
import de.doubleslash.keeptime.model.Model;
2020
import de.doubleslash.keeptime.model.Project;
21-
import javafx.collections.ObservableList;
2221
import javafx.collections.transformation.FilteredList;
2322
import javafx.fxml.FXMLLoader;
2423
import javafx.scene.Node;
@@ -54,7 +53,6 @@ public class ProjectsListViewController {
5453
private final FilteredList<Project> filteredData;
5554

5655
private final boolean hideable;
57-
private ManageProjectController manageProjectController;
5856

5957
public ProjectsListViewController(final Model model, final Controller controller, final Stage mainStage,
6058
final ListView<Project> availableProjectsListView, final TextField searchTextField, final boolean hideable) {
@@ -255,24 +253,14 @@ private Node createListEntryForProject(final Project p) {
255253
editMenuItem.setOnAction(e -> {
256254
// TODO refactor to use "add project" controls
257255
LOG.info("Edit project");
258-
final Dialog<ButtonType> dialog = setUpDialogButtonType("Edit project", "Edit project '" + p.getName() + "'");
259-
final GridPane grid = setUpEditProjectGridPane(p);
260-
261-
// TODO disable OK button if no name is set
262-
dialog.getDialogPane().setContent(grid);
263-
264-
dialog.setResultConverter(dialogButton -> dialogButton);
256+
final Dialog<Project> dialog = setupEditProjectDialog("Edit project", "Edit project '" + p.getName() + "'", p);
265257

266258
mainStage.setAlwaysOnTop(false);
267-
final Optional<ButtonType> result = dialog.showAndWait();
259+
final Optional<Project> result = dialog.showAndWait();
268260
mainStage.setAlwaysOnTop(true);
269261

270-
result.ifPresent(buttonType -> {
271-
if (buttonType != ButtonType.OK) {
272-
return;
273-
}
274-
final ObservableList<Node> nodes = grid.getChildren();
275-
editProject(p, manageProjectController);
262+
result.ifPresent(editedProject -> {
263+
controller.editProject(p, editedProject);
276264

277265
projectNameLabel.setText(p.getName());
278266
projectNameLabel.setTextFill(new Color(p.getColor().getRed() * dimFactor,
@@ -303,39 +291,47 @@ private void updateTooltip(final Project p) {
303291
projectNameLabel.getTooltip().setText(tooltipText);
304292
}
305293

306-
private Dialog<ButtonType> setUpDialogButtonType(final String title, final String headerText) {
307-
final Dialog<ButtonType> dialog = new Dialog<>();
294+
private Dialog<Project> setupEditProjectDialog(final String title, final String headerText, final Project project) {
295+
final Dialog<Project> dialog = new Dialog<>();
308296
dialog.setTitle(title);
309297
dialog.setHeaderText(headerText);
310298
dialog.getDialogPane().getButtonTypes().addAll(ButtonType.OK, ButtonType.CANCEL);
299+
300+
final GridPane grid = setUpEditProjectGridPane(project, dialog);
301+
302+
// TODO disable OK button if no name is set
303+
dialog.getDialogPane().setContent(grid);
304+
311305
return dialog;
312306
}
313307

314-
private GridPane setUpEditProjectGridPane(final Project p) {
308+
private GridPane setUpEditProjectGridPane(final Project p, final Dialog<Project> dialog) {
315309
GridPane grid;
316310
final FXMLLoader loader = new FXMLLoader(Resources.getResource(RESOURCE.FXML_MANAGE_PROJECT));
317311
try {
318312
grid = loader.load();
319313
} catch (final IOException e) {
320314
throw new FXMLLoaderException("Error while loading '" + Resources.RESOURCE.FXML_MANAGE_PROJECT + "'.", e);
321315
}
322-
manageProjectController = loader.getController();
316+
final ManageProjectController manageProjectController = loader.getController();
323317
manageProjectController.setModel(model);
324318
manageProjectController.secondInitialize();
325319
manageProjectController.setValues(p);
326320

327-
return grid;
328-
}
329-
330-
private void editProject(final Project p, final ManageProjectController manageProjectController) {
331-
final String projectName = manageProjectController.getProjectName();
332-
final String projectDescription = manageProjectController.getProjectDescription();
333-
final Color projectColor = manageProjectController.getProjectColor();
334-
final boolean isWork = manageProjectController.isWork();
335-
final int index = manageProjectController.getIndex();
321+
dialog.setResultConverter(dialogButton -> {
322+
if (dialogButton == ButtonType.OK) {
323+
final String projectName = manageProjectController.getProjectName();
324+
final String projectDescription = manageProjectController.getProjectDescription();
325+
final Color projectColor = manageProjectController.getProjectColor();
326+
final boolean isWork = manageProjectController.isWork();
327+
final int index = manageProjectController.getIndex();
328+
return new Project(projectName, projectDescription, projectColor, isWork, index);
329+
}
330+
// TODO: Do you really want to return null?
331+
return null;
332+
});
336333

337-
final Project newValues = new Project(projectName, projectDescription, projectColor, isWork, index);
338-
controller.editProject(p, newValues);
334+
return grid;
339335
}
340336

341337
private ListCell<Project> returnListCellOfProject() {

0 commit comments

Comments
 (0)