eclipse XMLMultiPageEditorPart 的扩展 - 手动触发树视图刷新
extension of eclipse XMLMultiPageEditorPart - trigger refresh of tree-view manually
我正在开发一个 eclipse-plugin,它通过扩展 XMLMultiPageEditorPart
和 XMLTableTreeView
通过扩展 XMLTableTreeViewer
使用自定义 XMLMultiPageEditor
第二个实现IResourceChangeListener
.
我在 eclipse-mars 和 eclipse-neon 中提供了这个插件,但是有线行为只出现在 eclipse-neon 中。
到目前为止,编辑器工作正常,唯一的问题是,当用它打开相关的 xml-文档时,树视图是完全空白的:
我什至可以在源视图中修改文档并保存它..树视图保持空白。
使树视图栩栩如生的唯一事件是:
- 用鼠标调整编辑器的大小-window
- 打开一些其他文档,然后切换回打开的 xml-doc 的选项卡。
在那之后,树视图就可以正常工作了。如果我现在更改源视图中的 xml,树视图会立即更新。
关于如何手动触发树视图刷新的任何想法?
这可能是 eclipse-neon 中的错误吗?
XMLMultiPageEditorPart
和 XMLTableTreeViewer
都在 internal 包中。这意味着它们 不是 Eclipse API 的一部分,Eclipse 开发人员可以在没有警告的情况下更改它们(请参阅 Eclipse API Rules of Engagement)。
Eclipse Mars 和 Neon 之间很可能发生了一些变化。您不能依赖内部 类 在不同版本之间工作相同。这不是 Eclipse 错误,因为您没有使用官方 API。
好的,问题似乎是,eclipse-neon 中 TreeViewer 的 x/y 大小是用 (0,0) 初始化的。这里有一个 hack 来解决这个问题:
...
public class MyXMLTableTreeViewer extends XMLTableTreeViewer implements IResourceChangeListener{
....
public MyXMLTableTreeViewer(Composite parent, IEditorPart parentEditor)
{
super(parent);
....
Point size = getControl().getSize();
size.x = 1000;
getControl().setSize(size);
}
似乎只将 x 设置为某个值就足够了...10 已经给出了图像,但是 "node" 部分看起来有点紧迫,所以我选择了 1000。
即使它只是内部的 API,对我来说也像是一个错误。因此,如果您有进一步的兴趣,请查看 eclipse bugreport。
我正在开发一个 eclipse-plugin,它通过扩展 XMLMultiPageEditorPart
和 XMLTableTreeView
通过扩展 XMLTableTreeViewer
使用自定义 XMLMultiPageEditor
第二个实现IResourceChangeListener
.
我在 eclipse-mars 和 eclipse-neon 中提供了这个插件,但是有线行为只出现在 eclipse-neon 中。
到目前为止,编辑器工作正常,唯一的问题是,当用它打开相关的 xml-文档时,树视图是完全空白的:
我什至可以在源视图中修改文档并保存它..树视图保持空白。
使树视图栩栩如生的唯一事件是:
- 用鼠标调整编辑器的大小-window
- 打开一些其他文档,然后切换回打开的 xml-doc 的选项卡。
在那之后,树视图就可以正常工作了。如果我现在更改源视图中的 xml,树视图会立即更新。
关于如何手动触发树视图刷新的任何想法?
这可能是 eclipse-neon 中的错误吗?
XMLMultiPageEditorPart
和 XMLTableTreeViewer
都在 internal 包中。这意味着它们 不是 Eclipse API 的一部分,Eclipse 开发人员可以在没有警告的情况下更改它们(请参阅 Eclipse API Rules of Engagement)。
Eclipse Mars 和 Neon 之间很可能发生了一些变化。您不能依赖内部 类 在不同版本之间工作相同。这不是 Eclipse 错误,因为您没有使用官方 API。
好的,问题似乎是,eclipse-neon 中 TreeViewer 的 x/y 大小是用 (0,0) 初始化的。这里有一个 hack 来解决这个问题:
...
public class MyXMLTableTreeViewer extends XMLTableTreeViewer implements IResourceChangeListener{
....
public MyXMLTableTreeViewer(Composite parent, IEditorPart parentEditor)
{
super(parent);
....
Point size = getControl().getSize();
size.x = 1000;
getControl().setSize(size);
}
似乎只将 x 设置为某个值就足够了...10 已经给出了图像,但是 "node" 部分看起来有点紧迫,所以我选择了 1000。
即使它只是内部的 API,对我来说也像是一个错误。因此,如果您有进一步的兴趣,请查看 eclipse bugreport。