/** * <p>Copyright: Copyright (c) 2013</p> * <p>Company: �������ӹɷ����޹�˾</p> */ package com.hundsun.ares.studio.cres.text.assistant; import java.util.ArrayList; import java.util.List; import org.apache.commons.lang.StringUtils; import org.eclipse.jface.text.IDocument; import com.hundsun.ares.studio.core.ARESModelException; import com.hundsun.ares.studio.core.IARESProject; import com.hundsun.ares.studio.core.IARESResource; import com.hundsun.ares.studio.ui.editor.text.TextUtil; import com.hundsun.ares.studio.usermacro.UserMacro; import com.hundsun.ares.studio.usermacro.UserMacroItem; import com.hundsun.ares.studio.usermacro.constants.IUserMacroRefType; /** * @author wangxh * */ public class UserMacroAssistantLoader extends AbstractAssistantLoader { private final static String PREFIX = "["; private final static String SUFFIX = "]"; IARESResource resource; public UserMacroAssistantLoader(IARESResource resource) { this.resource = resource; } @Override public List<String> loadAssitant(String text,IDocument doc,int offset) { List<String> allproposals = new ArrayList<String>(); if(StringUtils.startsWith(text, PREFIX) && !TextUtil.isAfterMacro(doc, offset)){ IARESProject pro = resource.getARESProject(); try { //��ȡ�û��Զ������Դ IARESResource[] resources = pro.getResources(new String[]{IUserMacroRefType.USER_MACRO,IUserMacroRefType.SYSTEM_MACRO}); if(resources != null && resources.length > 0){ for(IARESResource res : resources){ UserMacro macro = res.getInfo(UserMacro.class); if(macro != null){ for(UserMacroItem item : macro.getMacroItems()){ if(filter == null){ allproposals.add(getProposal(item)); }else if(filter.filter(item)){ allproposals.add(getProposal(item)); } } } } } } catch (ARESModelException e) { e.printStackTrace(); } } return allproposals; } private String getProposal(UserMacroItem item){ String text = PREFIX + item.getName() + SUFFIX + item.getSequence(); // String sequence = item.getSequence(); // if(StringUtils.isNotBlank(sequence)){ // text += sequence; // } return text; } }