我在一个多页编辑器上工作,加载打开多个文件(例如java,html)在一个多页编辑器的单独选项卡中。文件将使用与文件类型关联的默认编辑器打开,这些默认编辑器作为选项卡嵌入到多页编辑器中。
下面是我决定加载哪个编辑器的方法(对于文件类型):
void createPage() throws PartInitException
{
// get editor registry
IEditorRegistry editorRegistry = Activator.getDefault().getWorkbench().getEditorRegistry();
// loop through mappings until the extension matches.
IEditorDescriptor editorDescriptor = editorRegistry.getDefaultEditor(((IFileEditorInput)getEditorInput()).getFile().getName());
// if no editor was found that is associated to the file extension
if (editorDescriptor == null)
{
IEditorRegistry registry = Activator.getDefault().getWorkbench().getEditorRegistry();
editorDescriptor = registry.findEditor(EditorsUI.DEFAULT_TEXT_EDITOR_ID);
}
IConfigurationElement configuration = ((EditorDescriptor) editorDescriptor).getConfigurationElement();
String className = configuration.getAttribute("class");
IEditorPart editor;
try
{
editor = (IEditorPart) WorkbenchPlugin.createExtension(configuration, "class");
} catch (CoreException e) {
throw new RuntimeException(e);
}
final int index = addPage(editor, getEditorInput());
setPageText(index, "TAB_NAME");
}创建多选项卡编辑器时没有任何问题,并且在选项卡中加载了正确的编辑器。
但是,当加载到选项卡中时,“标记实例”功能在Java编辑器中不起作用。
我验证了标记出现已打开。当我在多页编辑器选项卡中的java编辑器中选择一个变量时,它不会突出显示该变量的其他实例。但是,如果我同时在我的多标签编辑器和单独的java编辑器中打开该文件,并且在单独的java编辑器中选择一个变量,它将突出显示单独的java编辑器以及嵌入在我的多页编辑器中的java编辑器中的其它事件。因此,该功能似乎是启用并加载的,只是当在嵌入式编辑器中进行选择时,它不会执行标记出现功能。
需要进行哪些更改才能在嵌入到我的多选项卡编辑器中的java编辑器中使用标记出现功能?
我的理解是Mark is是一个中心服务,所以我假设我错过了在编辑器中选择某些内容时更新此服务的部分。你知道需要做些什么才能更新服务吗?
注意:只有当java编辑器嵌入到多页编辑器中时,才会出现这个问题。
发布于 2010-07-23 04:42:19
这个功能内置于org.eclipse.jdt.ui的org.eclipse.jdt.internal.ui.javaeditor.JavaEditor中,因为它是一个内部类。但是,您可以忽略它并子类化它。
org.eclipse.jdt.internal.ui.javaeditor.ToggleMarkOccurrencesAction将适用于所有打开的JavaEditors (尝试使用标准CompilationUnitEditor打开同一个类两次,您将看到两个“标记实例”标记)。
这是因为在JavaPlugin的PreferenceStore中设置了一个中心属性PreferenceConstants.EDITOR_MARK_OCCURRENCES。
为了显示ToggleMarkOccurrencesAction按钮,您需要提供一个IEditorActionBarContributor (查看org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditorActionContributor)
https://stackoverflow.com/questions/3309965
复制相似问题