![](/img/trans.png)
[英]How to properly set the content of an IFile in Eclipse plugin when the editor is opened
[英]How to set seperate global action handler for multiple instance of eclipse form based plugin editor
我正在基于Eclipse表单的编辑器上工作。 我已经为编辑器提供了对撤消重做和脏标志的处理支持,这两个功能对于单个插件实例都可以正常工作。 当我用2个或更多文件(2个或更多eclipse插件实例)打开它时,问题就来了。 现在,撤消重做开始变得很奇怪。 它们仅适用于最后打开的实例。
例如:假设我的编辑器支持'.xeb'文件。 如果我用我的编辑器一个一个地打开test1.xeb和test2.xeb文件。 然后撤消重做仅适用于为test2.xeb文件打开的实例。 如果我切换回其他实例,则会出现第一个实例的撤消重做。
我在编辑器的plugin.xml中有以下条目:
<plugin><extension
point="org.eclipse.ui.editors">
<editor
class="Testeditor"
default="true"
extensions="xeb"
icon="icons/sample.gif"
id="testeditor"
name="editor">
</editor>
</plugin>
我调试了代码,发现这种奇怪的行为是由于以错误的方式处理全局动作而发生的。我使用下面的代码来设置全局动作处理程序:
public void setUndoRedoActionHandlers() {
final IActionBars actionBars = getEditorSite().getActionBars();
actionBars.setGlobalActionHandler(ActionFactory.UNDO.getId(),
mUndoAction);
actionBars.setGlobalActionHandler(ActionFactory.REDO.getId(),
mRedoAction);
actionBars.updateActionBars();
}
我浏览了一些与此问题有关的链接。 但无法理解实现此行为的概念。
http://wiki.eclipse.org/FAQ_How_do_I_find_out_what_view_or_editor_is_selected%3F
http://wiki.eclipse.org/FAQ_How_do_I_hook_into_global_actions,_such_as_Copy_and_Delete%3F
任何人都可以调查这个问题。 提前致谢。
仅在编辑器类中重写MultiPageEditorPart的setFocus()方法,并调用设置全局操作处理程序的适当方法,如下所示:
@Override
public void setFocus() {
switch (getActivePage()) {
case 0:
pageOne.setUndoRedoActionHandlers();
break;
case 1:
pageTwo.setUndoRedoActionHandlers();
break;
}
super.setFocus();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.