package com.hundsun.ares.studio.jres.metadata.ui.editors.editingsupport; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import org.apache.commons.lang.ArrayUtils; import com.hundsun.ares.studio.core.IARESResource; import com.hundsun.ares.studio.core.context.statistic.IResourceTable; import com.hundsun.ares.studio.jres.metadata.constant.IMetadataRefType; import com.hundsun.ares.studio.jres.model.metadata.MetadataItem; import com.hundsun.ares.studio.jres.model.metadata.util.MenuUtils; import com.hundsun.ares.studio.model.reference.ReferenceInfo; import com.hundsun.ares.studio.ui.cellEditor.IContentProposalProviderHelper; public class MenuItemContentProposalProvider extends MetadataContentProposalProvider { IARESResource resource; public MenuItemContentProposalProvider( IContentProposalProviderHelper helper,IARESResource resource) { super(helper, IMetadataRefType.Menu, resource.getARESProject()); this.resource = resource; } @Override public void updateContent(Object element) { ReferenceInfo[] referenceInfos = (ReferenceInfo[]) MenuUtils.getRefableMenuItems(resource).values().toArray(); if (ArrayUtils.isEmpty(referenceInfos )) { 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 referenceInfo : referenceInfos) { MetadataItem item = (MetadataItem) referenceInfo.getObject(); 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(), referenceInfo); } } } // ��ΪcreateProposal()�ò���element��������ʾԪ�صĹ��˱���������ʹ���� List<Object> inputItems = new ArrayList<Object>(); for (Object inputItem : processedObjects.values().toArray()) { if (filter(inputItem, element)) inputItems.add(inputItem); } setInput(inputItems.toArray()); } if(helper instanceof MetadataContentProposalHelper){ ((MetadataContentProposalHelper)helper).initDuplicateList(input); } } }