我正在尝试创建一个嵌入 Java 编辑器/查看器的查看器。但是,我无法让源查看器执行正确的 Java 扫描和着色。这是我到目前为止的代码。
ScopedPreferenceStore store = new ScopedPreferenceStore(InstanceScope.INSTANCE,
ID);
JavaTextTools tools = new JavaTextTools(store);
Composite composite = new Composite(parent, SWT.NONE);
composite.setLayout(new GridLayout(1, false));
viewer = new SourceViewer(composite, null, null, false, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
viewer.getTextWidget().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
viewer.setEditable(true);
viewer.getControl().setFont(JFaceResources.getFont(PreferenceConstants.EDITOR_TEXT_FONT));
Document document = new Document();
tools.setupJavaDocumentPartitioner(document);
viewer.setDocument(document);
viewer.configure(new JavaSourceViewerConfiguration(tools.getColorManager(), store, null,
IJavaPartitions.JAVA_PARTITIONING));
只是嵌入一个简单的 Java 编辑器似乎是多么困难......无论我做什么,查看器都可以工作,但仍然没有任何着色。
SourceViewer
不是一个 Java 编辑器,而是一个用于为自定义语言创建源编辑器的类,如 Eclipse 文档中所述。
如果您只需要语法着色,那么使用
SourceViewer
并按照此处的描述自行实现语法着色可能会更容易。
另一个选项是使用 eclipse 中的实际 java 编辑器作为 greg-449 提到。
但预计会有大量代码。