Редактор HTML с Java и Webkit - Браузер SWT

Я хочу добавить WYSIWYG HTML-редактор в свою программу Java.
моя идея - сделать что-то вроде это но не с python - с Java.

я знаю пару опций и их проблемы:

  • HTMLEditorKit - недостаточно сложный.
  • JWebpane - сказка.
  • QtWebKit ] - не с открытым исходным кодом.
  • JWebEngine - не с открытым исходным кодом.
  • metaphaseeditor - к простому.
  • Проект Lobo - не поддерживает атрибут contenteditable.
  • JavaXPCOM - Мне не удалось использовать его на моем Mac OS X 10.6.
    В любом случае, я просто предпочитаю не использовать его, потому что Gecko медленнее, чем webkit.

Таким образом я решил работать с Browser Object из org.eclipse.swt.browser Package.

На данный момент у меня есть следующий код:
Код сначала создает экземпляр объекта браузера.
После этого загружается HTML-страница с атрибутами contenteditable = 'true' в теге тела.
Если он загружает страницу, он должен добавить атрибуты contenteditable = 'true' к тегу body, а при сохранении страницы он должен удалить его.

Мои вопросы:

  • Как мне взять отредактированный HTML-код?
  • Как узнать, наступил ли курсор?
  • Как узнать, выделен ли какой-то текст?

Или, в общем:

  • Как мне составить слово обладатель с объектами браузера и атрибутами ontenteditable = 'true'?
  • возможно ли?
  • это правильный способ для WYSIWYG HTML-редактора в Java?
  • Есть примеры?
    Я уже проверял SWT фрагменты - не очень помогает.

Большое спасибо.

import org.eclipse.swt.SWT;
import org.eclipse.swt.SWTError;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class editor {
 public static void main(String [] args) {
   String html = "Editor"
       + ""
       + " 

All the Page is ditable!!!!!

" + "

Heres a typical paragraph element

" + "
  1. and now a list
  2. " + "
  3. with only
  4. " + "
  5. three items
  6. " + "
"; Display display = new Display(); Shell shell = new Shell(display); shell.setLayout(new FillLayout()); final Browser browser; try { browser = new Browser(shell, SWT.BORDER); } catch (SWTError e) { System.out.println(e.getMessage()); display.dispose(); return; } Composite comp = new Composite(shell, SWT.NONE); comp.setLayout(new FillLayout(SWT.ALL)); browser.setText(html); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); } }

7
задан Michael Eakins 8 November 2010 в 13:01
поделиться