编辑特定的命令状态

时间:2016-05-04 18:41:42

标签: eclipse-plugin

我创建了一个命令和一个与文本编辑器交互的处理程序(实现ITextEditor的对象)。对于处理程序与之交互的每个编辑器,我希望存储处理程序可以访问的一些数据。

这样做的最佳方式是什么?

有关我的具体问题的信息

我的命令修改了活动编辑器的文本选择。执行命令时,我想存储有关上一个选择的信息。另一个命令应该能够读取此信息并恢复之前的选择。

思考和观察

  • 如果为每个编辑器创建了一个解决我的问题的处理程序实例。有没有办法实现这个目标?
  • 我查看了Java编辑器的source code,试图了解其中的工作原理。编辑器存储对操作对象的引用。由于我无法为我的命令创建新字段,因此我无法使用相同的方法。
  • <state> plugin.xml标记looked at,但我不明白如何为每个编辑器获取一个状态。但也许有办法?
  • 我可以手动维护从编辑器到状态对象的映射,也可以在打开和关闭编辑器时注册监听器。但我更愿意,如果有一种更简单的方式,我自己也不必这样做。
  • 也许可以使用动作(IAction)?但他们不是一个被命令取代的旧机制吗?
  • 我可以使用IAction手动设置ITextEditor.setAction对象作为对堆栈的引用。

1 个答案:

答案 0 :(得分:1)

如果您使用的是Eclipse 4,则可以使用与MPart关联的IEditorPart对象的瞬态数据。

要使用MPart使用IEditorPart

MPart part = editor.getSite().getService(MPart.class);

Map<String, Object> transientData = part.getTransientData();

您可以在瞬态数据中存储您喜欢的任何内容,使用您的处理程序对映射键唯一的键。编辑关闭时,数据将被丢弃。