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 94c9d6cb155705a2eb67eb7b6bcef255ef71517f..3884f72bea396f14b7eb5a369d0060f6c863a421 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) {