/**
* Դ�������ƣ�MetadataMapColumnLabelProvider.java
* �������Ȩ���������ӹɷ�����˾ ��Ȩ����
* ϵͳ���ƣ�JRES Studio
* ģ�����ƣ�com.hundsun.ares.studio.jres.metadata.ui
* ����˵����Ԫ�����û��༭��UIչ����ع���
* ����ĵ���
* ���ߣ�
*/
package com.hundsun.ares.studio.jres.metadata.ui.viewer;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Display;
import com.hundsun.ares.studio.core.IARESResource;
import com.hundsun.ares.studio.jres.model.metadata.MetadataItem;
import com.hundsun.ares.studio.jres.model.metadata.util.CircularReferenceException;
import com.hundsun.ares.studio.jres.model.metadata.util.MetadataUtil;
import com.hundsun.ares.studio.ui.editor.viewers.EObjectMapColumnLabelProvider;
/**
* @author gongyf
*
*/
public class MetadataMapColumnLabelProvider extends
EObjectMapColumnLabelProvider {
private IARESResource resource;
/**
* @param reference
* @param key
* @param resource
*/
public MetadataMapColumnLabelProvider(EReference reference, Object key,
IARESResource resource) {
super(reference, key);
this.resource = resource;
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.ui.viewers.EObjectColumnLabelProvider#getBackground(java.lang.Object)
*/
@Override
public Color getBackground(Object element) {
if(element instanceof MetadataItem){
if(MetadataUtil.isUseRefFeature(resource) && MetadataUtil.isReferencingItem((MetadataItem) element)){
return Display.getDefault().getSystemColor(SWT.COLOR_GRAY);
}
}
if (resource.isReadOnly()) {
return Display.getDefault().getSystemColor(SWT.COLOR_GRAY);
}
return super.getBackground(element);
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.ui.viewers.EObjectMapColumnLabelProvider#getOwner(java.lang.Object)
*/
@Override
protected EObject getOwner(Object element) {
EObject owner = super.getOwner(element);
if ( MetadataUtil.isUseRefFeature(resource) ) {
// �����Ŀ��������������
if (owner instanceof MetadataItem) {
// �������õĴ���
MetadataItem item = (MetadataItem)owner;
MetadataItem entity = null;
if(MetadataUtil.isReferencingItem(item)){
try {
entity = MetadataUtil.defaultResolve(item, resource).first;
} catch (CircularReferenceException e) {
}
}
return entity == null ? item : entity;
}
}
return owner;
// EObject owner = super.getOwner(element);
// if (owner instanceof MetadataItem) {
// // �������õĴ���
// MetadataItem item = (MetadataItem)owner;
// MetadataItem entity = null;
// try {
// entity = MetadataUtil.defaultResolve(item, resource).first;
// } catch (CircularReferenceException e) {
//
// }
// return entity == null ? item : entity;
// }
// return owner;
}
}