Я смог понять это.
TinyMCE способен всплывающим контекстное меню, используя следующие JavaScript:
editor.plugins.contextmenu._getMenu(editor).showMenu(x,y);
Где editor
является ссылка на редактор данного TinyMCE (например tinymce.currentEditor
) и х, у координаты относительно области содержимого ,
Затем в JavaFX WebView можно добавить обработчик, который прослушивает правые щелчки мыши, и затем javascript будет выполнен оттуда.
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 + ")");
}
}
});
Остальная часть кода пытается выяснить, каковы правильные координаты x, y.