/**
* Դ�������ƣ�MetadataHeaderColumnLabelProvider.java
* �������Ȩ���������ӹɷ�����˾ ��Ȩ����
* ϵͳ���ƣ�JRES Studio
* ģ�����ƣ�com.hundsun.ares.studio.jres.metadata.ui
* ����˵����Ԫ�����û��༭��UIչ����ع���
* ����ĵ���
* ���ߣ�
*/
package com.hundsun.ares.studio.jres.basicdata.ui.editor.blocks;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;
import com.hundsun.ares.studio.core.IARESResource;
import com.hundsun.ares.studio.jres.basicdata.logic.util.BasicDataEpackageUtil;
import com.hundsun.ares.studio.jres.basicdata.logic.util.JRESResProviderUtil;
import com.hundsun.ares.studio.jres.metadata.constant.IMetadataRefType;
import com.hundsun.ares.studio.jres.model.metadata.MetadataCategory;
import com.hundsun.ares.studio.jres.model.metadata.StandardField;
import com.hundsun.ares.studio.jres.model.metadata.decrypt.DeDictionaryItem;
import com.hundsun.ares.studio.jres.model.metadata.decrypt.DeDictionaryType;
import com.hundsun.ares.studio.jres.model.metadata.util.MetadataUtil;
import com.hundsun.ares.studio.ui.editor.viewers.EObjectColumnLabelProvider;
import com.hundsun.ares.studio.ui.editor.viewers.IEStructuralFeatureProvider;
/**
* �ṩԪ������Ŀͼ��
* @author gongyf
*
*/
public class BasicdataHeaderColumnLabelProvider extends EObjectColumnLabelProvider {
private static Image IMG_FOLDER = PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FOLDER);
private static Image IMG_ITEM = PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FILE);
IARESResource resource;
/**
* @param attribute
*/
public BasicdataHeaderColumnLabelProvider(EAttribute attribute) {
super(attribute);
}
/**
* @param attributeProvider
* @param resource
*/
public BasicdataHeaderColumnLabelProvider(
IEStructuralFeatureProvider attributeProvider, IARESResource resource) {
super(attributeProvider);
this.resource = resource;
}
@Override
public Color getBackground(Object element) {
if (resource.isReadOnly()) {
return Display.getDefault().getSystemColor(SWT.COLOR_GRAY);
}
return super.getBackground(element);
}
@Override
protected Image doGetImage(Object element) {
if (element instanceof MetadataCategory) {
return IMG_FOLDER;
} else{
return IMG_ITEM;
}
}
@Override
public String getText(Object element) {
String text = StringUtils.EMPTY;
{
EStructuralFeature attribute = getEStructuralFeature(element);
EObject owner = getOwner(element);
Map<String , EAttribute> attMap = new HashMap<String, EAttribute>();
for(EAttribute att : owner.eClass().getEAllAttributes()){
attMap.put(att.getName(), att);
}
if (attribute != null && owner != null && attMap.get(attribute.getName()) != null) {
Object value = owner.eGet(attMap.get(attribute.getName()));
if (value == null) {
value = "";
}
text = String.valueOf(value );
}
}
//����û������ʱ����NullPointer
if(null == getEStructuralFeature(element)){
return "";
}
EStructuralFeature basicDataEAttribute = getEStructuralFeature(element);
if(basicDataEAttribute instanceof EAttribute && BasicDataEpackageUtil.isStandardField((EAttribute)basicDataEAttribute)){
StandardField stdField = JRESResProviderUtil.getMetadataModel(resource.getARESProject(), getEStructuralFeature(element).getName(),IMetadataRefType.StdField , StandardField.class);
if(stdField != null && StringUtils.isNotBlank(stdField.getDictionaryType())){
DeDictionaryType dicType = MetadataUtil.decrypt(stdField, resource).getDictionaryType();
EList<DeDictionaryItem> items = dicType.getItems();
String[] dictItemValues = StringUtils.split(StringUtils.defaultIfBlank(text, ""),",");
StringBuffer sb = new StringBuffer();
for(int i=0;i<dictItemValues.length;i++){
String value = dictItemValues[i];
for(DeDictionaryItem item : items){
if(StringUtils.equals(item.getValue(), value)){
if(i==dictItemValues.length-1){
sb.append(item.getValue() + "_" + item.getChineseName());
}else{
sb.append(item.getValue() + "_" + item.getChineseName()).append("||");
}
}
}
}
text = sb.toString();
}
}
return text;
}
}