Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Eclipse编辑器插件开发-听撤销/重做_Java_Undo_Eclipse Plugin_Eclipse Pde - Fatal编程技术网

Java Eclipse编辑器插件开发-听撤销/重做

Java Eclipse编辑器插件开发-听撤销/重做,java,undo,eclipse-plugin,eclipse-pde,Java,Undo,Eclipse Plugin,Eclipse Pde,我正在开发一个eclipse插件,其中包含多页xml编辑器和其他实用工具。页数及其内容取决于作为文本编辑器的第一页。对于选项卡更新,我已经实现了updateTabs()方法。我想在用户执行撤消或重做操作以保持GUI与源代码同步时调用它。有没有可能“倾听”这种行动?为此,我的编辑器必须实现哪个接口?当文本编辑器的内容更改时,您肯定要调用updateTabs()?例如,当用户键入内容、删除、剪切、粘贴等时,GUI是否也应该更新?当他们撤销/重做一个动作时,所做的只是更改文本内容。这就是您要连接的事件

我正在开发一个eclipse插件,其中包含多页xml编辑器和其他实用工具。页数及其内容取决于作为文本编辑器的第一页。对于选项卡更新,我已经实现了
updateTabs()
方法。我想在用户执行撤消或重做操作以保持GUI与源代码同步时调用它。有没有可能“倾听”这种行动?为此,我的编辑器必须实现哪个接口?

当文本编辑器的内容更改时,您肯定要调用
updateTabs()
?例如,当用户键入内容、删除、剪切、粘贴等时,GUI是否也应该更新?当他们撤销/重做一个动作时,所做的只是更改文本内容。这就是您要连接的事件。您可以在提交给文本编辑器的
IDocument
上使用
IDocumentListener
来侦听对文本所做的所有更改。我不想在每次文本更改时更新选项卡。用户可能会在XML代码中添加或删除单个字符,这可能会导致文档的许多错误状态。这些不应该被解析。为此,我添加了一个工具栏按钮和一个按钮,允许用户在需要时刷新GUI。除此之外,GUI在切换页面上会自动刷新。不过问题已经解决了
org.eclipse.ui.editors.text.textdeditor
删除了一个脏状态,前提是用户取消了所有操作,文档变为初始状态。该行为阻止页面在切换时刷新。相反,使用
org.eclipse.wst.sse.ui.StructuredTextEditor
解决了这个问题,因为它不会在撤消更改时删除脏状态。