/** * Դ�������ƣ�ParamIdContentProposalProvider.java * �������Ȩ���������ӹɷ����޹�˾ ��Ȩ���� * ϵͳ���ƣ�JRES Studio * ģ�����ƣ�com.hundsun.ares.studio.biz.ui * ����˵����$desc * ����ĵ��� * ���ߣ�sundl */ package com.hundsun.ares.studio.biz.ui.block; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import com.hundsun.ares.studio.biz.Parameter; import com.hundsun.ares.studio.biz.constants.IBizRefType; import com.hundsun.ares.studio.biz.core.BizUtil; import com.hundsun.ares.studio.core.IARESProject; import com.hundsun.ares.studio.jres.metadata.constant.IMetadataRefType; import com.hundsun.ares.studio.jres.model.metadata.MetadataItem; import com.hundsun.ares.studio.model.reference.ReferenceInfo; import com.hundsun.ares.studio.reference.ReferenceManager; import com.hundsun.ares.studio.ui.cellEditor.AresContentProposalProvider; import com.hundsun.ares.studio.ui.cellEditor.IContentProposalProviderHelper; /** * @author sundl * */ public class ParamIdContentProposalProvider extends AresContentProposalProvider{ private IARESProject project; public ParamIdContentProposalProvider(IContentProposalProviderHelper helper, IARESProject project) { super(helper); this.project = project; } /* (non-Javadoc) * @see com.hundsun.ares.studio.ui.cellEditor.AresContentProposalProvider#updateContent(java.lang.Object) */ @Override public void updateContent(Object element) { if (element instanceof Parameter) { Parameter p = (Parameter) element; switch(p.getParamType()) { case STD_FIELD: // ��׼�ֶ����͵IJ�������ʾ��׼�ֶ� setupContents(IMetadataRefType.StdField); break; case OBJECT: // �������͵IJ���������ж����׼�ֶΣ�����ʾ�����׼�ֶ� if (BizUtil.hasStdObjList(project)) { setupContents(IBizRefType.Std_Obj); } break; case PARAM_GROUP: //setUpObjects(); break; default: setInput(new Object[0]); break; } } } private void setupContents(String refType) { List<ReferenceInfo> referenceInfoList =ReferenceManager.getInstance().getReferenceInfos(project, refType ,true); if (referenceInfoList==null || referenceInfoList.size()==0) { setInput(new Object[0]); } else { // ���˵��ظ��ı�׼�ֶζ��� Set<String> errorSet = new HashSet<String>(); Set<String> processedSet = new HashSet<String>(); Map<String, Object> processedObjects = new HashMap<String, Object>(); for (ReferenceInfo refInfo : referenceInfoList) { Object object =refInfo.getObject(); if (object instanceof MetadataItem) { MetadataItem item = (MetadataItem) object; if (!errorSet.contains(item.getName())) { if (processedSet.contains(item.getName())) { processedSet.remove(item.getName()); errorSet.add(item.getName()); processedObjects.remove(item.getName()); } else { processedSet.add(item.getName()); processedObjects.put(item.getName(), refInfo); } } } } setInput(processedObjects.values().toArray()); } } // private void setUpObjects() { // List<ReferenceInfo> referenceInfoList =ReferenceManager.getInstance().getReferenceInfos(project, IBizRefType.Object ,true); // if (referenceInfoList==null || referenceInfoList.size()==0) { // setInput(new Object[0]); // } else { // List<Object> input = new ArrayList<Object>(); // for (ReferenceInfo refInfo : referenceInfoList) { // input.add(refInfo.getObject()); // } // setInput(input.toArray()); // } // } }