/**
* Դ�������ƣ�MetadataContentProposalHelper.java
* �������Ȩ���������ӹɷ�����˾ ��Ȩ����
* ϵͳ���ƣ�JRES Studio
* ģ�����ƣ�com.hundsun.ares.studio.jres.metadata.ui
* ����˵����Ԫ�����û��༭��UIչ����ع���
* ����ĵ���
* ���ߣ�
*/
package com.hundsun.ares.studio.jres.metadata.ui.editors.editingsupport;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.fieldassist.IContentProposal;
import com.hundsun.ares.studio.core.IARESProject;
import com.hundsun.ares.studio.core.IARESResource;
import com.hundsun.ares.studio.core.context.INamespaceHelper;
import com.hundsun.ares.studio.core.context.statistic.IResourceTable;
import com.hundsun.ares.studio.internal.core.ArchiveARESResource;
import com.hundsun.ares.studio.jres.model.metadata.MetadataItem;
import com.hundsun.ares.studio.ui.assist.JRESContentPorposalHelper;
import com.hundsun.ares.studio.ui.cellEditor.ARESContentProposal;
import com.hundsun.ares.studio.ui.cellEditor.IContentProposalProviderHelper;
/**
* Ԫ�������õ�������ʾ
*/
// 2012-2-23 sundl �ӻ���̳У���ʵ��
public class MetadataContentProposalHelper extends JRESContentPorposalHelper implements IContentProposalProviderHelper{
/**
* �ظ�MAP
*/
protected List< String> duplicateList = new ArrayList<String>();
protected IARESProject project;
public MetadataContentProposalHelper(IARESProject project) {
this.project = project;
}
public void initDuplicateList(Object[] input){
//��ʼ���ظ��б�
this.duplicateList.clear();
List< String> tlist = new ArrayList<String>();
for(Object element:input){
if(element instanceof MetadataItem){
MetadataItem item = (MetadataItem) element;
if(tlist.contains(item.getName())){
if(!duplicateList.contains(item.getName())){
duplicateList.add(item.getName());
}
}else{
tlist.add(item.getName());
}
}
}
tlist.clear();
}
protected String getContent(MetadataItem item, IARESResource resource) {
if(duplicateList.contains(item.getName())){
String nameSpace = "";
if (resource != null){
if(resource.getARESProject().equals(project)){
if(resource instanceof ArchiveARESResource){
//������Դ��
nameSpace = INamespaceHelper.INSTANCE.getResourceNamespace(resource);
}else{
//��ǰ����
nameSpace = "";
}
}else{
//���ù���
nameSpace = INamespaceHelper.INSTANCE.getResourceNamespace(resource);
}
}
if(!StringUtils.isEmpty(nameSpace)){
return String.format("%s.%s", nameSpace,item.getName());
}
}
return item.getName();
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.ui.contentassist.JRESContentPorposalHelper#getProposal(java.lang.String, int, org.eclipse.emf.ecore.EObject, com.hundsun.ares.studio.core.IARESResource)
*/
@Override
protected IContentProposal getProposal(String contents, int position,
EObject item, IARESResource resource) {
if (item instanceof MetadataItem) {
MetadataItem mdItem = (MetadataItem) item;
String content = getContent(mdItem, resource);
// 2012-04-27 sundl ���Ϊ�ղ�������ʾ��Ŀ
if (StringUtils.isEmpty(content))
return null;
if (!content.toUpperCase().contains(contents.toUpperCase())) {
return null;
}
String shortDesc = mdItem.getChineseName();
return new ARESContentProposal(content, shortDesc);
}
return null;
}
}