package com.hundsun.ares.studio.cres.text.assistant;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.IDocument;
import com.hundsun.ares.studio.core.IARESResource;
import com.hundsun.ares.studio.jres.metadata.constant.IMetadataRefType;
import com.hundsun.ares.studio.model.reference.ReferenceInfo;
import com.hundsun.ares.studio.reference.ReferenceManager;
public class ConstantAssistantLoader extends AbstractAssistantLoader {
IARESResource resource;
public ConstantAssistantLoader (IARESResource resource){
this.resource = resource;
}
@Override
public List<String> loadAssitant(String text,IDocument doc,int offset) {
try {
int preOffset = offset-text.length()-1;
if(preOffset < 0){
//α���뿪ʼ��
return getAllConstants("");
}else{
char c = doc.getChar(preOffset);
//���ǰһ���ֶ��ǻ��пո�
if (c == '\r' || c == '\t' || c == ' ' || c == '\n'){
return getAllConstants("");
}else if(doc.getChar(preOffset+1) == '['){
//������ʾ������ʽ��[����������][ERR_630001][����ϵͳ������־ʧ��]
return getAllConstants("[");
}
}
} catch (BadLocationException e) {
e.printStackTrace();
}
return new ArrayList<String>();
}
/**
* ��ȡ���г���
* @param prefix ǰ����[���Ժ���ܻ�����=֮��ģ�
* @return
*/
private List<String> getAllConstants(String prefix){
List<String> contants = new ArrayList<String>();
//�û�����
List<ReferenceInfo> infos = ReferenceManager.getInstance().getReferenceInfos(resource.getARESProject(), IMetadataRefType.Const, true);
//����ų���
infos.addAll(ReferenceManager.getInstance().getReferenceInfos(resource.getARESProject(), IMetadataRefType.ErrNo, true));
//�����ֵ䳣��
infos.addAll(ReferenceManager.getInstance().getReferenceInfos(resource.getARESProject(), IMetadataRefType.Dictionary_Const, true));
for(ReferenceInfo info : infos){
contants.add(prefix + info.getRefName());
}
return contants;
}
}