2013-07-30 4 views
1

Я работаю над интегрированием HTML-редактора на основе JavaScript в JavaFX WebView. (TinyMCE) Одной из особенностей этого редактора является всплывающее контекстное меню при нажатии правой кнопки мыши.JavaFX WebView - всплывающее контекстное меню Javascript

Однако, когда это делается в WebView, оно отображает собственное контекстное меню WebView.

Начиная с версии 2.2 существует метод под названием setContextMenuEnabled, который позволяет мне отключить его. Но когда я это делаю, ничего не всплывает.

Как я могу заставить это работать правильно?

ответ

0

Я смог понять это.

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.

0

Создайте свой собственный плагин, который обрабатывает щелчки правой кнопкой мыши и показывает небольшое всплывающее меню. Имейте alook в коде sopurce плагина contextmenu, поставляемого с tinymce. Вы можете использовать большую часть этого кода для этого, и вам нужно только реализовать пункты меню самостоятельно.

Смежные вопросы