public static void launchCordovaSim(List<String> parameters) {
    Activator.getDefault().countLaunchEvent();
    IVMInstall jvm = BrowserSimLauncher.getSelectedVM();
    if (jvm == null) { // no suitable vm
      ExternalProcessLauncher.showErrorDialog(Messages.CordovaSimLauncher_CORDOVASIM);
    } else {
      String jvmPath = jvm.getInstallLocation().getAbsolutePath();
      String jrePath =
          jvm.getInstallLocation().getAbsolutePath() + File.separator + "jre"; // $NON-NLS-1$

      List<String> bundles = getBundles();

      if (!ExternalProcessLauncher.isGTK2()
          || (!JavaFXUtil.isJavaFXAvailable(jvmPath) && !JavaFXUtil.isJavaFXAvailable(jrePath))) {
        bundles.add("org.jboss.tools.browsersim.javafx.mock"); // $NON-NLS-1$
      }

      ExternalProcessLauncher.launchAsExternalProcess(
          bundles,
          RESOURCES_BUNDLES,
          getJettyBundles(),
          CORDOVASIM_CALLBACKS,
          CORDOVASIM_CLASS_NAME,
          parameters,
          Messages.CordovaSimLauncher_CORDOVASIM,
          jvm);
    }
  }
  public static List<String> getBundles() {
    List<String> bundles = BrowserSimLauncher.getBundles();
    bundles.addAll(
        Arrays.asList(
            "org.jboss.tools.cordovasim", //$NON-NLS-1$
            "org.jboss.tools.cordovasim.ripple" //$NON-NLS-1$
            ));

    return bundles;
  }
  public static List<String> getJettyBundles() {
    List<String> bundles = BrowserSimLauncher.getJettyBundles();
    bundles.addAll(
        Arrays.asList(
            "org.eclipse.jetty.client", //$NON-NLS-1$
            "org.eclipse.jetty.servlets", //$NON-NLS-1$
            "org.eclipse.jetty.rewrite" //$NON-NLS-1$
            ));

    return bundles;
  }