2013-07-30 6 views
1

Je travaille sur l'intégration d'un éditeur HTML basé sur JavaScript dans JavaFX WebView. (TinyMCE) L'une des fonctionnalités de cet éditeur est de faire apparaître un menu contextuel en cliquant avec le bouton droit de la souris. Cependant, lorsque cela est fait dans WebView, il affiche le propre menu contextuel de WebView.JavaFX WebView - Ouvrir le menu contextuel Javascript

Depuis la version 2.2, il existe une méthode appelée setContextMenuEnabled qui me permet de la désactiver. Mais quand je le fais, rien n'apparaît du tout.

Comment puis-je faire en sorte que cela fonctionne correctement?

Répondre

0

J'ai été capable de comprendre cela.

TinyMCE peut apparaitre le menu contextuel en utilisant le code JavaScript suivant:

editor.plugins.contextmenu._getMenu(editor).showMenu(x,y); 

editor est la référence à l'éditeur de TinyMCE donné (par exemple tinymce.currentEditor) et x, y sont les coordonnées relatives à la zone de contenu .

Un gestionnaire peut ensuite être ajouté à JavaFX WebView qui écoute les clics droits de la souris et le javascript peut ensuite être exécuté à partir de là.

view.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() 
      { 
       @Override 
       public void handle(MouseEvent event) 
       { 
        if (event.getButton() == MouseButton.SECONDARY) 
        { 
         JSObject jsObject = (JSObject) engine.executeScript(TINYMCE_EDITOR 
           + ".getContentAreaContainer().getBoundingClientRect()"); 
         int x = (Integer) jsObject.getMember("left"); 
         int y = (Integer) jsObject.getMember("top"); 
         y = (int) (event.getY() - y); 
         x = (int) (event.getX() - x); 
         System.out.println(x + ", " + y); 
         if (y >= 0 && x >= 0) 
          engine.executeScript(TINYMCE_EDITOR + ".plugins.contextmenu._getMenu(" + TINYMCE_EDITOR 
            + ").showMenu(" + x + "," + y + ")"); 
        } 
       } 
      }); 

Le reste du code tente de déterminer quelles sont les coordonnées x, y correctes.

0

Créez votre propre plugin qui gère les clics droits et affiche un petit menu contextuel. Avoir alook dans le code sopurce du plugin contextmenu livré avec tinymce. Vous pouvez utiliser la plus grande partie de son code pour cela et ne devez implémenter que les points de menu.

Questions connexes