private void showErrorPage(Throwable e) {
    if (e != null) {
      LOG.info(e);
    }

    removeSceneBuilder();

    if (JavaVersion.current().feature > 11 &&
        e instanceof NoClassDefFoundError &&
        !SceneBuilderUtil.getSceneBuilder11Path().toFile().isFile()) {
      myErrorLabel.addHyperlinkListener(e1 -> {
        DownloadableFileService service = DownloadableFileService.getInstance();
        DownloadableFileDescription
          description = service.createFileDescription("https://cache-redirector.jetbrains.com/" +
                                                      "intellij-dependencies/org/jetbrains/intellij/deps/scenebuilderkit/" +
                                                      SceneBuilderUtil.SCENE_BUILDER_VERSION + "/" + SceneBuilderUtil.SCENE_BUILDER_KIT_FULL_NAME,
                                                      SceneBuilderUtil.SCENE_BUILDER_KIT_FULL_NAME);
        FileDownloader downloader = service.createDownloader(Collections.singletonList(description), "Scene Builder Kit");
        try {
          Path tempDir = Files.createTempDirectory("" );

          List<Pair<VirtualFile, DownloadableFileDescription>>
            list = downloader.downloadWithProgress(tempDir.toString(), myProject, myErrorPanel);
          if (list == null || list.isEmpty()) {
            myErrorLabel.setHyperlinkText(JavaFXBundle.message("javafx.scene.builder.editor.failed.to.download.kit.error"), "", "");
            setErrorIcon();
            return;
          }

          FileUtil.copy(VfsUtilCore.virtualToIoFile(list.get(0).first), SceneBuilderUtil.getSceneBuilder11Path().toFile());
          FileUtil.delete(tempDir.toFile());

          SceneBuilderUtil.updateLoader();
          updateState();
        }
        catch (IOException e2) {
          LOG.warn("Can't download SceneBuilderKit", e2);
         }
      });
      myErrorLabel.setHyperlinkText(JavaFXBundle.message("javafx.scene.builder.editor.failed.to.open.file.error"),
                                    JavaFXBundle.message("javafx.scene.builder.editor.download.scene.builder.kit"), "");
      setErrorIcon();
      myLayout.show(myPanel, ERROR_CARD);
      return;
    }
    if (JavaVersion.current().feature > 11) {
      try {
        Class.forName(JavaFxCommonNames.JAVAFX_SCENE_NODE);
      }
      catch (ClassNotFoundException exception) {
        myErrorLabel.addHyperlinkListener(e1 -> {
          downloadJavaFxDependencies();
        });
        myErrorLabel.setHyperlinkText(JavaFXBundle.message("javafx.scene.builder.editor.failed.to.open.file.error"),
                                      JavaFXBundle.message("javafx.scene.builder.editor.download.javafx"), "");
        setErrorIcon();
        myLayout.show(myPanel, ERROR_CARD);
        return;
      }
    }

    final String description;
    if (e != null) {
      final List<String> messages = new ArrayList<>();
      for (Throwable t = e; t != null && t != t.getCause(); t = t.getCause()) {
        final String message = getErrorMessage(t);
        if (messages.isEmpty() || !messages.get(messages.size() - 1).contains(message)) {
          messages.add(message);
        }
        else {
          messages.set(messages.size() - 1, message);
        }
      }
      Collections.reverse(messages);
      description = "\n" + String.join("\n\n", messages);
    }
    else {
      description = "Unknown error occurred";
    }

    myErrorLabel.setHyperlinkText(JavaFXBundle.message("javafx.scene.builder.editor.failed.to.open.file.error"), "", "");
    setErrorIcon();
    myErrorStack.setText(description);
    myErrorStack.setVisible(true);
    myLayout.show(myPanel, ERROR_CARD);
  }
private void showErrorPage(Throwable e)