From 8f7263d4fc375583b5bf8ef293a9431677944d80 Mon Sep 17 00:00:00 2001 From: tobias <tobias.ullerich@icloud.com> Date: Thu, 22 Sep 2016 21:48:06 +0200 Subject: [PATCH] Page Mode (DesktopEditMode) Small Bug fixes --- .../tobias/playpad/assets/lang/_de.properties | 12 +++++-- .../playpad/assets/lang/ui_de.properties | 3 ++ .../assets/view/main/desktop/header.fxml | 34 +++++++++++-------- PlayWall/src/de/tobias/playpad/Strings.java | 6 ++++ .../src/de/tobias/playpad/components/Keys.xml | 11 ++++-- .../desktop/DesktopColorPickerView.java | 2 +- .../layout/desktop/DesktopEditMode.java | 2 +- .../DesktopMenuToolbarViewController.java | 24 ++++++++++--- .../desktop/pad/DesktopPadDragListener.java | 9 ++--- .../main/MainViewController.java | 7 ++++ .../de/tobias/playpad/project/Project.java | 4 +++ .../tobias/playpad/project/page/PadIndex.java | 2 +- .../de/tobias/playpad/settings/Profile.java | 1 + .../playpad/settings/ProfileReference.java | 1 + .../main/IMainViewController.java | 2 ++ 15 files changed, 88 insertions(+), 32 deletions(-) diff --git a/PlayWall/assets/de/tobias/playpad/assets/lang/_de.properties b/PlayWall/assets/de/tobias/playpad/assets/lang/_de.properties index a27f28f1..7cda7194 100644 --- a/PlayWall/assets/de/tobias/playpad/assets/lang/_de.properties +++ b/PlayWall/assets/de/tobias/playpad/assets/lang/_de.properties @@ -224,8 +224,8 @@ UI.Dialog.Save.Header=Speichern UI.Dialog.Save.Content=M�chten Sie das Projekt speichern? UI.Dialog.Save.Title=Speichern UI.Dialog.Save.Checkbox=Immer automatisch speichern und diesen Dialog nicht mehr anzeigen. -UI.Dialog.Save.Button.Yes=Speichern -UI.Dialog.Save.Button.No=Nicht Speichern +UI.Dialog.Save.Button.Yes=Ja +UI.Dialog.Save.Button.No=Nein UI.Dialog.Save.Button.Cancel=Abbrechen # Update Channel - BaseName @@ -275,4 +275,10 @@ UI.Dialog.Page.Delete.Content=M # UI - Dialog - Name - Delete UI.Dialog.Page.Name.Header=Seite umbenennen -UI.Dialog.Page.Name.Content=Geben Sie einen neuen Namen f�r die Seite ein. \n(Wenn die das Feld leer lassen, wird ein Standardname verwendet). \ No newline at end of file +UI.Dialog.Page.Name.Content=Geben Sie einen neuen Namen f�r die Seite ein. \n(Wenn die das Feld leer lassen, wird ein Standardname verwendet). + +# Tooltips +Tooltip.PlayButton=Wiedergabemodus +Tooltip.DragButton=Drag'n'Drop Modus +Tooltip.PageButton=Seiten bearbeiten +Tooltip.ColorButton=F�rbenmodus \ No newline at end of file diff --git a/PlayWall/assets/de/tobias/playpad/assets/lang/ui_de.properties b/PlayWall/assets/de/tobias/playpad/assets/lang/ui_de.properties index 43d85ecf..f3b3b638 100644 --- a/PlayWall/assets/de/tobias/playpad/assets/lang/ui_de.properties +++ b/PlayWall/assets/de/tobias/playpad/assets/lang/ui_de.properties @@ -15,9 +15,12 @@ main.menuitem.recentFiles=Zuletzt verwendete Projekte main.menuitem.profile=Profile verwalten... main.menuitem.print=Drucken... main.menuitem.onTop=Fenster im Vordergrund +#Begin TODO +main.menu.editmode=Modus main.menuitem.play=Wiedergabe main.menuitem.drag=Drag and Drop main.menuitem.color=F�rben +#Ende TODO main.menuitem.errors=Fehlerbericht anzeigen... main.menuitem.plugins=Erweiterungen... main.menuitem.projectSettings=Projekteinstellungen... diff --git a/PlayWall/assets/de/tobias/playpad/assets/view/main/desktop/header.fxml b/PlayWall/assets/de/tobias/playpad/assets/view/main/desktop/header.fxml index bd2bd266..05ebf66e 100644 --- a/PlayWall/assets/de/tobias/playpad/assets/view/main/desktop/header.fxml +++ b/PlayWall/assets/de/tobias/playpad/assets/view/main/desktop/header.fxml @@ -39,21 +39,25 @@ </Menu> <Menu mnemonicParsing="false" text="%main.menu.option"> <items> - <MenuItem fx:id="playMenu" mnemonicParsing="false" onAction="#playMenuHandler" text="%main.menuitem.play"> - <accelerator> - <KeyCodeCombination alt="UP" code="L" control="UP" meta="UP" shift="UP" shortcut="DOWN" /> - </accelerator> - </MenuItem> - <MenuItem fx:id="dragMenu" mnemonicParsing="false" onAction="#dragMenuHandler" text="%main.menuitem.drag"> - <accelerator> - <KeyCodeCombination alt="UP" code="M" control="UP" meta="UP" shift="UP" shortcut="DOWN" /> - </accelerator> - </MenuItem> - <MenuItem fx:id="colorMenu" mnemonicParsing="false" onAction="#colorMenuHandler" text="%main.menuitem.color"> - <accelerator> - <KeyCodeCombination alt="UP" code="K" control="UP" meta="UP" shift="UP" shortcut="DOWN" /> - </accelerator> - </MenuItem> + <Menu mnemonicParsing="false" text="%main.menu.editmode"> + <items> + <MenuItem fx:id="playMenu" mnemonicParsing="false" onAction="#playMenuHandler" text="%main.menuitem.play"> + <accelerator> + <KeyCodeCombination alt="UP" code="L" control="UP" meta="UP" shift="UP" shortcut="DOWN" /> + </accelerator> + </MenuItem> + <MenuItem fx:id="dragMenu" mnemonicParsing="false" onAction="#dragMenuHandler" text="%main.menuitem.drag"> + <accelerator> + <KeyCodeCombination alt="UP" code="M" control="UP" meta="UP" shift="UP" shortcut="DOWN" /> + </accelerator> + </MenuItem> + <MenuItem fx:id="colorMenu" mnemonicParsing="false" onAction="#colorMenuHandler" text="%main.menuitem.color"> + <accelerator> + <KeyCodeCombination alt="UP" code="K" control="UP" meta="UP" shift="UP" shortcut="DOWN" /> + </accelerator> + </MenuItem> + </items> + </Menu> <SeparatorMenuItem mnemonicParsing="false" /> <MenuItem fx:id="errorMenu" mnemonicParsing="false" onAction="#errorMenuHandler" text="%main.menuitem.errors"> <accelerator> diff --git a/PlayWall/src/de/tobias/playpad/Strings.java b/PlayWall/src/de/tobias/playpad/Strings.java index f0e8fb81..2db02c1e 100644 --- a/PlayWall/src/de/tobias/playpad/Strings.java +++ b/PlayWall/src/de/tobias/playpad/Strings.java @@ -265,4 +265,10 @@ public class Strings { // UI - Dialog - Page - Name public static final String UI_Dialog_Page_Name_Header = "UI.Dialog.Page.Name.Header"; public static final String UI_Dialog_Page_Name_Content = "UI.Dialog.Page.Name.Content"; + + // Tooltip + public static final String Tooltip_PlayButton = "Tooltip.PlayButton"; + public static final String Tooltip_DragButton = "Tooltip.DragButton"; + public static final String Tooltip_PageButton = "Tooltip.PageButton"; + public static final String Tooltip_ColorButton = "Tooltip.ColorButton"; } diff --git a/PlayWall/src/de/tobias/playpad/components/Keys.xml b/PlayWall/src/de/tobias/playpad/components/Keys.xml index 2588cefd..589d9d4f 100644 --- a/PlayWall/src/de/tobias/playpad/components/Keys.xml +++ b/PlayWall/src/de/tobias/playpad/components/Keys.xml @@ -6,9 +6,9 @@ <Key id="save_proj" name="main.menuitem.save" key="S" ctrl="true" alt="false" meta="false" shift="false"/> <Key id="print_proj" name="main.menuitem.print" key="P" ctrl="true" alt="false" meta="false" shift="false"/> - <Key id="play" name="main.menuitem.play" key="E" ctrl="true" alt="false" meta="false" shift="false"/> - <Key id="drag" name="main.menuitem.drag" key="E" ctrl="true" alt="false" meta="false" shift="false"/> - <Key id="color" name="main.menuitem.color" key="E" ctrl="true" alt="false" meta="false" shift="false"/> + <Key id="play" name="main.menuitem.play" key="L" ctrl="true" alt="false" meta="false" shift="false"/> + <Key id="drag" name="main.menuitem.drag" key="M" ctrl="true" alt="false" meta="false" shift="false"/> + <Key id="color" name="main.menuitem.color" key="K" ctrl="true" alt="false" meta="false" shift="false"/> <Key id="errors" name="main.menuitem.errors" key="E" ctrl="true" alt="false" meta="false" shift="false"/> @@ -27,7 +27,12 @@ <Key id="save_proj" name="main.menuitem.save" key="S" ctrl="false" alt="false" meta="true" shift="false"/> <Key id="print_proj" name="main.menuitem.print" key="P" ctrl="false" alt="false" meta="true" shift="false"/> + <Key id="play" name="main.menuitem.play" key="L" ctrl="false" alt="false" meta="true" shift="false"/> + <Key id="drag" name="main.menuitem.drag" key="M" ctrl="false" alt="false" meta="true" shift="false"/> + <Key id="color" name="main.menuitem.color" key="K" ctrl="false" alt="false" meta="true" shift="false"/> + <Key id="errors" name="main.menuitem.errors" key="E" ctrl="false" alt="false" meta="true" shift="false"/> + <Key id="plugins" name="main.menuitem.plugins"/> <Key id="project_settings" name="main.menuitem.projectSettings" key="Comma" ctrl="false" alt="true" meta="true" shift="false"/> <Key id="profile_settings" name="main.menuitem.profileSettings" key="Comma" ctrl="false" alt="false" meta="true" shift="false"/> diff --git a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopColorPickerView.java b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopColorPickerView.java index 0d4808fd..ae8537d0 100644 --- a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopColorPickerView.java +++ b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopColorPickerView.java @@ -37,7 +37,7 @@ public class DesktopColorPickerView implements Consumer<DisplayableColor>, Event colorChooser.setDetachable(false); colorChooser.setOnHiding(e -> colorChooser = null); colorChooser.setCornerRadius(5); - colorChooser.setArrowLocation(ArrowLocation.LEFT_CENTER); + colorChooser.setArrowLocation(ArrowLocation.TOP_CENTER); } public void show(Node anchorNode) { diff --git a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopEditMode.java b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopEditMode.java index 6a88463f..874ce0c5 100644 --- a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopEditMode.java +++ b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopEditMode.java @@ -2,5 +2,5 @@ package de.tobias.playpad.layout.desktop; public enum DesktopEditMode { - PLAY, DRAG, COLOR; + PLAY, DRAG, PAGE, COLOR; } diff --git a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java index c9366fea..88164893 100644 --- a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java +++ b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java @@ -76,6 +76,7 @@ import javafx.scene.control.MenuItem; import javafx.scene.control.Slider; import javafx.scene.control.TextField; import javafx.scene.control.ToggleButton; +import javafx.scene.control.Tooltip; import javafx.scene.input.KeyCombination; import javafx.scene.input.MouseEvent; import javafx.scene.layout.HBox; @@ -85,6 +86,8 @@ import javafx.stage.Stage; public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewController implements EventHandler<ActionEvent>, ChangeListener<DesktopEditMode> { + // TODO Page Buttons gleicher Margin wie pads + // meuBar @FXML protected MenuBar menuBar; @@ -120,6 +123,7 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro protected SegmentedButton editButtons; protected ToggleButton playButton; protected ToggleButton dragButton; + protected ToggleButton pageButton; protected ToggleButton colorButton; private Button addPageButton; @@ -160,10 +164,16 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro // Edit Mode Buttons editButtons = new SegmentedButton(); playButton = new ToggleButton("", new FontIcon(FontAwesomeType.PLAY)); + playButton.setTooltip(new Tooltip(Localization.getString(Strings.Tooltip_PlayButton))); playButton.setFocusTraversable(false); dragButton = new ToggleButton("", new FontIcon(FontAwesomeType.ARROWS)); + dragButton.setTooltip(new Tooltip(Localization.getString(Strings.Tooltip_DragButton))); dragButton.setFocusTraversable(false); + pageButton = new ToggleButton("", new FontIcon(FontAwesomeType.FILES_ALT)); + pageButton.setTooltip(new Tooltip(Localization.getString(Strings.Tooltip_PageButton))); + pageButton.setFocusTraversable(false); colorButton = new ToggleButton("", new FontIcon(FontAwesomeType.PENCIL)); + colorButton.setTooltip(new Tooltip(Localization.getString(Strings.Tooltip_ColorButton))); colorButton.setFocusTraversable(false); // Zeigt die Farbauswahl colorButton.setOnAction(e -> @@ -177,13 +187,15 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro mainViewController.addListenerForPads(colorPickerView, MouseEvent.MOUSE_CLICKED); } }); - editButtons.getButtons().addAll(playButton, dragButton, colorButton); + editButtons.getButtons().addAll(playButton, dragButton, pageButton, colorButton); editButtons.getToggleGroup().selectedToggleProperty().addListener((a, b, c) -> { if (c == playButton) { connect.setEditMode(DesktopEditMode.PLAY); } else if (c == dragButton) { connect.setEditMode(DesktopEditMode.DRAG); + } else if (c == pageButton) { + connect.setEditMode(DesktopEditMode.PAGE); } else if (c == colorButton) { connect.setEditMode(DesktopEditMode.COLOR); } else if (c == null) { @@ -213,9 +225,12 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro for (IPadView view : mainViewController.getPadViews()) { view.enableDragAndDropDesignMode(false); } + } else if (oldValue == DesktopEditMode.PAGE) { + highlightPageButton(currentSelectedPageButton); iconHbox.getChildren().remove(addPageButton); } else if (oldValue == DesktopEditMode.COLOR) { if (colorPickerView != null) { + mainViewController.removeListenerForPads(colorPickerView, MouseEvent.MOUSE_CLICKED); colorPickerView.hide(); colorPickerView = null; } @@ -230,13 +245,14 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro for (IPadView view : mainViewController.getPadViews()) { view.enableDragAndDropDesignMode(true); } + } else if (newValue == DesktopEditMode.PAGE) { + pageButton.setSelected(true); iconHbox.getChildren().add(0, addPageButton); + highlightPageButton(currentSelectedPageButton); } else if (newValue == DesktopEditMode.COLOR) { colorButton.setSelected(true); } - // Update Page Button (for Edit/Display) - highlightPageButton(currentSelectedPageButton); } private void initLayoutMenu() { @@ -430,7 +446,7 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro newNode.getStyleClass().add(CURRENT_PAGE_BUTTON); currentSelectedPageButton = index; - if (newNode instanceof Button && connect.getEditMode() == DesktopEditMode.DRAG) { // Nur bei Drag And Drop mode + if (newNode instanceof Button && connect.getEditMode() == DesktopEditMode.PAGE) { // Nur bei Drag And Drop mode Button button = (Button) newNode; DesktopPageEditButtonView editBox = new DesktopPageEditButtonView(this, openProject.getPage(index), button); button.setGraphic(editBox); diff --git a/PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadDragListener.java b/PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadDragListener.java index d7d6eb92..63a8d826 100644 --- a/PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadDragListener.java +++ b/PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadDragListener.java @@ -21,6 +21,7 @@ import de.tobias.playpad.settings.GlobalSettings; import de.tobias.playpad.settings.Profile; import de.tobias.playpad.view.FileDragOptionView; import de.tobias.playpad.view.PadDragOptionView; +import de.tobias.playpad.viewcontroller.main.IMainViewController; import de.tobias.utils.util.FileUtils; import javafx.scene.SnapshotParameters; import javafx.scene.image.WritableImage; @@ -165,8 +166,8 @@ public class DesktopPadDragListener { mode.handle(padID, sourcePad.getPadIndex(), project); padHud.hide(); - PlayPadPlugin.getImplementation().getMainViewController() - .showPage(PlayPadPlugin.getImplementation().getMainViewController().getPage()); + IMainViewController mainViewController = PlayPadPlugin.getImplementation().getMainViewController(); + mainViewController.showPage(mainViewController.getPage()); event.setDropCompleted(success); event.consume(); @@ -191,8 +192,8 @@ public class DesktopPadDragListener { for (int x = 0; x < snapshot.getWidth(); x++) { for (int y = 0; y < snapshot.getHeight(); y++) { Color oldColor = snapshot.getPixelReader().getColor(x, y).darker().darker(); - snapshot.getPixelWriter().setColor(x, y, - new Color(oldColor.getRed(), oldColor.getGreen(), oldColor.getBlue(), oldColor.getOpacity() * 0.5)); + Color newColor = new Color(oldColor.getRed(), oldColor.getGreen(), oldColor.getBlue(), oldColor.getOpacity() * 0.5); + snapshot.getPixelWriter().setColor(x, y, newColor); } } diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewController.java index d15beed3..c16a3acc 100644 --- a/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewController.java +++ b/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewController.java @@ -504,6 +504,7 @@ public class MainViewController extends ViewController implements IMainViewContr if (menuToolbarViewController != null) { menuToolbarViewController.highlightPageButton(page); } + return true; } @@ -649,6 +650,12 @@ public class MainViewController extends ViewController implements IMainViewContr view.getRootNode().addEventFilter(eventType, handler); } } + + public <T extends Event> void removeListenerForPads(EventHandler<? super T> handler, EventType<T> eventType) { + for (IPadView view : padViews) { + view.getRootNode().removeEventFilter(eventType, handler); + } + } @Override public void loadUserCss() { diff --git a/PlayWallCore/src/de/tobias/playpad/project/Project.java b/PlayWallCore/src/de/tobias/playpad/project/Project.java index 2825cdeb..d1e273ac 100644 --- a/PlayWallCore/src/de/tobias/playpad/project/Project.java +++ b/PlayWallCore/src/de/tobias/playpad/project/Project.java @@ -45,6 +45,7 @@ public class Project { /** * Pattern für den Namen des Projekts */ + // TODO REDO public static final String PROJECT_NAME_PATTERN = "\\w{1}[\\w\\s-_]{0,}"; /** * Dateiendung für eine projekt Datei @@ -309,6 +310,9 @@ public class Project { } public void addPage() { + if (pages.size() == ProjectSettings.MAX_PAGES) { + return; + } int index = pages.size(); pages.add(new Page(index, this)); } diff --git a/PlayWallCore/src/de/tobias/playpad/project/page/PadIndex.java b/PlayWallCore/src/de/tobias/playpad/project/page/PadIndex.java index 11067fee..d8e3e6fd 100644 --- a/PlayWallCore/src/de/tobias/playpad/project/page/PadIndex.java +++ b/PlayWallCore/src/de/tobias/playpad/project/page/PadIndex.java @@ -56,7 +56,7 @@ public class PadIndex implements Serializable { @Override public String toString() { - return "PadIndex [id=" + id + ", page=" + page + "]"; + return id + "-" + page; } } diff --git a/PlayWallCore/src/de/tobias/playpad/settings/Profile.java b/PlayWallCore/src/de/tobias/playpad/settings/Profile.java index d34f11b2..3baa4a09 100644 --- a/PlayWallCore/src/de/tobias/playpad/settings/Profile.java +++ b/PlayWallCore/src/de/tobias/playpad/settings/Profile.java @@ -26,6 +26,7 @@ public class Profile { private static final String MAPPING_XML = "Mapping.xml"; private static final String LAYOUT_XML = "Layout.xml"; + // TODO REDO public static final String profileNameEx = "[\\p{L},0-9]{1}[\\p{L}\\s-_]{0,}"; private static List<ProfileListener> listeners = new ArrayList<>(); diff --git a/PlayWallCore/src/de/tobias/playpad/settings/ProfileReference.java b/PlayWallCore/src/de/tobias/playpad/settings/ProfileReference.java index 24bb8f34..511f6ca9 100644 --- a/PlayWallCore/src/de/tobias/playpad/settings/ProfileReference.java +++ b/PlayWallCore/src/de/tobias/playpad/settings/ProfileReference.java @@ -65,6 +65,7 @@ public class ProfileReference implements Displayable { public ProfileReference(UUID uuid, String name) { this.uuid = uuid; this.name = name; + requestedModules = new HashSet<>(); updateDisplayProperty(); } diff --git a/PlayWallCore/src/de/tobias/playpad/viewcontroller/main/IMainViewController.java b/PlayWallCore/src/de/tobias/playpad/viewcontroller/main/IMainViewController.java index 680582f3..5451c138 100644 --- a/PlayWallCore/src/de/tobias/playpad/viewcontroller/main/IMainViewController.java +++ b/PlayWallCore/src/de/tobias/playpad/viewcontroller/main/IMainViewController.java @@ -152,4 +152,6 @@ public interface IMainViewController extends NotificationHandler { public NotificationPane getNotificationPane(); public <T extends Event> void addListenerForPads(EventHandler<? super T> handler, EventType<T> eventType); + + public <T extends Event> void removeListenerForPads(EventHandler<? super T> handler, EventType<T> eventType); } -- GitLab