From c7dcac4bd6287ebd0f08c1b2954ee4c7dc495b78 Mon Sep 17 00:00:00 2001 From: plata Date: Wed, 27 Jan 2021 17:19:38 +0100 Subject: [PATCH 1/3] Improve error message when trying to create shortcut to executable outside container --- .../library/control/LibraryFeaturePanel.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/phoenicis-javafx/src/main/java/org/phoenicis/javafx/components/library/control/LibraryFeaturePanel.java b/phoenicis-javafx/src/main/java/org/phoenicis/javafx/components/library/control/LibraryFeaturePanel.java index cf12ec07fb1..670f37ffa50 100644 --- a/phoenicis-javafx/src/main/java/org/phoenicis/javafx/components/library/control/LibraryFeaturePanel.java +++ b/phoenicis-javafx/src/main/java/org/phoenicis/javafx/components/library/control/LibraryFeaturePanel.java @@ -146,6 +146,17 @@ public void createShortcut(ShortcutCreationDTO shortcutCreationDTO) { // get container // TODO: smarter way using container manager final String executablePath = shortcutCreationDTO.getExecutable().getAbsolutePath(); + if (!executablePath.startsWith(getContainersPath())) { + Platform.runLater(() -> { + final ErrorDialog errorDialog = ErrorDialog.builder() + .withMessage(tr("Creating shortcut to executable outside of a container is not supported")) + .withOwner(getScene().getWindow()) + .build(); + + errorDialog.showAndWait(); + }); + return; + } final String pathInContainers = executablePath.replace(getContainersPath(), ""); final String[] split = pathInContainers.split("/"); final String engineContainer = split[0]; @@ -156,11 +167,13 @@ public void createShortcut(ShortcutCreationDTO shortcutCreationDTO) { final InteractiveScriptSession interactiveScriptSession = getScriptInterpreter().createInteractiveSession(); - final String scriptInclude = "const Shortcut = include(\"engines." + engineId + ".shortcuts." + engineId - + "\");"; + final String scriptInclude = ""; interactiveScriptSession.eval(scriptInclude, - ignored -> interactiveScriptSession.eval("new Shortcut()", + ignored -> interactiveScriptSession.eval( + "const Shortcut = include(\"engines." + engineId + ".shortcuts." + engineId + + "\");" + + "new Shortcut()", output -> { final Value shortcutObject = (Value) output; From c3d58b5aecb18161fb108f5007c96d94de99bbdf Mon Sep 17 00:00:00 2001 From: plata Date: Wed, 27 Jan 2021 17:22:00 +0100 Subject: [PATCH 2/3] Remove debug code --- .../components/library/control/LibraryFeaturePanel.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/phoenicis-javafx/src/main/java/org/phoenicis/javafx/components/library/control/LibraryFeaturePanel.java b/phoenicis-javafx/src/main/java/org/phoenicis/javafx/components/library/control/LibraryFeaturePanel.java index 670f37ffa50..59bdaa319d5 100644 --- a/phoenicis-javafx/src/main/java/org/phoenicis/javafx/components/library/control/LibraryFeaturePanel.java +++ b/phoenicis-javafx/src/main/java/org/phoenicis/javafx/components/library/control/LibraryFeaturePanel.java @@ -167,13 +167,11 @@ public void createShortcut(ShortcutCreationDTO shortcutCreationDTO) { final InteractiveScriptSession interactiveScriptSession = getScriptInterpreter().createInteractiveSession(); - final String scriptInclude = ""; + final String scriptInclude = "const Shortcut = include(\"engines." + engineId + ".shortcuts." + engineId + + "\");"; interactiveScriptSession.eval(scriptInclude, - ignored -> interactiveScriptSession.eval( - "const Shortcut = include(\"engines." + engineId + ".shortcuts." + engineId - + "\");" + - "new Shortcut()", + ignored -> interactiveScriptSession.eval("new Shortcut()", output -> { final Value shortcutObject = (Value) output; From 484a7a6b3ecca383dd6e76586870dbc949feebc6 Mon Sep 17 00:00:00 2001 From: plata Date: Wed, 7 Apr 2021 16:28:55 +0200 Subject: [PATCH 3/3] Use if ... else --- .../library/control/LibraryFeaturePanel.java | 90 +++++++++---------- 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/phoenicis-javafx/src/main/java/org/phoenicis/javafx/components/library/control/LibraryFeaturePanel.java b/phoenicis-javafx/src/main/java/org/phoenicis/javafx/components/library/control/LibraryFeaturePanel.java index 59bdaa319d5..b696d86f267 100644 --- a/phoenicis-javafx/src/main/java/org/phoenicis/javafx/components/library/control/LibraryFeaturePanel.java +++ b/phoenicis-javafx/src/main/java/org/phoenicis/javafx/components/library/control/LibraryFeaturePanel.java @@ -155,52 +155,52 @@ public void createShortcut(ShortcutCreationDTO shortcutCreationDTO) { errorDialog.showAndWait(); }); - return; + } else { + final String pathInContainers = executablePath.replace(getContainersPath(), ""); + final String[] split = pathInContainers.split("/"); + final String engineContainer = split[0]; + final String engine = StringUtils.capitalize(engineContainer).replace("prefix", ""); + // TODO: better way to get engine ID + final String engineId = engine.toLowerCase(); + final String container = split[1]; + + final InteractiveScriptSession interactiveScriptSession = getScriptInterpreter().createInteractiveSession(); + + final String scriptInclude = "const Shortcut = include(\"engines." + engineId + ".shortcuts." + engineId + + "\");"; + + interactiveScriptSession.eval(scriptInclude, + ignored -> interactiveScriptSession.eval("new Shortcut()", + output -> { + final Value shortcutObject = (Value) output; + + shortcutObject.invokeMember("name", shortcutCreationDTO.getName()); + shortcutObject.invokeMember("category", shortcutCreationDTO.getCategory()); + shortcutObject.invokeMember("description", shortcutCreationDTO.getDescription()); + shortcutObject.invokeMember("miniature", shortcutCreationDTO.getMiniature()); + shortcutObject.invokeMember("search", shortcutCreationDTO.getExecutable().getName()); + shortcutObject.invokeMember("prefix", container); + shortcutObject.invokeMember("create"); + }, + e -> Platform.runLater(() -> { + final ErrorDialog errorDialog = ErrorDialog.builder() + .withMessage(tr("Error while creating shortcut")) + .withException(e) + .withOwner(getScene().getWindow()) + .build(); + + errorDialog.showAndWait(); + })), + e -> Platform.runLater(() -> { + final ErrorDialog errorDialog = ErrorDialog.builder() + .withMessage(tr("Error while creating shortcut")) + .withException(e) + .withOwner(getScene().getWindow()) + .build(); + + errorDialog.showAndWait(); + })); } - final String pathInContainers = executablePath.replace(getContainersPath(), ""); - final String[] split = pathInContainers.split("/"); - final String engineContainer = split[0]; - final String engine = StringUtils.capitalize(engineContainer).replace("prefix", ""); - // TODO: better way to get engine ID - final String engineId = engine.toLowerCase(); - final String container = split[1]; - - final InteractiveScriptSession interactiveScriptSession = getScriptInterpreter().createInteractiveSession(); - - final String scriptInclude = "const Shortcut = include(\"engines." + engineId + ".shortcuts." + engineId - + "\");"; - - interactiveScriptSession.eval(scriptInclude, - ignored -> interactiveScriptSession.eval("new Shortcut()", - output -> { - final Value shortcutObject = (Value) output; - - shortcutObject.invokeMember("name", shortcutCreationDTO.getName()); - shortcutObject.invokeMember("category", shortcutCreationDTO.getCategory()); - shortcutObject.invokeMember("description", shortcutCreationDTO.getDescription()); - shortcutObject.invokeMember("miniature", shortcutCreationDTO.getMiniature()); - shortcutObject.invokeMember("search", shortcutCreationDTO.getExecutable().getName()); - shortcutObject.invokeMember("prefix", container); - shortcutObject.invokeMember("create"); - }, - e -> Platform.runLater(() -> { - final ErrorDialog errorDialog = ErrorDialog.builder() - .withMessage(tr("Error while creating shortcut")) - .withException(e) - .withOwner(getScene().getWindow()) - .build(); - - errorDialog.showAndWait(); - })), - e -> Platform.runLater(() -> { - final ErrorDialog errorDialog = ErrorDialog.builder() - .withMessage(tr("Error while creating shortcut")) - .withException(e) - .withOwner(getScene().getWindow()) - .build(); - - errorDialog.showAndWait(); - })); } /**