在*不是JFace视图的东西上使用Selection服务

时间:2009-04-24 12:40:00

标签: eclipse eclipse-rcp jface

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

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

getSite().setSelectionProvider( this );

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

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

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

非常感谢您的帮助。

微米。

1 个答案:

答案 0 :(得分:2)

最后的答案分解为几件......

1。)当您的选择确实发生变化时(例如,如果用户放大了图像),请务必告诉Eclipse。否则就不会发生这种情况。

2.。)发送SelectionChangedEvent时,在StructuredSelection对象中包装IAdaptable - 否则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&amp;的类上IAdaptable的。

微米。