困惑与IAdaptable的IActionFilters
-
20-09-2019 - |
题
我迷惑约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
不隶属于 StackOverflow