From 3f8f4984679e3999be9fde97ac887adbc67a3ee5 Mon Sep 17 00:00:00 2001 From: tobias <thinkdifferent055@gmail.com> Date: Fri, 27 Nov 2020 19:00:47 +0100 Subject: [PATCH] Refactor DesktopPageEditButtonView --- .../desktop/DesktopPageEditButtonView.java | 176 ++++++++---------- 1 file changed, 81 insertions(+), 95 deletions(-) diff --git a/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/DesktopPageEditButtonView.java b/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/DesktopPageEditButtonView.java index 94c9d6cb..3884f72b 100644 --- a/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/DesktopPageEditButtonView.java +++ b/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/DesktopPageEditButtonView.java @@ -2,6 +2,7 @@ package de.tobias.playpad.layout.desktop; import de.thecodelabs.utils.ui.icon.FontAwesomeType; import de.thecodelabs.utils.ui.icon.FontIcon; +import de.thecodelabs.utils.ui.icon.FontIconType; import de.thecodelabs.utils.util.Localization; import de.tobias.playpad.PlayPadMain; import de.tobias.playpad.PlayPadPlugin; @@ -20,17 +21,21 @@ import javafx.stage.Stage; import java.util.Optional; -public class DesktopPageEditButtonView extends HBox implements EventHandler<ActionEvent> { +public class DesktopPageEditButtonView extends HBox { - private Page page; - private Button leftMoveButton; - private Button rightMoveButton; - private Button editTextButton; - private Button cloneButton; - private Button deleteButton; + private static class EditButton extends Button { + private EditButton(FontIconType icon, EventHandler<ActionEvent> onAction, String tooltip) { + super("", new FontIcon(icon)); + setOnAction(onAction); + setTooltip(new Tooltip(tooltip)); + setFocusTraversable(false); + } + } + + private final Page page; - private transient MenuToolbarViewController controller; - private transient IMainViewController mainViewController; + private final transient MenuToolbarViewController controller; + private final transient IMainViewController mainViewController; DesktopPageEditButtonView(MenuToolbarViewController controller, IMainViewController mainViewController, Page page) { this.page = page; @@ -38,112 +43,93 @@ public class DesktopPageEditButtonView extends HBox implements EventHandler<Acti this.controller = controller; this.mainViewController = mainViewController; - leftMoveButton = new Button("", new FontIcon(FontAwesomeType.ARROW_LEFT)); - leftMoveButton.setOnAction(this); - leftMoveButton.setTooltip(new Tooltip(Localization.getString(Strings.TOOLTIP_PAGE_LEFT_MOVE))); - leftMoveButton.setFocusTraversable(false); + Button leftMoveButton = new EditButton(FontAwesomeType.ARROW_LEFT, this::onLeftButton, Localization.getString(Strings.TOOLTIP_PAGE_LEFT_MOVE)); + Button rightMoveButton = new EditButton(FontAwesomeType.ARROW_RIGHT, this::onRightButton, Localization.getString(Strings.TOOLTIP_PAGE_RIGHT_MOVE)); + Button editTextButton = new EditButton(FontAwesomeType.EDIT, this::onRenameButton, Localization.getString(Strings.TOOLTIP_PAGE_RENAME)); + Button cloneButton = new EditButton(FontAwesomeType.COPY, this::onCloneButton, Localization.getString(Strings.TOOLTIP_PAGE_CLONE)); + Button deleteButton = new EditButton(FontAwesomeType.TRASH, this::onDeleteButton, Localization.getString(Strings.TOOLTIP_PAGE_DELETE)); - rightMoveButton = new Button("", new FontIcon(FontAwesomeType.ARROW_RIGHT)); - rightMoveButton.setOnAction(this); - rightMoveButton.setTooltip(new Tooltip(Localization.getString(Strings.TOOLTIP_PAGE_RIGHT_MOVE))); - rightMoveButton.setFocusTraversable(false); + getChildren().addAll(leftMoveButton, rightMoveButton, editTextButton, cloneButton, deleteButton); + setSpacing(7); + } - editTextButton = new Button("", new FontIcon(FontAwesomeType.EDIT)); - editTextButton.setOnAction(this); - editTextButton.setTooltip(new Tooltip(Localization.getString(Strings.TOOLTIP_PAGE_RENAME))); - editTextButton.setFocusTraversable(false); + private void onLeftButton(ActionEvent event) { + final Project project = page.getProject(); + if (page.getPosition() > 0) { + final Page leftPage = project.getPage(page.getPosition() - 1); - cloneButton = new Button("", new FontIcon(FontAwesomeType.COPY)); - cloneButton.setOnAction(this); - cloneButton.setTooltip(new Tooltip(Localization.getString(Strings.TOOLTIP_PAGE_CLONE))); - cloneButton.setFocusTraversable(false); + final int leftIndex = leftPage.getPosition(); + final int rightIndex = page.getPosition(); - deleteButton = new Button("", new FontIcon(FontAwesomeType.TRASH)); - deleteButton.setOnAction(this); - deleteButton.setTooltip(new Tooltip(Localization.getString(Strings.TOOLTIP_PAGE_DELETE))); - deleteButton.setFocusTraversable(false); + project.setPage(rightIndex, leftPage); + project.setPage(leftIndex, page); - getChildren().addAll(leftMoveButton, rightMoveButton, editTextButton, cloneButton, deleteButton); - setSpacing(7); + if (mainViewController.getMenuToolbarController() != null) + mainViewController.getMenuToolbarController().initPageButtons(); + mainViewController.showPage(leftIndex); + } + event.consume(); } - @Override - public void handle(ActionEvent event) { - if (event.getSource() == leftMoveButton) { - Project project = page.getProject(); - if (page.getPosition() > 0) { - Page leftPage = project.getPage(page.getPosition() - 1); + private void onRightButton(ActionEvent event) { + final Project project = page.getProject(); + if (page.getPosition() < project.getPages().size()) { + final Page rightPage = project.getPage(page.getPosition() + 1); - int leftIndex = leftPage.getPosition(); - int rightIndex = page.getPosition(); + final int rightIndex = rightPage.getPosition(); + final int leftIndex = page.getPosition(); - project.setPage(rightIndex, leftPage); - project.setPage(leftIndex, page); + project.setPage(leftIndex, rightPage); + project.setPage(rightIndex, page); - IMainViewController controller = PlayPadPlugin.getInstance().getMainViewController(); - if (controller.getMenuToolbarController() != null) - controller.getMenuToolbarController().initPageButtons(); - controller.showPage(leftIndex); - } - event.consume(); - } else if (event.getSource() == rightMoveButton) { - Project project = page.getProject(); - if (page.getPosition() < project.getPages().size()) { - Page rightPage = project.getPage(page.getPosition() + 1); + if (mainViewController.getMenuToolbarController() != null) + mainViewController.getMenuToolbarController().initPageButtons(); + mainViewController.showPage(rightIndex); + } + event.consume(); + } - int rightIndex = rightPage.getPosition(); - int leftIndex = page.getPosition(); + private void onRenameButton(ActionEvent event) { + showPageNameDialog(page); + } - project.setPage(leftIndex, rightPage); - project.setPage(rightIndex, page); + private void onCloneButton(ActionEvent event) { + final Page clone = page.copy(); - IMainViewController controller = PlayPadPlugin.getInstance().getMainViewController(); - if (controller.getMenuToolbarController() != null) - controller.getMenuToolbarController().initPageButtons(); - controller.showPage(rightIndex); - } - event.consume(); - } else if (event.getSource() == editTextButton) { - showPageNameDialog(page); + // Show Rename dialog for cloned page + boolean success = showPageNameDialog(clone); - event.consume(); - } else if (event.getSource() == cloneButton) { - Page clone = page.copy(); + if (!success) { + return; + } - // Show Rename dialog for cloned page - boolean success = showPageNameDialog(clone); + Project project = page.getProject(); + project.addPage(clone); - if (!success) { - return; - } + controller.initPageButtons(); + mainViewController.showPage(clone); + } - Project project = page.getProject(); - project.addPage(clone); + private void onDeleteButton(ActionEvent event) { + Alert alert = new Alert(AlertType.CONFIRMATION); + + alert.setHeaderText(Localization.getString(Strings.UI_DIALOG_PAGE_DELETE_HEADER)); + alert.setContentText(Localization.getString(Strings.UI_DIALOG_PAGE_DELETE_CONTENT)); + alert.initOwner(controller.getContainingWindow()); + alert.initModality(Modality.WINDOW_MODAL); + Stage stage = (Stage) alert.getDialogPane().getScene().getWindow(); + stage.getIcons().add(PlayPadPlugin.getInstance().getIcon()); + Optional<ButtonType> result = alert.showAndWait(); + result.filter(r -> r == ButtonType.OK).ifPresent(r -> + { + Project project = page.getProject(); + project.removePage(page); + PlayPadMain.getProgramInstance().getMainViewController().showPage(0); controller.initPageButtons(); - mainViewController.showPage(clone); + controller.highlightPageButton(0); // Show first page event.consume(); - } else if (event.getSource() == deleteButton) { - Alert alert = new Alert(AlertType.CONFIRMATION); - - alert.setHeaderText(Localization.getString(Strings.UI_DIALOG_PAGE_DELETE_HEADER)); - alert.setContentText(Localization.getString(Strings.UI_DIALOG_PAGE_DELETE_CONTENT)); - alert.initOwner(controller.getContainingWindow()); - alert.initModality(Modality.WINDOW_MODAL); - Stage stage = (Stage) alert.getDialogPane().getScene().getWindow(); - stage.getIcons().add(PlayPadPlugin.getInstance().getIcon()); - - Optional<ButtonType> result = alert.showAndWait(); - result.filter(r -> r == ButtonType.OK).ifPresent(r -> - { - Project project = page.getProject(); - project.removePage(page); - PlayPadMain.getProgramInstance().getMainViewController().showPage(0); - controller.initPageButtons(); - controller.highlightPageButton(0); // Show first page - event.consume(); - }); - } + }); } private boolean showPageNameDialog(Page page) { -- GitLab