最原始的方法
public class Person implements IPropertySource
适配的方法
public class Person implements IAdaptable {
public Object getAdapter(Class adapter) {
if (adapter == IPropertySource.class) return new PersonPropertySource(this); return null;
}
}
使用扩展点来实现适配
<plugin> <extension point="org.eclipse.core.runtime.adapters"> <factory adaptableType="org.eclipse.articles.adapters.core.Person" class="org.eclipse.articles.adapters.properties.PersonPropertiesSourceAdapterFactory"> <adapter type="org.eclipse.ui.views.properties.IPropertySource"> </adapter> </factory> </extension> </plugin>
public class PersonPropertiesSourceAdapterFactory implements IAdapterFactory { public Object getAdapter(Object adaptableObject, Class adapterType) { if (adapterType == IPropertySource.class) return new PersonPropertySource((Person)adaptableObject); return null; } public Class[] getAdapterList() { return new Class[] {IPropertySource.class}; } }
public class Person implements IAdaptable { private String name; private Object street; private Object city; public Person(String name) { this.name = name; this.street = ""; this.city = ""; } public Object getAdapter(Class adapter) { return Platform.getAdapterManager().getAdapter(this, adapter); } }
http://www.eclipse.org/articles/article.php?file=Article-Adapters/index.html