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);
Où 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.