@@ -158,13 +158,51 @@ public Logger logger() {
158158 }
159159 final Engine engine = engineRef .get ();
160160 if (engine == null ) {
161- showMessageWithUrlLink ("JX Browser engine failed to start" , contentManager );
161+ showMessageWithUrlLink (jxBrowserErrorMessage () , contentManager );
162162 return null ;
163163 } else {
164164 return new EmbeddedJxBrowserTab (engine );
165165 }
166166 }
167167
168+ private @ NotNull String jxBrowserErrorMessage () {
169+ final String defaultError = "JX Browser engine failed to start" ;
170+ if (jxBrowserManager == null ) {
171+ return defaultError ;
172+ }
173+ switch (jxBrowserManager .getStatus ()) {
174+ case NOT_INSTALLED :
175+ return "JX Browser is not installed" ;
176+ case INSTALLATION_IN_PROGRESS :
177+ return "JX Browser installation in progress" ;
178+ case INSTALLATION_SKIPPED :
179+ return "JX Browser installation skipped" ;
180+ case INSTALLATION_FAILED :
181+ final InstallationFailedReason failedReason = jxBrowserManager .getLatestFailureReason ();
182+ final @ Nullable String errorFromFailedMessage = jxBrowserErrorFromFailedReason (failedReason );
183+ return errorFromFailedMessage != null ? errorFromFailedMessage : defaultError ;
184+ default :
185+ return defaultError ;
186+ }
187+ }
188+
189+ private @ Nullable String jxBrowserErrorFromFailedReason (@ Nullable InstallationFailedReason failedReason ) {
190+ if (failedReason == null ) return null ;
191+ final FailureType failureType = failedReason .failureType ;
192+ if (failureType == null ) return null ;
193+ return switch (failureType ) {
194+ case SYSTEM_INCOMPATIBLE -> "System is incompatible with JX Browser" ;
195+ case FILE_DOWNLOAD_FAILED -> "JX Browser file download failed" ;
196+ case MISSING_KEY -> "JX Browser license key is missing" ;
197+ case DIRECTORY_CREATION_FAILED -> "JX Browser directory creation failed" ;
198+ case MISSING_PLATFORM_FILES -> "JX Browser platform files are missing" ;
199+ case CLASS_LOAD_FAILED -> "JX Browser class load failed" ;
200+ case CLASS_NOT_FOUND -> "JX Browser class not found" ;
201+ default -> null ;
202+ };
203+
204+ }
205+
168206 private void manageJxBrowserDownload (ContentManager contentManager ) {
169207 final JxBrowserStatus jxBrowserStatus = jxBrowserManager .getStatus ();
170208
0 commit comments