Java Eclipse编辑器插件开发-听撤销/重做
我正在开发一个eclipse插件,其中包含多页xml编辑器和其他实用工具。页数及其内容取决于作为文本编辑器的第一页。对于选项卡更新,我已经实现了Java Eclipse编辑器插件开发-听撤销/重做,java,undo,eclipse-plugin,eclipse-pde,Java,Undo,Eclipse Plugin,Eclipse Pde,我正在开发一个eclipse插件,其中包含多页xml编辑器和其他实用工具。页数及其内容取决于作为文本编辑器的第一页。对于选项卡更新,我已经实现了updateTabs()方法。我想在用户执行撤消或重做操作以保持GUI与源代码同步时调用它。有没有可能“倾听”这种行动?为此,我的编辑器必须实现哪个接口?当文本编辑器的内容更改时,您肯定要调用updateTabs()?例如,当用户键入内容、删除、剪切、粘贴等时,GUI是否也应该更新?当他们撤销/重做一个动作时,所做的只是更改文本内容。这就是您要连接的事件
updateTabs()
方法。我想在用户执行撤消或重做操作以保持GUI与源代码同步时调用它。有没有可能“倾听”这种行动?为此,我的编辑器必须实现哪个接口?当文本编辑器的内容更改时,您肯定要调用updateTabs()
?例如,当用户键入内容、删除、剪切、粘贴等时,GUI是否也应该更新?当他们撤销/重做一个动作时,所做的只是更改文本内容。这就是您要连接的事件。您可以在提交给文本编辑器的IDocument
上使用IDocumentListener
来侦听对文本所做的所有更改。我不想在每次文本更改时更新选项卡。用户可能会在XML代码中添加或删除单个字符,这可能会导致文档的许多错误状态。这些不应该被解析。为此,我添加了一个工具栏按钮和一个按钮,允许用户在需要时刷新GUI。除此之外,GUI在切换页面上会自动刷新。不过问题已经解决了org.eclipse.ui.editors.text.textdeditor
删除了一个脏状态,前提是用户取消了所有操作,文档变为初始状态。该行为阻止页面在切换时刷新。相反,使用org.eclipse.wst.sse.ui.StructuredTextEditor
解决了这个问题,因为它不会在撤消更改时删除脏状态。