/** * Դ�������ƣ�MetadataOverviewExtensibleModelColumnLabelProvider.java * �������Ȩ���������ӹɷ����޹�˾ ��Ȩ���� * ϵͳ���ƣ�JRES Studio * ģ�����ƣ�com.hundsun.ares.studio.jres.metadata.ui * ����˵����$desc * ����ĵ��� * ���ߣ��ι��� */ package com.hundsun.ares.studio.jres.metadata.ui.utils; import org.apache.commons.lang.StringUtils; import org.eclipse.core.runtime.Assert; import org.eclipse.emf.common.util.Diagnostic; import org.eclipse.emf.common.util.EMap; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.swt.graphics.Image; import com.hundsun.ares.studio.core.model.ExtensibleModel; import com.hundsun.ares.studio.jres.metadata.ui.model.MetadataOverviewElement; import com.hundsun.ares.studio.ui.editor.extend.IEMLabelProviderExtension; import com.hundsun.ares.studio.ui.editor.extend.IExtensibleModelEditingSupport; import com.hundsun.ares.studio.ui.editor.extend.IExtensibleModelPropertyDescriptor; import com.hundsun.ares.studio.ui.editor.extend.IMapExtensibleModelPropertyDescriptor; import com.hundsun.ares.studio.ui.editor.viewers.EObjectColumnLabelProvider; /** * * ����Ԥ���б���չ��֧�� * @author liaogc * */ public class MetadataOverviewExtensibleModelColumnLabelProvider extends EObjectColumnLabelProvider { IExtensibleModelEditingSupport editingSupport; IExtensibleModelPropertyDescriptor descriptor; /** * @param editingSupport * @param descriptior */ public MetadataOverviewExtensibleModelColumnLabelProvider( IExtensibleModelEditingSupport editingSupport, IExtensibleModelPropertyDescriptor descriptor) { super(descriptor.getStructuralFeature()); this.editingSupport = editingSupport; this.descriptor = descriptor; } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.ui.viewers.BaseEObjectColumnLabelProvider#getOwner(java.lang.Object) */ @Override protected EObject getOwner(Object element) { if(element instanceof MetadataOverviewElement){ MetadataOverviewElement model = (MetadataOverviewElement) element; if(model.getItem() instanceof ExtensibleModel){ return model.getItem().getData2().get(editingSupport.getKey()); } } return null; } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.ui.viewers.BaseEObjectColumnLabelProvider#getText(java.lang.Object) */ @Override public String getText(Object element) { EObject owner = getOwner(element); if (owner != null) { EStructuralFeature feature = descriptor.getStructuralFeature(); ILabelProvider labelProvider = descriptor.getLabelProvider(); if (labelProvider instanceof IEMLabelProviderExtension) { ((IEMLabelProviderExtension) labelProvider).setExtensibleModel(((MetadataOverviewElement) element).getItem()); } Object value = owner.eGet(feature); if (descriptor instanceof IMapExtensibleModelPropertyDescriptor) { Assert.isTrue(value instanceof EMap<?, ?>); value = ((EMap<?, ?>) value).get(((IMapExtensibleModelPropertyDescriptor) descriptor).getKey()); } return labelProvider.getText(value); } return StringUtils.EMPTY; } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.ui.viewers.EObjectColumnLabelProvider#doGetImage(java.lang.Object) */ @Override protected Image doGetImage(Object element) { EObject owner = getOwner(element); if (owner != null) { EStructuralFeature feature = descriptor.getStructuralFeature(); ILabelProvider labelProvider = descriptor.getLabelProvider(); if (labelProvider instanceof IEMLabelProviderExtension) { ((IEMLabelProviderExtension) labelProvider).setExtensibleModel(((MetadataOverviewElement) element).getItem()); } Object value = owner.eGet(feature); if (descriptor instanceof IMapExtensibleModelPropertyDescriptor) { Assert.isTrue(value instanceof EMap<?, ?>); value = ((EMap<?, ?>) value).get(((IMapExtensibleModelPropertyDescriptor) descriptor).getKey()); } return labelProvider.getImage(value); } return null; } @Override protected Diagnostic getDiagnostic(Object element) { if (getDiagnosticProvider() != null) { EObject owner = getOwner(element); EStructuralFeature feature = descriptor.getStructuralFeature(); if (descriptor instanceof IMapExtensibleModelPropertyDescriptor) { return getDiagnosticProvider().getDiagnostic(owner, feature, ((IMapExtensibleModelPropertyDescriptor) descriptor).getKey()); } else { return getDiagnosticProvider().getDiagnostic(owner, feature); } } return super.getDiagnostic(element); } }