我對IAdaptable和相關類感到困惑。哪個類是適配器,適配器,適配類型?對IAdaptable與IActionFilters的困惑
[語境]
我有一個表/樹查看的條目的上下文菜單。取決於查看器中各個對象的狀態(即,表查看器中的行的屬性值),上下文菜單中的某些動作不可見。
我可以在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;
}
}
有什麼不好呢?我在哪裏錯過了什麼?