1

我正在构建一个图像编辑器作为 Eclipse 插件。

我想使用属性视图来查看和编辑图像下方模型的属性。因此,我打电话给..

getSite().setSelectionProvider( this );

.. 在 createPartControl 中,并在我的 EditorPart 实现中实现 ISelectionProvider 接口,以便模型作为选择返回(因此必须实现 ISelection 接口)。

下一步是编辑器实现 IAdaptable 以为选定对象提供适配器。

然而,我的问题是 getAdapter 永远不会使用 IPropertySource.class 调用,因此属性视图永远不会获得理解图像模型所需的内容。

非常感谢您的帮助。

M。

4

1 回答 1

2

最后的答案分解成几块......

1.) 当您的选择发生变化时(例如,如果用户放大了图像)一定要告诉 Eclipse。否则不会发生。

2.) 发送您的 SelectionChangedEvent 时,将您的 IAdaptable 包装在一个 StructuredSelection 对象中 - 否则 Properties 视图将忽略它。

这归结为以下方法

public void fireSelectionChanged()
{
    final SelectionChangedEvent event = new SelectionChangedEvent( this, new StructuredSelection( this  ) );
    Object[] listeners = selectionChangedListeners.getListeners();
    for (int i = 0; i < listeners.length; ++i) 
    {
        final ISelectionChangedListener l = (ISelectionChangedListener) listeners[i];
        SafeRunnable.run(new SafeRunnable() {
            public void run() {
                l.selectionChanged( event );
            }
        });
    }
}

... 在实现 ISelectionProvider 和 IAdaptable 的类上。

M。

于 2009-05-05T10:18:10.450 回答