искам да добавя WYSIWYG HTML редактор към моята Java програма.
идеята ми е да направя нещо като това, но не с python - с Java.
знам за няколко опции и техните проблеми:
- HTMLEditorKit - не е достатъчно сложен.
- JWebpane - приказка.
- QtWebKit - не е с отворен код.
- JWebEngine - не е с отворен код.
- metaphaseeditor - до просто.
- The Lobo Project - не поддържа атрибута contenteditable.
- JavaXPCOM - Не успявам да го работя на моя mac OS X 10.6.
Както и да е, просто предпочитам да не го използвам, защото Gecko е по-бавен от webkit.
По този начин избрах да работя с Обект на браузър от пакета org.eclipse.swt.browser.
Засега имам кода по-долу:
Кодът, първо създава екземпляр на обекта на браузъра.
След това той зарежда HTML страница с contenteditable='true'
атрибути на маркера body.
Ако зареди страница, трябва да добави contenteditable='true'
атрибути към маркера body и когато запази страницата, трябва да я премахне.
Въпросите ми са:
- Как да взема редактирания HTML код?
- Как да разбера къде е стъпил курсорът?
- Как да разбера дали някакъв текст е маркиран?
Или по принцип:
- Как да създам дума притежател с Browser Object и 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 = "<html><title>Editor</title>"
+ "<body contenteditable='true'>"
+ " <h2>All the Page is ditable!!!!!</h2>"
+ "<p>Heres a typical paragraph element</p>"
+ "<ol><li>and now a list</li>"
+ "<li>with only</li>"
+ "<li>three items</li>"
+ "</ol></body></html>";
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();
}
}