我迷惑约IAdaptable的和相关的类。这类是适配器时,适配者,可适应型?

<强> [背景]

我有一个表/树查看的条目的上下文菜单。在上下文菜单中某些行动取决于观察者的各对象的状态必须是不可见的(即属性的行的值表中的观察者)。

我可以在plugin.xml中这样的配置实现这一

<extension
         point="org.eclipse.ui.popupMenus">
      <objectContribution
            adaptable="false"
            id="<some_id>"
            objectClass="<object_class_of_viewer_entry>">
            <visibility>
               <objectState name="buildable" value="true"/>
             </visibility>
         <action
               class="<my_action_class>"

然而,如果该对象类实现org.eclipse.ui.IActionFilter这仅适用。

<强> [问题]

我的对象类无法实现IActionFilter,我不想改变它的界面。因此,我需要解决,使用IAdaptable的机制。

阅读Eclipse文档留下我疑惑的条款(适配器,该适配者,适应型),我仍然感到困惑如何去了解我的问题。

在对象类(在上面的配置,以通过称为)必须保持不变。

我的方法是以下

<extension
         point="org.eclipse.core.runtime.adapters">
      <factory
            adaptableType="<object_class_of_viewer_entry>"
            class="MyFactory">
         <adapter
               type="org.eclipse.ui.IActionFilter">
         </adapter>
      </factory>
   </extension>

MyFactory是这样的:

public class MyFactory implements IAdapterFactory {
  private static final Class[] types = {
    <object_class_of_viewer_entry>.class,
  };

  @Override
  public Object getAdapter(Object adaptableObject, Class adapterType) {
    return new <class_that_implements_IActionFilter>((<object_class_of_viewer_entry>) adaptableObject);
  }

  @Override
  public Class[] getAdapterList() {
    return types;
  }
}

有什么不好呢?我在哪里错过了什么?

有帮助吗?

解决方案

原来的一切,好了,几乎所有的东西,是正确的。我已经简单地混合起来object_class_of_viewer_entry的接口和实现在plugin.xml。

两篇文章,帮助: http://www.eclipsezone.com/articles /什么,是IAdaptable的/ http://wiki.eclipse.org/FAQ_How_do_I_use_IAdaptable_and_IAdapterFactory% 3F

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top