From e6e1fe9f50397b3697712676d79d812fedd96aef Mon Sep 17 00:00:00 2001 From: Jan Eglinger Date: Mon, 13 May 2019 16:30:46 +0200 Subject: [PATCH] Safeguard against null style arg in UserInterface#chooseFile This fixes the issue reported by @kephale on the forum, where the absence of a style attribute on a File parameter leads to a NullPointerException: https://forum.image.sc/t/error-for-file-type-imagej2-parameter/25585 This commit is a quick fix, it should probably be rewritten when addressing issue #333 --- src/main/java/org/scijava/ui/UserInterface.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/scijava/ui/UserInterface.java b/src/main/java/org/scijava/ui/UserInterface.java index 385df24d8..6449960b7 100644 --- a/src/main/java/org/scijava/ui/UserInterface.java +++ b/src/main/java/org/scijava/ui/UserInterface.java @@ -162,9 +162,12 @@ DialogPrompt dialogPrompt(String message, String title, */ default File chooseFile(final File file, final String style) { final String title; - if (style.equals(FileWidget.DIRECTORY_STYLE)) title = "Choose a directory"; - else if (style.equals(FileWidget.OPEN_STYLE)) title = "Open"; - else if (style.equals(FileWidget.SAVE_STYLE)) title = "Save"; + // style can be a string with multiple comma-separated keywords + // TODO use a utility class for style handling, e.g. StyleUtils.isStyle(style, ...) + if (style == null) title = "Choose a file"; + else if (style.toLowerCase().contains(FileWidget.DIRECTORY_STYLE)) title = "Choose a directory"; + else if (style.toLowerCase().contains(FileWidget.OPEN_STYLE)) title = "Open"; + else if (style.toLowerCase().contains(FileWidget.SAVE_STYLE)) title = "Save"; else title = "Choose a file"; return chooseFile(title, file, style);