/** * <p>Copyright: Copyright (c) 2009</p> * <p>Company: �������ӹɷ����޹�˾</p> */ package com.hundsun.ares.studio.ui; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.ILabelProviderListener; import org.eclipse.jface.viewers.StyledString; import org.eclipse.swt.graphics.Image; import org.eclipse.ui.model.IWorkbenchAdapter; import com.hundsun.ares.studio.core.IARESElement; import com.hundsun.ares.studio.core.IARESModule; import com.hundsun.ares.studio.core.IARESModuleRoot; import com.hundsun.ares.studio.core.IARESProject; import com.hundsun.ares.studio.core.IARESResource; import com.hundsun.ares.studio.core.IExternalResPathEntry; import com.hundsun.ares.studio.core.IProjectProperty; import com.hundsun.ares.studio.core.IReferencedLibrary; import com.hundsun.ares.studio.core.IResPathEntry; import com.hundsun.ares.studio.core.IResPathEntryElement; import com.hundsun.ares.studio.core.model.ResGroup; import com.hundsun.ares.studio.core.registry.ARESResRegistry; import com.hundsun.ares.studio.core.registry.IModuleRootDescriptor; import com.hundsun.ares.studio.core.registry.IResDescriptor; import com.hundsun.ares.studio.core.registry.IRespathProviderDescriptor; import com.hundsun.ares.studio.core.registry.ModulesRootTypeRegistry; import com.hundsun.ares.studio.core.util.StringUtil; /** * ������LabelProvider. * @author sundl */ public class ARESElementLabelProvider implements ILabelProvider, IStyledLabelProvider{ /* (non-Javadoc) * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object) */ public Image getImage(Object element) { if (element instanceof IARESProject) { return ARESUI.getImage2(ARESUI.IMG_PROJECT); } else if (element instanceof IARESModuleRoot) { IARESModuleRoot root = (IARESModuleRoot)element; IModuleRootDescriptor desc = ModulesRootTypeRegistry.getInstance().getModuleRootDescriptor(root.getType()); if (desc != null) { ImageDescriptor descriptor = desc.getImageDescriptor(); return ARESUI.getImageDescriptorRegistry().get(descriptor); } } else if (element instanceof IARESModule) { return ARESUI.getImage2(ARESUI.IMG_PATH_MODULE); } else if (element instanceof IARESResource) { IARESResource cResource = (IARESResource)element; IResDescriptor descriptor = ARESResRegistry.getInstance().getResDescriptor(cResource.getType()); if (descriptor != null) { return ARESUI.getImageDescriptorRegistry().get(descriptor.getImageDescriptor()); } else { return ARESUI.getImage2(ARESUI.IMG_DEFAULT_ARES_RESOURCE); } } else if (element instanceof ARESResourceCategory || element instanceof ResGroup) { return ARESUI.getImage2(ARESUI.IMG_PATH_CATE); } else if (element instanceof IReferencedLibrary) { return ARESUI.getImage2(ARESUI.IMG_PATH_REFLIB); } else if (element instanceof IProjectProperty) { return ARESUI.getImage2(ARESUI.IMG_PATH_PROJECT_PRO); } else if (element instanceof RefLibContainer) { return ARESUI.getImage2(ARESUI.IMG_PATH_LIB_CONTAINER); } else if (element instanceof IAdaptable) { IWorkbenchAdapter adapter = (IWorkbenchAdapter) ((IAdaptable) element).getAdapter(IWorkbenchAdapter.class); if (adapter != null) { return ARESUI.getImageDescriptorRegistry().get(adapter.getImageDescriptor(element)); } } return null; } /* (non-Javadoc) * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object) */ public String getText(Object element) { if (element instanceof IARESModuleRoot) { String type = ((IARESModuleRoot)element).getType(); IModuleRootDescriptor rootDesc = ModulesRootTypeRegistry.getInstance().getModuleRootDescriptor(type); if (rootDesc != null && !StringUtil.isEmpty(rootDesc.getName())) return rootDesc.getName(); } else if (element instanceof IARESModule) { if (((IARESModule)element).isDefaultModule()) return "Ĭ��ģ��"; } else if (element instanceof ARESResourceCategory) { return ((ARESResourceCategory)element).getName(); } else if (element instanceof IARESResource) { IARESResource cResource = (IARESResource)element; IResDescriptor descriptor = ARESResRegistry.getInstance().getResDescriptor(cResource.getType()); if (descriptor != null && !StringUtil.isEmpty(descriptor.getFileName())) { return descriptor.getName(); } else { return cResource.getName(); } } if(element instanceof IARESElement) { return ((IARESElement)element).getElementName(); } if (element instanceof RefLibContainer) { return "����"; } if (element instanceof IAdaptable) { IWorkbenchAdapter adapter = (IWorkbenchAdapter)((IAdaptable)element).getAdapter(IWorkbenchAdapter.class); if (adapter != null) { return adapter.getLabel(element); } } return null; } public StyledString getStyledText(Object element) { StyledString styled = new StyledString(); styled.append(getText(element)); if (element instanceof IReferencedLibrary) { IReferencedLibrary lib = (IReferencedLibrary) element; if (lib.isExternal()) styled.append(" - " + lib.getPath(), StyledString.QUALIFIER_STYLER); } if (element instanceof IResPathEntryElement) { IResPathEntry entry = ((IResPathEntryElement) element).getResPathEntry(); if (entry instanceof IExternalResPathEntry) { IExternalResPathEntry externalEntry = (IExternalResPathEntry) entry; IRespathProviderDescriptor provider = externalEntry.getProvider(); if (provider != null) styled.append("(Provided by " + provider.getName() + ")", StyledString.DECORATIONS_STYLER); } } return styled; } /* (non-Javadoc) * @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener) */ public void addListener(ILabelProviderListener listener) { } /* (non-Javadoc) * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose() */ public void dispose() { } /* (non-Javadoc) * @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang.Object, java.lang.String) */ public boolean isLabelProperty(Object element, String property) { return true; } /* (non-Javadoc) * @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener) */ public void removeListener(ILabelProviderListener listener) { } }