2012-03-07 3 views
2

Dans mon projet JavaFX, j'essaie d'intégrer l'éditeur TinyMCE en tant qu'éditeur de texte riche HTML via WebView. Voici une application de démonstration:Comment charger TinyMCE Editor via WebView dans un pot?

package tinydemo; 

import javafx.application.Application; 
import javafx.scene.Scene; 
import javafx.scene.layout.StackPane; 
import javafx.scene.web.WebView; 
import javafx.stage.Stage; 

public class TinyDemo extends Application { 

    public static void main(String[] args) { 
     launch(args); 
    } 

    @Override 
    public void start(Stage primaryStage) { 
     primaryStage.setTitle("Demo"); 
     WebView webView = new WebView(); 
     webView.getEngine().load(TinyDemo.class.getResource("simple.html").toExternalForm()); 
     StackPane root = new StackPane(); 
     root.getChildren().add(webView); 
     primaryStage.setScene(new Scene(root, 500, 400)); 
     primaryStage.show(); 
    } 
} 

J'utilise NetBeans IDE, le point de vue du package est:

package

Le contenu de simple.html:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>Simple theme example</title> 
     <script type='text/javascript' src='jquery-1.5.2.min.js'></script> 
     <script type="text/javascript" src="tiny_mce/tiny_mce.js"></script> 
     <script type="text/javascript"> 
      $(document).ready(function() { 
       var wewe = document.getElementById('wewe'); 
       wewe.innerHTML += '<br/>protocol: '+ document.location.protocol; 
       tinyMCE.init({ 
        mode : "textareas", 
        theme : "simple" 
       }); 
      }); 
     </script> 
    </head> 
    <body> 

     <div id="wewe"></div> 
     <h3>Simple theme example</h3> 
     <textarea id="elm1" name="elm1" rows="15" cols="80" style="width: 80%"> 
       This is some example text that you can edit inside the &lt;strong&gt;TinyMCE editor&lt;/strong&gt;. 
     </textarea> 
     <script type="text/javascript"> 
      if (document.location.protocol == 'file:') { 
       alert("The examples might not work properly on the local file system due to security settings in your browser. Please use a real webserver."); 
      } 
     </script> 
    </body> 
</html> 

Maintenant, quand je lance l'application de Netbeans, l'éditeur TinyMCE se charge successivement avec le protocole de fichier détecté.

build

Cependant, quand je lance le produit TinyDemo.jar de la ligne de commande dans le dossier dist, je reçois ceci:

jar

Où éditeur TinyMCE a échoué charger. Je pense que le problème est des références de chemin absolu/relatif de TinyMCE dans le jar, mais n'a pas pu le résoudre. Toute aide est appréciée. Merci.

Répondre

3

Selon ce forum discussion thread chargement de ressources relatives ne fonctionne actuellement correctement que dans le 2.1 developer preview de JavaFX et pas dans la version 2.0GA. Si, après la mise à niveau vers la version d'aperçu 2.1 de JavaFX, le chargement de ressources à partir d'un pot ne fonctionne toujours pas, vous pouvez déployer TinyMCE sur le classpath mais à l'extérieur du fichier jar afin qu'il soit chargé (par exemple) le fichier ou protcols http plutôt que le protocole jar. Vous pouvez également développer un gestionnaire de protocole personnalisé qui charge les ressources du fichier jar comme indiqué dans le thread référencé.

+0

Tout d'abord, merci ** jewelsea ** pour des suggestions. J'ai essayé avec la version 2.1 aperçu de dev sans la chance. Puisque ne pouvait pas déterminer exactement où est un problème, ne peut pas imaginer quoi écrire dans un gestionnaire de protocole personnalisé. Cependant, j'ai résolu mon problème en remplaçant le TinyMCE par un éditeur HTML plus léger. –

+0

Génial, vous avez réussi à faire fonctionner Uluk. Si vous avez besoin d'un autre exemple pour intégrer un éditeur, vous pouvez voir [embeding code mirror in JavaFX] (http://jewelsea.wordpress.com/2011/12/11/codemirror-based-code-editor-for-javafx/), bien que ce soit pour un éditeur de code mettant en évidence la syntaxe et pas un éditeur html directement. JavaFX possède également un [éditeur HTML] intégré (http://docs.oracle.com/javafx/2.0/api/javafx/scene/web/HTMLEditor.html) qui, je présume, ne correspondait pas à vos besoins. – jewelsea

+0

Basé sur mes tests avec JavaFX version 2.2, j'étais également incapable de l'obtenir pour charger tinyMCE dans un fichier jar. Je soupçonne qu'il peut y avoir quelque chose dans tinyMCE qui l'empêche de fonctionner. Ma "solution" était de ne pas mettre le code tinyMCE dans un pot. – Avrom

Questions connexes