package com.hundsun.ares.studio.ui; import org.eclipse.core.runtime.IAdapterFactory; import com.hundsun.ares.studio.core.IARESModuleRoot; import com.hundsun.ares.studio.core.IARESResource; import com.hundsun.ares.studio.core.registry.ARESResRegistry; import com.hundsun.ares.studio.core.registry.IOrderable; import com.hundsun.ares.studio.core.registry.ModulesRootTypeRegistry; public class OrderableAdapterFactory implements IAdapterFactory { private static final Class[] types = new Class[] {IOrderable.class}; public Object getAdapter(Object adaptableObject, Class adapterType) { if (adapterType == IOrderable.class) { if (adaptableObject instanceof IARESModuleRoot) { IARESModuleRoot root = (IARESModuleRoot) adaptableObject; ModulesRootTypeRegistry reg = ModulesRootTypeRegistry.getInstance(); return reg.getModuleRootDescriptor(root.getType()); } else if (adaptableObject instanceof IARESResource) { IARESResource res = (IARESResource) adaptableObject; ARESResRegistry reg = ARESResRegistry.getInstance(); return reg.getResDescriptor(res.getType()); } else if (adaptableObject instanceof ARESResourceCategory) { ARESResourceCategory cate = (ARESResourceCategory) adaptableObject; ARESResRegistry reg = ARESResRegistry.getInstance(); return reg.getCategory(cate.getId()); } } return null; } public Class[] getAdapterList() { return types; } }