From 3c438727d0c42dc855b0c8ff3add1a115af483f8 Mon Sep 17 00:00:00 2001 From: tobias <tobias.ullerich@icloud.com> Date: Wed, 21 Sep 2016 14:25:46 +0200 Subject: [PATCH] Changed Color Picker for Colormode --- .../desktop/DesktopColorPickerView.java | 43 ++++++++++++------- .../DesktopMenuToolbarViewController.java | 25 +++++------ 2 files changed, 40 insertions(+), 28 deletions(-) diff --git a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopColorPickerView.java b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopColorPickerView.java index dd307d33..0d4808fd 100644 --- a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopColorPickerView.java +++ b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopColorPickerView.java @@ -2,56 +2,62 @@ package de.tobias.playpad.layout.desktop; import java.util.function.Consumer; +import org.controlsfx.control.PopOver; +import org.controlsfx.control.PopOver.ArrowLocation; + import de.tobias.playpad.DisplayableColor; import de.tobias.playpad.PlayPadMain; import de.tobias.playpad.design.CartDesign; import de.tobias.playpad.design.ColorModeHandler; import de.tobias.playpad.pad.Pad; import de.tobias.playpad.pad.PadSettings; -import de.tobias.playpad.settings.Profile; import javafx.event.EventHandler; import javafx.scene.Node; -import javafx.scene.Scene; +import javafx.scene.input.MouseButton; import javafx.scene.input.MouseEvent; import javafx.scene.layout.StackPane; import javafx.scene.layout.VBox; -import javafx.stage.Stage; public class DesktopColorPickerView implements Consumer<DisplayableColor>, EventHandler<MouseEvent> { - private Stage stage; - private ColorModeHandler colorModeHandler; private DisplayableColor selectedColor; + private PopOver colorChooser; + public DesktopColorPickerView(ColorModeHandler colorModeHandler) { this.colorModeHandler = colorModeHandler; Node node = colorModeHandler.getColorInterface(this); VBox root = new VBox(node); - stage = new Stage(); - stage.setScene(new Scene(root)); - // Init Stage - Profile.currentProfile().currentLayout().applyCss(stage); - stage.setResizable(false); + colorChooser = new PopOver(); + colorChooser.setContentNode(root); + colorChooser.setDetachable(false); + colorChooser.setOnHiding(e -> colorChooser = null); + colorChooser.setCornerRadius(5); + colorChooser.setArrowLocation(ArrowLocation.LEFT_CENTER); } - public void show() { - stage.show(); + public void show(Node anchorNode) { + colorChooser.show(anchorNode); } public void hide() { - stage.close(); + if (colorChooser != null) { + colorChooser.hide(); + } } // Handle Selected Color from View. @Override public void accept(DisplayableColor t) { selectedColor = t; + colorChooser.hide(); } + // Listener, wenn auf ein Pad Geclicked wurde, zum färben @Override public void handle(MouseEvent event) { // TODO Rewrite this @@ -60,9 +66,14 @@ public class DesktopColorPickerView implements Consumer<DisplayableColor>, Event if (view.getUserData() instanceof Pad) { Pad pad = (Pad) view.getUserData(); PadSettings padSettings = pad.getPadSettings(); - padSettings.setCustomLayout(true); - CartDesign design = padSettings.getDesign(); - colorModeHandler.setColor(design, selectedColor); + + if (event.getButton() == MouseButton.PRIMARY) { + padSettings.setCustomLayout(true); + CartDesign design = padSettings.getDesign(); + colorModeHandler.setColor(design, selectedColor); + } else if (event.getButton() == MouseButton.SECONDARY) { + padSettings.setCustomLayout(false); + } PlayPadMain.getProgramInstance().getMainViewController().loadUserCss(); } } diff --git a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java index d4f2ddac..f1b44216 100644 --- a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java +++ b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java @@ -158,7 +158,6 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro helpMenu.getItems().add(new HelpMenuItem(helpMenu)); // Edit Mode Buttons - // TODO MenuItems for Buttons -> KeyCodes editButtons = new SegmentedButton(); playButton = new ToggleButton("", new FontIcon(FontAwesomeType.PLAY)); playButton.setFocusTraversable(false); @@ -166,6 +165,18 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro dragButton.setFocusTraversable(false); colorButton = new ToggleButton("", new FontIcon(FontAwesomeType.PENCIL)); colorButton.setFocusTraversable(false); + // Zeigt die Farbauswahl + colorButton.setOnAction(e -> + { + GlobalDesign design = Profile.currentProfile().currentLayout(); + if (design instanceof ColorModeHandler) { + colorPickerView = new DesktopColorPickerView((ColorModeHandler) design); + colorPickerView.show(colorButton); + + // Add Listener for Pads + mainViewController.addListenerForPads(colorPickerView, MouseEvent.MOUSE_CLICKED); + } + }); editButtons.getButtons().addAll(playButton, dragButton, colorButton); editButtons.getToggleGroup().selectedToggleProperty().addListener((a, b, c) -> { @@ -222,16 +233,6 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro iconHbox.getChildren().add(0, addPageButton); } else if (newValue == DesktopEditMode.COLOR) { colorButton.setSelected(true); - - GlobalDesign design = Profile.currentProfile().currentLayout(); - if (design instanceof ColorModeHandler) { - colorPickerView = new DesktopColorPickerView((ColorModeHandler) design); - - // Add Listener for Pads - mainViewController.addListenerForPads(colorPickerView, MouseEvent.MOUSE_CLICKED); - - colorPickerView.show(); - } } // Update Page Button (for Edit/Display) @@ -402,7 +403,7 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro alwaysOnTopItem.setDisable(true); searchPadMenuItem.setDisable(true); - connect.setEditMode(DesktopEditMode.PLAY); // TODO -> Button Mit wecheln + connect.setEditMode(DesktopEditMode.PLAY); } @Override -- GitLab