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 073819277159c23cc022a3c8eab2aa9da87397d9..883a13e0edf2c5c7c76ffaa083f2989ca1983184 100644 --- a/PlayWall/assets/de/tobias/playpad/assets/lang/ui_de.properties +++ b/PlayWall/assets/de/tobias/playpad/assets/lang/ui_de.properties @@ -17,8 +17,9 @@ main.menuitem.onTop=Fenster im Vordergrund main.menuitem.plugins=Erweiterungen... main.menuitem.dnd=Bearbeitungsmodus main.menuitem.errors=Fehlerbericht anzeigen... -main.menuitem.settings=Einstellungen... -main.menuitem.globalsettings=Globale (Programm) Einstellungen +main.menuitem.projectSettings=Projekt Einstellungen... +main.menuitem.profileSettings=Profil Einstellungen... +main.menuitem.globalSettings=Globale (Programm) Einstellungen main.menuitem.about=�ber Play Wall... main.menuitem.website=Webseite besuchen... main.menuitem.senderror=Fehler senden... diff --git a/PlayWall/assets/de/tobias/playpad/assets/view/actions/cartActions.fxml b/PlayWall/assets/de/tobias/playpad/assets/view/actions/cartActions.fxml index f51a447b46c39cce3eed03f403278af7ff0e9b40..58435207ea126084a7a545740393ec06917a404c 100644 --- a/PlayWall/assets/de/tobias/playpad/assets/view/actions/cartActions.fxml +++ b/PlayWall/assets/de/tobias/playpad/assets/view/actions/cartActions.fxml @@ -5,10 +5,8 @@ <?import java.lang.*?> <?import javafx.scene.layout.*?> - <VBox fx:id="buttonVbox" spacing="7.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"> <children> - <HBox fx:id="pageHbox" minHeight="20.0" spacing="7.0" VBox.vgrow="NEVER" /> <GridPane fx:id="gridPane" alignment="CENTER" hgap="7.0" maxHeight="-Infinity" maxWidth="1.7976931348623157E308" minHeight="-Infinity" minWidth="-Infinity" vgap="7.0" VBox.vgrow="NEVER"> <columnConstraints> <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> 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 df64599e49b9d652ec185132b564556c386e34a3..1c152d8540b4a2c2aae51f400625b556b9d4b17e 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 @@ -52,12 +52,13 @@ <SeparatorMenuItem mnemonicParsing="false" /> <MenuItem fx:id="pluginMenu" mnemonicParsing="false" onAction="#pluginMenuItemHandler" text="%main.menuitem.plugins" /> <SeparatorMenuItem mnemonicParsing="false" /> - <MenuItem fx:id="settingsMenuItem" mnemonicParsing="false" onAction="#settingsHandler" text="%main.menuitem.settings"> + <MenuItem fx:id="projectSettingsMenuItem" mnemonicParsing="false" onAction="#projectSettingsHandler" text="%main.menuitem.projectSettings" /> + <MenuItem fx:id="profileSettingsMenuItem" mnemonicParsing="false" onAction="#profileSettingsHandler" text="%main.menuitem.profileSettings"> <accelerator> <KeyCodeCombination alt="UP" code="COMMA" control="UP" meta="UP" shift="UP" shortcut="DOWN" /> </accelerator> </MenuItem> - <MenuItem fx:id="globalSettingsMenuItem" mnemonicParsing="false" onAction="#globalSettingsHandler" text="%main.menuitem.globalsettings"> + <MenuItem fx:id="globalSettingsMenuItem" mnemonicParsing="false" onAction="#globalSettingsHandler" text="%main.menuitem.globalSettings"> <accelerator> <KeyCodeCombination alt="UP" code="COMMA" control="UP" meta="UP" shift="DOWN" shortcut="DOWN" /> </accelerator> diff --git a/PlayWall/assets/de/tobias/playpad/assets/view/option/profile/generalTab.fxml b/PlayWall/assets/de/tobias/playpad/assets/view/option/profile/generalTab.fxml index c37bccfea43073122df709a2f0ec317b880e795f..e0e5718c6711d59122866c0304a39bfb2068f745 100644 --- a/PlayWall/assets/de/tobias/playpad/assets/view/option/profile/generalTab.fxml +++ b/PlayWall/assets/de/tobias/playpad/assets/view/option/profile/generalTab.fxml @@ -5,111 +5,88 @@ <?import javafx.scene.control.*?> <?import javafx.scene.layout.*?> -<ScrollPane fitToWidth="true" prefHeight="775.0" prefWidth="590.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"> - <content> - <VBox spacing="14.0"> + +<VBox spacing="14.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"> + <children> + <Label text="%settings.gen.label.additional" underline="true" /> + <HBox spacing="14.0"> + <children> + <Label alignment="BASELINE_RIGHT" maxWidth="1.7976931348623157E308" prefWidth="150.0" text="%settings.gen.label.liveMode" /> + <CheckBox fx:id="liveModeCheckBox" layoutX="30.0" layoutY="269.0" mnemonicParsing="false" text="%settings.gen.checkbox.liveMode" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="269.0" /> + </children> + </HBox> + <HBox spacing="14.0"> + <children> + <Label prefWidth="150.0" text="%settings.gen.label.liveMode.pageChange" /> + <RadioButton fx:id="pageEnable" mnemonicParsing="false" prefWidth="125.0" text="%settings.gen.radio.liveMode.enable" /> + <RadioButton fx:id="pageDisable" mnemonicParsing="false" prefWidth="100.0" text="%settings.gen.radio.liveMode.disable" /> + </children> + <VBox.margin> + <Insets left="164.0" /> + </VBox.margin> + </HBox> + <HBox spacing="14.0"> + <children> + <Label prefWidth="150.0" text="%settings.gen.label.liveMode.dragPads" /> + <RadioButton fx:id="dragEnable" mnemonicParsing="false" prefWidth="125.0" text="%settings.gen.radio.liveMode.enable" /> + <RadioButton fx:id="dragDisable" mnemonicParsing="false" prefWidth="100.0" text="%settings.gen.radio.liveMode.disable" /> + </children> + <VBox.margin> + <Insets left="164.0" /> + </VBox.margin> + </HBox> + <HBox spacing="14.0"> + <VBox.margin> + <Insets left="164.0" /> + </VBox.margin> + <children> + <Label prefWidth="150.0" text="%settings.gen.label.liveMode.media" /> + <RadioButton fx:id="fileEnable" mnemonicParsing="false" prefWidth="125.0" text="%settings.gen.radio.liveMode.enable" /> + <RadioButton fx:id="fileDisable" mnemonicParsing="false" prefWidth="100.0" text="%settings.gen.radio.liveMode.disable" /> + </children> + </HBox> + <HBox spacing="14.0"> + <VBox.margin> + <Insets left="164.0" /> + </VBox.margin> + <children> + <Label prefWidth="150.0" text="%settings.gen.label.liveMode.settings" /> + <RadioButton fx:id="settingsEnable" mnemonicParsing="false" prefWidth="125.0" text="%settings.gen.radio.liveMode.enable" /> + <RadioButton fx:id="settingsDisable" mnemonicParsing="false" prefWidth="100.0" text="%settings.gen.radio.liveMode.disable" /> + </children> + </HBox> + <Label text="%settings.gen.label.liveModeInfo" wrapText="true"> + <VBox.margin> + <Insets left="164.0" /> + </VBox.margin> + </Label> + <HBox spacing="14.0"> + <children> + <Label alignment="BASELINE_RIGHT" maxHeight="1.7976931348623157E308" prefWidth="150.0" text="%settings.gen.cache.label" /> + <TextField fx:id="cacheTextField" promptText="C:\Users\Max\Cache" HBox.hgrow="ALWAYS" /> + <Button mnemonicParsing="false" onAction="#cacheChooseHandler" text="%settings.gen.cache.button.choose" /> + </children> + </HBox> + <HBox alignment="CENTER_LEFT" spacing="14.0"> <children> - <Label text="%settings.gen.label.view" underline="true" /> - <HBox spacing="14.0"> - <children> - <Label alignment="BASELINE_RIGHT" layoutX="21.0" layoutY="40.0" maxHeight="1.7976931348623157E308" prefWidth="150.0" text="%settings.gen.label.pages" /> - <TextField fx:id="pageCountTextField" prefWidth="50.0" /> - </children> - </HBox> - <HBox spacing="14.0"> - <children> - <Label alignment="BASELINE_RIGHT" layoutX="20.0" layoutY="68.0" maxHeight="1.7976931348623157E308" prefWidth="150.0" text="%settings.gen.label.columns" /> - <TextField fx:id="columnTextField" prefWidth="50.0" /> - </children> - </HBox> - <HBox spacing="14.0"> - <children> - <Label alignment="BASELINE_RIGHT" layoutX="18.0" layoutY="96.0" maxHeight="1.7976931348623157E308" prefWidth="150.0" text="%settings.gen.label.rows" /> - <TextField fx:id="rowTextField" prefWidth="50.0" /> - </children> - </HBox> - <Separator prefHeight="2.0" prefWidth="600.0" /> - <Label text="%settings.gen.label.additional" underline="true" /> - <HBox spacing="14.0"> - <children> - <Label alignment="BASELINE_RIGHT" maxWidth="1.7976931348623157E308" prefWidth="150.0" text="%settings.gen.label.liveMode" /> - <CheckBox fx:id="liveModeCheckBox" layoutX="30.0" layoutY="269.0" mnemonicParsing="false" text="%settings.gen.checkbox.liveMode" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="269.0" /> - </children> - </HBox> - <HBox spacing="14.0"> - <children> - <Label prefWidth="150.0" text="%settings.gen.label.liveMode.pageChange" /> - <RadioButton fx:id="pageEnable" mnemonicParsing="false" prefWidth="125.0" text="%settings.gen.radio.liveMode.enable" /> - <RadioButton fx:id="pageDisable" mnemonicParsing="false" prefWidth="100.0" text="%settings.gen.radio.liveMode.disable" /> - </children> - <VBox.margin> - <Insets left="164.0" /> - </VBox.margin> - </HBox> - <HBox spacing="14.0"> - <children> - <Label prefWidth="150.0" text="%settings.gen.label.liveMode.dragPads" /> - <RadioButton fx:id="dragEnable" mnemonicParsing="false" prefWidth="125.0" text="%settings.gen.radio.liveMode.enable" /> - <RadioButton fx:id="dragDisable" mnemonicParsing="false" prefWidth="100.0" text="%settings.gen.radio.liveMode.disable" /> - </children> - <VBox.margin> - <Insets left="164.0" /> - </VBox.margin> - </HBox> - <HBox spacing="14.0"> - <VBox.margin> - <Insets left="164.0" /> - </VBox.margin> - <children> - <Label prefWidth="150.0" text="%settings.gen.label.liveMode.media" /> - <RadioButton fx:id="fileEnable" mnemonicParsing="false" prefWidth="125.0" text="%settings.gen.radio.liveMode.enable" /> - <RadioButton fx:id="fileDisable" mnemonicParsing="false" prefWidth="100.0" text="%settings.gen.radio.liveMode.disable" /> - </children> - </HBox> - <HBox spacing="14.0"> - <VBox.margin> - <Insets left="164.0" /> - </VBox.margin> - <children> - <Label prefWidth="150.0" text="%settings.gen.label.liveMode.settings" /> - <RadioButton fx:id="settingsEnable" mnemonicParsing="false" prefWidth="125.0" text="%settings.gen.radio.liveMode.enable" /> - <RadioButton fx:id="settingsDisable" mnemonicParsing="false" prefWidth="100.0" text="%settings.gen.radio.liveMode.disable" /> - </children> - </HBox> - <Label text="%settings.gen.label.liveModeInfo" wrapText="true"> - <VBox.margin> - <Insets left="164.0" /> - </VBox.margin> - </Label> - <HBox spacing="14.0"> - <children> - <Label alignment="BASELINE_RIGHT" maxHeight="1.7976931348623157E308" prefWidth="150.0" text="%settings.gen.cache.label" /> - <TextField fx:id="cacheTextField" promptText="C:\Users\Max\Cache" HBox.hgrow="ALWAYS" /> - <Button mnemonicParsing="false" onAction="#cacheChooseHandler" text="%settings.gen.cache.button.choose" /> - </children> - </HBox> - <HBox alignment="CENTER_LEFT" spacing="14.0"> - <children> - <Label prefWidth="150.0" /> - <Button mnemonicParsing="false" onAction="#cacheResetButtonHandler" text="%settings.gen.cache.button.reset" /> - <Label fx:id="cacheSizeLabel" text="Label" /> - </children> - </HBox> - <Label text="%settings.gen.cache.label.info" wrapText="true"> - <VBox.margin> - <Insets left="164.0" /> - </VBox.margin> - </Label> - <Separator prefWidth="200.0" /> - <Button alignment="TOP_LEFT" mnemonicParsing="false" onAction="#resetDialogs" text="%settings.gen.warning.button.reset"> - <VBox.margin> - <Insets left="164.0" /> - </VBox.margin> - </Button> + <Label prefWidth="150.0" /> + <Button mnemonicParsing="false" onAction="#cacheResetButtonHandler" text="%settings.gen.cache.button.reset" /> + <Label fx:id="cacheSizeLabel" text="Label" /> </children> - <padding> - <Insets bottom="14.0" left="14.0" right="14.0" top="14.0" /> - </padding> - </VBox> - </content> -</ScrollPane> + </HBox> + <Label text="%settings.gen.cache.label.info" wrapText="true"> + <VBox.margin> + <Insets left="164.0" /> + </VBox.margin> + </Label> + <Separator prefWidth="200.0" /> + <Button alignment="TOP_LEFT" mnemonicParsing="false" onAction="#resetDialogs" text="%settings.gen.warning.button.reset"> + <VBox.margin> + <Insets left="164.0" /> + </VBox.margin> + </Button> + </children> + <padding> + <Insets bottom="14.0" left="14.0" right="14.0" top="14.0" /> + </padding> +</VBox> diff --git a/PlayWall/assets/de/tobias/playpad/assets/view/option/project/generalTab.fxml b/PlayWall/assets/de/tobias/playpad/assets/view/option/project/generalTab.fxml new file mode 100644 index 0000000000000000000000000000000000000000..846711017bc96d87dc8447291d4c5d1bcec0184a --- /dev/null +++ b/PlayWall/assets/de/tobias/playpad/assets/view/option/project/generalTab.fxml @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<?import javafx.geometry.*?> +<?import java.lang.*?> +<?import javafx.scene.control.*?> +<?import javafx.scene.layout.*?> + + +<VBox spacing="14.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"> + <children> + <Label text="%settings.gen.label.view" underline="true" /> + <HBox spacing="14.0"> + <children> + <Label alignment="BASELINE_RIGHT" layoutX="21.0" layoutY="40.0" maxHeight="1.7976931348623157E308" prefWidth="150.0" text="%settings.gen.label.pages" /> + <TextField fx:id="pageCountTextField" prefWidth="50.0" /> + </children> + </HBox> + <HBox spacing="14.0"> + <children> + <Label alignment="BASELINE_RIGHT" layoutX="20.0" layoutY="68.0" maxHeight="1.7976931348623157E308" prefWidth="150.0" text="%settings.gen.label.columns" /> + <TextField fx:id="columnTextField" prefWidth="50.0" /> + </children> + </HBox> + <HBox spacing="14.0"> + <children> + <Label alignment="BASELINE_RIGHT" layoutX="18.0" layoutY="96.0" maxHeight="1.7976931348623157E308" prefWidth="150.0" text="%settings.gen.label.rows" /> + <TextField fx:id="rowTextField" prefWidth="50.0" /> + </children> + </HBox> + </children> + <padding> + <Insets bottom="14.0" left="14.0" right="14.0" top="14.0" /> + </padding> +</VBox> diff --git a/PlayWall/assets/de/tobias/playpad/assets/view/option/project/projectSettingsView.fxml b/PlayWall/assets/de/tobias/playpad/assets/view/option/project/projectSettingsView.fxml new file mode 100644 index 0000000000000000000000000000000000000000..23efae52a75f75d6b931db277299917bba3eea67 --- /dev/null +++ b/PlayWall/assets/de/tobias/playpad/assets/view/option/project/projectSettingsView.fxml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<?import javafx.geometry.*?> +<?import javafx.scene.control.*?> +<?import java.lang.*?> +<?import javafx.scene.layout.*?> + +<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="592.0" prefWidth="645.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"> + <children> + <TabPane fx:id="tabPane" prefHeight="348.0" prefWidth="600.0" tabClosingPolicy="UNAVAILABLE" AnchorPane.bottomAnchor="52.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" /> + <Button fx:id="finishButton" layoutX="508.0" layoutY="360.0" mnemonicParsing="false" onAction="#finishButtonHandler" text="%settings.button.finish" AnchorPane.bottomAnchor="14.0" AnchorPane.rightAnchor="14.0" /> + </children> +</AnchorPane> diff --git a/PlayWall/src/application.yml b/PlayWall/src/application.yml index 2289010683445f25ef0b0f5837f49826c95409e3..29f0ca1f41e61c9d00f8740f489200bbedff362f 100644 --- a/PlayWall/src/application.yml +++ b/PlayWall/src/application.yml @@ -1,6 +1,6 @@ name: PlayWall version: 5.0.1 -build: 32 +build: 33 identifier: de.tobias.playpad main: de.tobias.playpad.PlayPadMain author: Tobias Ullerich diff --git a/PlayWall/src/de/tobias/playpad/VersionUpdater.java b/PlayWall/src/de/tobias/playpad/VersionUpdater.java index 6ad83209efd3bf78e38e8c92f0bf370ac310d94f..7cc6280d1f22f6614e5207f330a1a37afc2f2e0e 100644 --- a/PlayWall/src/de/tobias/playpad/VersionUpdater.java +++ b/PlayWall/src/de/tobias/playpad/VersionUpdater.java @@ -1,13 +1,76 @@ package de.tobias.playpad; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.UUID; + +import org.dom4j.Document; +import org.dom4j.DocumentException; +import org.dom4j.Element; +import org.dom4j.io.OutputFormat; +import org.dom4j.io.SAXReader; +import org.dom4j.io.XMLWriter; + +import de.tobias.playpad.project.ProjectSettings; import de.tobias.utils.application.App; +import de.tobias.utils.application.container.PathType; import de.tobias.utils.application.update.UpdateService; public class VersionUpdater implements UpdateService { @Override public void update(App app, long oldVersion, long newVersion) { - + try { + if (newVersion >= 33 && oldVersion < 33) + update33(app); + } catch (Exception e) { + e.printStackTrace(); + } + } + + private void update33(App app) throws DocumentException, IOException { + SAXReader reader = new SAXReader(); + + Document projectsDocument = reader.read(Files.newInputStream(app.getPath(PathType.CONFIGURATION, "Projects.xml"))); + for (Object obj : projectsDocument.getRootElement().elements("Project")) { + if (obj instanceof Element) { + Element element = (Element) obj; + + UUID profile = UUID.fromString(element.attributeValue("profile")); + UUID project = UUID.fromString(element.attributeValue("uuid")); + + updateProject(profile, project, app); + } + } + } + + private void updateProject(UUID profile, UUID project, App app) throws DocumentException, IOException { + Path profileSettings = app.getPath(PathType.CONFIGURATION, profile.toString(), "ProfileSettings.xml"); + SAXReader reader = new SAXReader(); + + Document document = reader.read(Files.newInputStream(profileSettings)); + Element rootElement = document.getRootElement(); + + int pages = Integer.valueOf(rootElement.element("PageCount").getStringValue()); + int rows = Integer.valueOf(rootElement.element("Rows").getStringValue()); + int columns = Integer.valueOf(rootElement.element("Columns").getStringValue()); + + Path projectSettings = app.getPath(PathType.DOCUMENTS, project.toString() + ".xml"); + Document projectDocument = reader.read(Files.newInputStream(projectSettings)); + Element rootProjectElement = projectDocument.getRootElement(); + Element settingsElement = rootProjectElement.addElement("Settings"); + + ProjectSettings projectSettings2 = new ProjectSettings(); + projectSettings2.setColumns(columns); + projectSettings2.setRows(rows); + projectSettings2.setPageCount(pages); + + projectSettings2.save(settingsElement); + + XMLWriter writer = new XMLWriter(Files.newOutputStream(projectSettings), OutputFormat.createPrettyPrint()); + writer.write(projectDocument); + writer.close(); } } diff --git a/PlayWall/src/de/tobias/playpad/components/Keys.xml b/PlayWall/src/de/tobias/playpad/components/Keys.xml index 23b7dabb82853c7f34a41fc89055920fa8f9d483..d5f0239e01f66870f30a2311003816151f3532af 100644 --- a/PlayWall/src/de/tobias/playpad/components/Keys.xml +++ b/PlayWall/src/de/tobias/playpad/components/Keys.xml @@ -1,3 +1,4 @@ + <Keys> <Windows> <Key id="new_proj" name="main.menuitem.new" key="N" ctrl="true" alt="false" meta="false" shift="false"/> @@ -8,8 +9,9 @@ <Key id="dnd" name="main.menuitem.dnd" key="M" 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"/> <Key id="plugins" name="main.menuitem.plugins"/> - <Key id="profile_settings" name="main.menuitem.settings" key="," ctrl="true" alt="false" meta="false" shift="false"/> - <Key id="global_settings" name="main.menuitem.globalsettings" key="," ctrl="true" alt="false" meta="false" shift="true"/> + <Key id="project_settings" name="main.menuitem.projectSettings" key="Comma" ctrl="true" alt="true" meta="false" shift="false"/> + <Key id="profile_settings" name="main.menuitem.profileSettings" key="Comma" ctrl="true" alt="false" meta="false" shift="false"/> + <Key id="global_settings" name="main.menuitem.globalSettings" key="Comma" ctrl="true" alt="false" meta="false" shift="true"/> <Key id="window_top" name="main.menuitem.onTop"/> <Key id="window_fullscreen" name="main.menuitem.fullScreen" key="F" ctrl="true" alt="false" meta="false" shift="true"/> @@ -24,8 +26,9 @@ <Key id="dnd" name="main.menuitem.dnd" key="M" 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="profile_settings" name="main.menuitem.settings" key="," ctrl="false" alt="false" meta="true" shift="false"/> - <Key id="global_settings" name="main.menuitem.globalsettings" key="," ctrl="false" alt="false" meta="true" shift="true"/> + <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"/> + <Key id="global_settings" name="main.menuitem.globalSettings" key="Comma" ctrl="false" alt="false" meta="true" shift="true"/> <Key id="window_top" name="main.menuitem.onTop"/> <Key id="window_fullscreen" name="main.menuitem.fullScreen" key="F" ctrl="false" alt="false" meta="true" shift="true"/> diff --git a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java index 442bc599da42bf91ebd29b9d46f223472811fe1d..adc1a04d9b370bd22cfa28997bad275ccfba4b13 100644 --- a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java +++ b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java @@ -41,8 +41,10 @@ import de.tobias.playpad.viewcontroller.main.BasicMenuToolbarViewController; import de.tobias.playpad.viewcontroller.main.IMainViewController; import de.tobias.playpad.viewcontroller.option.GlobalSettingsTabViewController; import de.tobias.playpad.viewcontroller.option.ProfileSettingsTabViewController; +import de.tobias.playpad.viewcontroller.option.ProjectSettingsTabViewController; import de.tobias.playpad.viewcontroller.option.global.GlobalSettingsViewController; -import de.tobias.playpad.viewcontroller.option.profile.SettingsViewController; +import de.tobias.playpad.viewcontroller.option.profile.ProfileSettingsViewController; +import de.tobias.playpad.viewcontroller.option.project.ProjectSettingsViewController; import de.tobias.playpad.viewcontroller.pad.PadDragListener; import de.tobias.utils.application.ApplicationInfo; import de.tobias.utils.application.ApplicationUtils; @@ -89,7 +91,9 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro @FXML protected CheckMenuItem dndModeMenuItem; @FXML protected MenuItem errorMenu; @FXML protected MenuItem pluginMenu; - @FXML protected MenuItem settingsMenuItem; + + @FXML protected MenuItem projectSettingsMenuItem; + @FXML protected MenuItem profileSettingsMenuItem; @FXML protected MenuItem globalSettingsMenuItem; @FXML protected CheckMenuItem fullScreenMenuItem; @@ -105,7 +109,9 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro @FXML protected Label liveLabel; private IMainViewController mainViewController; - private SettingsViewController settingsViewController; + + private ProjectSettingsViewController projectSettingsViewController; + private ProfileSettingsViewController profileSettingsViewController; private GlobalSettingsViewController globalSettingsViewController; public DesktopMenuToolbarViewController(IMainViewController controller) { @@ -203,7 +209,8 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro setKeyBindingForMenu(dndModeMenuItem, keys.getKey("dnd")); setKeyBindingForMenu(errorMenu, keys.getKey("errors")); setKeyBindingForMenu(pluginMenu, keys.getKey("plugins")); - setKeyBindingForMenu(settingsMenuItem, keys.getKey("profile_settings")); + setKeyBindingForMenu(projectSettingsMenuItem, keys.getKey("project_settings")); + setKeyBindingForMenu(profileSettingsMenuItem, keys.getKey("profile_settings")); setKeyBindingForMenu(globalSettingsMenuItem, keys.getKey("global_settings")); setKeyBindingForMenu(fullScreenMenuItem, keys.getKey("window_fullscreen")); @@ -218,7 +225,8 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro dndModeMenuItem.setDisable(false); errorMenu.setDisable(false); pluginMenu.setDisable(false); - settingsMenuItem.setDisable(false); + projectSettingsMenuItem.setDisable(false); + profileSettingsMenuItem.setDisable(false); globalSettingsMenuItem.setDisable(false); fullScreenMenuItem.setDisable(false); @@ -288,7 +296,8 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro dndModeMenuItem.setDisable(true); errorMenu.setDisable(true); pluginMenu.setDisable(true); - settingsMenuItem.setDisable(true); + projectSettingsMenuItem.setDisable(true); + profileSettingsMenuItem.setDisable(true); globalSettingsMenuItem.setDisable(true); fullScreenMenuItem.setDisable(true); @@ -457,7 +466,38 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro } @FXML - void settingsHandler(ActionEvent event) { + void projectSettingsHandler(ActionEvent event) { + Midi midi = Midi.getInstance(); + Project currentProject = PlayPadMain.getProgramInstance().getCurrentProject(); + + if (projectSettingsViewController == null) { + Stage mainStage = mainViewController.getStage(); + + Runnable onFinish = () -> + { + midi.setListener(mainViewController.getMidiHandler()); + + for (ProjectSettingsTabViewController controller : projectSettingsViewController.getTabs()) { + if (controller.needReload()) { + controller.reload(currentProject.getSettings(), currentProject, mainViewController); + } + } + + profileSettingsViewController = null; + mainStage.toFront(); + }; + + projectSettingsViewController = new ProjectSettingsViewController(mainViewController.getScreen(), mainStage, currentProject, + onFinish); + + projectSettingsViewController.getStage().show(); + } else if (projectSettingsViewController.getStage().isShowing()) { + projectSettingsViewController.getStage().toFront(); + } + } + + @FXML + void profileSettingsHandler(ActionEvent event) { Midi midi = Midi.getInstance(); Project currentProject = PlayPadMain.getProgramInstance().getCurrentProject(); @@ -468,7 +508,7 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro return; } - if (settingsViewController == null) { + if (profileSettingsViewController == null) { Stage mainStage = mainViewController.getStage(); Runnable onFinish = () -> @@ -476,7 +516,7 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro midi.setListener(mainViewController.getMidiHandler()); boolean change = false; - for (ProfileSettingsTabViewController controller : settingsViewController.getTabs()) { + for (ProfileSettingsTabViewController controller : profileSettingsViewController.getTabs()) { if (controller.needReload()) { change = true; controller.reload(Profile.currentProfile(), currentProject, mainViewController); @@ -487,15 +527,16 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro PlayPadMain.getProgramInstance().getSettingsListener().forEach(l -> l.onChange(Profile.currentProfile())); } - settingsViewController = null; + profileSettingsViewController = null; mainStage.toFront(); }; - settingsViewController = new SettingsViewController(midi, mainViewController.getScreen(), mainStage, currentProject, onFinish); + profileSettingsViewController = new ProfileSettingsViewController(midi, mainViewController.getScreen(), mainStage, currentProject, + onFinish); - settingsViewController.getStage().show(); - } else if (settingsViewController.getStage().isShowing()) { - settingsViewController.getStage().toFront(); + profileSettingsViewController.getStage().show(); + } else if (profileSettingsViewController.getStage().isShowing()) { + profileSettingsViewController.getStage().toFront(); } } diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/actions/CartActionsViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/actions/CartActionsViewController.java index 1df903b3f42497a8e98c4577f7280a65634d2dfd..6326b9c7015b56a4e6510a47bde8cd42676311bd 100644 --- a/PlayWall/src/de/tobias/playpad/viewcontroller/actions/CartActionsViewController.java +++ b/PlayWall/src/de/tobias/playpad/viewcontroller/actions/CartActionsViewController.java @@ -5,7 +5,6 @@ import java.util.List; import org.controlsfx.control.SegmentedButton; import de.tobias.playpad.PlayPadMain; -import de.tobias.playpad.Strings; import de.tobias.playpad.action.Mapping; import de.tobias.playpad.action.cartaction.CartAction; import de.tobias.playpad.action.connect.CartActionConnect; @@ -13,13 +12,11 @@ import de.tobias.playpad.project.Project; import de.tobias.playpad.project.ProjectSettings; import de.tobias.playpad.viewcontroller.IMappingTabViewController; import de.tobias.utils.ui.ContentViewController; -import de.tobias.utils.util.Localization; import javafx.fxml.FXML; import javafx.scene.control.ToggleButton; import javafx.scene.control.ToggleGroup; import javafx.scene.layout.ColumnConstraints; import javafx.scene.layout.GridPane; -import javafx.scene.layout.HBox; import javafx.scene.layout.Priority; import javafx.scene.layout.RowConstraints; import javafx.scene.layout.VBox; @@ -36,7 +33,6 @@ import javafx.scene.layout.VBox; public class CartActionsViewController extends ContentViewController { @FXML private VBox buttonVbox; - @FXML private HBox pageHbox; private ToggleGroup cartsToggle; @FXML private GridPane gridPane; @@ -56,21 +52,6 @@ public class CartActionsViewController extends ContentViewController { showCartButtons(settings, 0); VBox.setVgrow(gridPane, Priority.ALWAYS); - - SegmentedButton segmentedButton = new SegmentedButton(); - for (int i = 0; i < settings.getPageCount(); i++) { - ToggleButton button = new ToggleButton(Localization.getString(Strings.UI_Window_Main_PageButton, i + 1)); - button.setOnAction(e -> - { - int page = Integer.valueOf(((ToggleButton) e.getSource()).getUserData().toString()); - showCartButtons(settings, page); - }); - button.setUserData(i); - segmentedButton.getButtons().add(button); - } - segmentedButton.getStyleClass().add(SegmentedButton.STYLE_CLASS_DARK); - pageHbox.getChildren().add(segmentedButton); - segmentedButton.getButtons().get(0).setSelected(true); // Select First Toggle } @Override diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/SettingsViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/ProfileSettingsViewController.java similarity index 95% rename from PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/SettingsViewController.java rename to PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/ProfileSettingsViewController.java index 760d8c50be1e1ff894b88e426a48eeb9f7fcd70f..e24d1316bf4a65ef2549a4f37374007e1c24291f 100644 --- a/PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/SettingsViewController.java +++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/ProfileSettingsViewController.java @@ -28,7 +28,7 @@ import javafx.stage.Screen; import javafx.stage.Stage; import javafx.stage.Window; -public class SettingsViewController extends ViewController implements IProfileSettingsViewController { +public class ProfileSettingsViewController extends ViewController implements IProfileSettingsViewController { @FXML private TabPane tabPane; @FXML private ToggleButton lockedButton; @@ -38,7 +38,7 @@ public class SettingsViewController extends ViewController implements IProfileSe private Runnable onFinish; - public SettingsViewController(Midi midiHandler, Screen currentScreen, Window owner, Project project, Runnable onFinish) { + public ProfileSettingsViewController(Midi midiHandler, Screen currentScreen, Window owner, Project project, Runnable onFinish) { super("settingsView", "de/tobias/playpad/assets/view/option/profile/", null, PlayPadMain.getUiResourceBundle()); this.onFinish = onFinish; diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/option/project/ProjectSettingsViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/option/project/ProjectSettingsViewController.java index 8787a0bb0a2eb2ec93ed72bba20b51d6997c1430..455df6387579b36758fa7a28dc6cbf4a5ed3ae4d 100644 --- a/PlayWall/src/de/tobias/playpad/viewcontroller/option/project/ProjectSettingsViewController.java +++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/project/ProjectSettingsViewController.java @@ -5,6 +5,7 @@ import java.util.List; import de.tobias.playpad.PlayPadMain; import de.tobias.playpad.Strings; +import de.tobias.playpad.project.Project; import de.tobias.playpad.project.ProjectSettings; import de.tobias.playpad.settings.Profile; import de.tobias.playpad.viewcontroller.option.IProjectSettingsViewController; @@ -17,6 +18,7 @@ import javafx.scene.control.Button; import javafx.scene.control.Tab; import javafx.scene.control.TabPane; import javafx.scene.control.ToggleButton; +import javafx.stage.Screen; import javafx.stage.Stage; import javafx.stage.Window; @@ -31,12 +33,15 @@ public class ProjectSettingsViewController extends ViewController implements IPr private Runnable onFinish; - public ProjectSettingsViewController(Window owner, ProjectSettings settings, Runnable onFinish) { + public ProjectSettingsViewController(Screen currentScreen, Window owner, Project project, Runnable onFinish) { super("projectSettingsView", "de/tobias/playpad/assets/view/option/project/", null, PlayPadMain.getUiResourceBundle()); this.onFinish = onFinish; - this.settings = settings; + this.settings = project.getSettings(); getStage().initOwner(owner); + boolean activePlayer = project.hasPlayedPlayers(); + + addTab(new GeneralTabViewController(currentScreen, this, activePlayer)); // Show Current Settings loadTabs(settings); diff --git a/PlayWallCore/src/de/tobias/playpad/project/ProjectSettings.java b/PlayWallCore/src/de/tobias/playpad/project/ProjectSettings.java index 64dd0940888b32c78b061ce00b87180a785708d4..36bff9faf9d91baac19e74b26be963bf73a742b9 100644 --- a/PlayWallCore/src/de/tobias/playpad/project/ProjectSettings.java +++ b/PlayWallCore/src/de/tobias/playpad/project/ProjectSettings.java @@ -43,10 +43,14 @@ public class ProjectSettings { } public void setColumns(int columns) { + if (columns > MAX_COLUMNS) + columns = MAX_COLUMNS; this.columns = columns; } public void setRows(int rows) { + if (rows > MAX_ROWS) + rows = MAX_ROWS; this.rows = rows; } diff --git a/PlayWallCore/src/de/tobias/playpad/settings/keys/Key.java b/PlayWallCore/src/de/tobias/playpad/settings/keys/Key.java index bb8111f0867057b8bde2f400120c5effc66c1df7..da58fd57101aaad3bffefe01a6134597289b20da 100644 --- a/PlayWallCore/src/de/tobias/playpad/settings/keys/Key.java +++ b/PlayWallCore/src/de/tobias/playpad/settings/keys/Key.java @@ -1,9 +1,9 @@ package de.tobias.playpad.settings.keys; import de.tobias.playpad.Displayable; -import de.tobias.utils.util.OS; import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.StringProperty; +import javafx.scene.input.KeyCombination; public class Key implements Displayable { @@ -105,12 +105,10 @@ public class Key implements Displayable { @Override public String toString() { - if (OS.isMacOS()) { - return getKeyCode().replace("meta", String.valueOf((char) 8984)).replace("shift", String.valueOf((char) 8679)) - .replace("ctrl", String.valueOf((char) 8963)).replace("alt", String.valueOf((char) 8997)); - } else { - return getKeyCode(); - } + if (!getKeyCode().isEmpty()) + return KeyCombination.valueOf(getKeyCode()).getDisplayText(); + else + return ""; } private StringProperty displayProperty = new SimpleStringProperty();