我正在使用的 Eclipse 插件有点问题。在这个插件中,通常以编程方式打开一种特殊类型的插件专用编辑器;这是由各种视图/编辑器中的各种操作触发的,但打开编辑器的代码是相同的。特定于插件的编辑器可以正常打开;但是,我最近注意到每次打开这些编辑器中的一个时,都会发生奇怪的焦点故障:
打开编辑器时,它似乎获得焦点,但如果在此之后立即单击先前活动的视图/编辑器,它不会收回焦点。只要单击先前活动的视图/编辑器以外的任何内容,问题就会立即解决,并且焦点会正常恢复。
例如,假设您从 Package Explorer 视图中选择了一个上下文菜单选项,这会导致打开一个编辑器。编辑器正确打开并且似乎有焦点。在此之后,您首先再次单击 Package Explorer,但它没有获得焦点(编辑器似乎仍然有焦点)。您右键单击 Package Explorer,但不会出现 Package Explorer 特定的上下文菜单项。在此之后,单击其他视图,然后再次单击 Package Explorer。现在包资源管理器像往常一样获得焦点。
这是我用来打开编辑器的代码:
IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
final GraphEditorPart gp = (GraphEditorPart) page.openEditor(new NullEditorInput(), "editor.id");
在此之后,编辑器通过 albireo SWT-AWT 桥填充了一些视觉效果(不确定这是否与问题相关——用于主编辑器元素的类是 org.eclipse.albireo.core.SwingControl)。
我认为问题可能是编辑器没有“真正”获得焦点,或者之前的活动视图没有“真正”失去焦点,所以我尝试添加以下行:
page.activate(gp);
然而,这似乎并没有改变任何东西。为什么会发生这种情况?