Eclipse 在非JFace视图的对象上使用选择服务

Eclipse 在非JFace视图的对象上使用选择服务,eclipse,eclipse-rcp,jface,Eclipse,Eclipse Rcp,Jface,我正在构建一个图像编辑器作为Eclipse插件 我想使用Properties视图查看和编辑图像下方模型的属性。因此我打电话来 getSite().setSelectionProvider( this ); 。。在createPartControl中,并在我的EditorPart实现中实现ISelectionProvider接口,以便将模型作为选择返回(因此必须实现ISelection接口) 下一步是编辑器实现IAdaptable,为所选对象提供适配器 但是,我的问题是,从来没有使用IPrope

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

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

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

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

但是,我的问题是,从来没有使用IPropertySource.class调用getAdapter,因此Properties视图永远无法获得理解图像模型所需的内容

非常感谢你的帮助


M.

最后答案分成了几部分

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 );
            }
        });
    }
}
public void fireSelectionChanged()
{
final SelectionChangedEvent=new SelectionChangedEvent(此,新结构选择(此));
Object[]listeners=selectionChangedListeners.getListeners();
for(int i=0;i
。。。在实现iSelectProvider和IAdaptable的类上

M