package net.sourceforge.tagsea.model.internal; import net.sourceforge.tagsea.core.IWaypoint; import org.eclipse.core.runtime.IAdapterFactory; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.ui.IActionFilter; import org.eclipse.ui.model.IWorkbenchAdapter; public class WaypointAdapterFactory implements IAdapterFactory { public static final Class<?>[] ADAPTABLE_TYPES = new Class[] { IWaypoint.class, String.class, ImageDescriptor.class, IWorkbenchAdapter.class, IActionFilter.class }; private static final IWorkbenchAdapter Adapter = new WaypointWorkbenchAdapter(); @SuppressWarnings("unchecked") public Object getAdapter(Object adaptableObject, Class adapterType) { if (adaptableObject instanceof IWaypoint) { if (IWorkbenchAdapter.class.equals(adapterType)) { return Adapter; } else if (ImageDescriptor.class.equals(adapterType)) { return Adapter.getImageDescriptor(adaptableObject); } else if (String.class.equals(adapterType)) { return Adapter.getLabel(adaptableObject); } else if (IActionFilter.class.equals(adapterType)) { return new WaypointActionFilter(); } else if (IWaypoint.class.equals(adapterType)) { return ((IWaypoint)adaptableObject); } } return null; } public Class<?>[] getAdapterList() { return ADAPTABLE_TYPES; } }