/** * Դ�������ƣ�MetadataItemEditingSupportDecorator.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.EStructuralFeature; import org.eclipse.jface.viewers.CellEditor; 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.MetadataUtil; import com.hundsun.ares.studio.ui.editor.editingsupport.IEditingSupportDecorator; import com.hundsun.ares.studio.ui.editor.viewers.IEStructuralFeatureProvider; /** * @author gongyf * */ public class MetadataItemEditingSupportDecorator implements IEditingSupportDecorator { protected IEStructuralFeatureProvider provider; private IARESResource resource; public MetadataItemEditingSupportDecorator(EStructuralFeature feature,IARESResource resource) { this(new IEStructuralFeatureProvider.Impl(feature)); this.resource = resource; } public MetadataItemEditingSupportDecorator(IEStructuralFeatureProvider provider) { super(); this.provider = provider; } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.ui.editingsupports.IEditingSupportDecorator#decorateGetCellEditor(org.eclipse.jface.viewers.CellEditor, java.lang.Object) */ @Override public CellEditor decorateGetCellEditor(CellEditor cellEditor, Object element) { return cellEditor; } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.ui.editingsupports.IEditingSupportDecorator#decorateCanEdit(boolean, java.lang.Object) */ @Override public boolean decorateCanEdit(boolean canEdit, Object element) { if (element instanceof MetadataItem) { MetadataItem item = (MetadataItem) element; if (MetadataUtil.isUseRefFeature(resource) && MetadataUtil.isReferencingItem(item) ) { if (!MetadataUtil.isReferencableFeature(item, provider.getFeature(element)) ) { return canEdit; } return false; } } else if (element instanceof UncategorizedItemsCategoryImpl) { return false; } return canEdit; } }