/** * <p>Copyright: Copyright (c) 2012</p> * <p>Company: �������ӹɷ����޹�˾</p> */ package com.hundsun.ares.studio.jres.database.oracle.ui.viewer; import java.util.ArrayList; import java.util.List; import org.apache.commons.lang.StringUtils; import org.eclipse.jface.fieldassist.IContentProposal; import com.hundsun.ares.studio.core.IARESProject; import com.hundsun.ares.studio.jres.model.database.oracle.OracleUser; import com.hundsun.ares.studio.model.reference.ReferenceInfo; import com.hundsun.ares.studio.reference.ReferenceManager; import com.hundsun.ares.studio.ui.cellEditor.AresContentProposalProvider; /** * @author qinyuan * */ public class OracleUserProposalProvider extends AresContentProposalProvider{ protected String resType; protected IARESProject project; /** * */ public OracleUserProposalProvider(String resType, IARESProject project) { super(); this.resType = resType; this.project = project; } /* (non-Javadoc) * @see com.hundsun.ares.studio.ui.cellEditor.AresContentProposalProvider#updateContent(java.lang.Object) */ @Override public void updateContent(Object element) { List<ReferenceInfo> infoList = ReferenceManager.getInstance().getReferenceInfos(project, resType, true); List<OracleUser> inputItems = new ArrayList<OracleUser>(); if (infoList != null) { for (Object inputItem : infoList) { if(inputItem instanceof ReferenceInfo){ Object obj = ((ReferenceInfo)inputItem).getObject(); if(obj instanceof OracleUser) { OracleUser user = (OracleUser)obj; if (user.isEnable()) { inputItems.add(user); } } } } } setInput(inputItems.toArray(new OracleUser[0])); } /* (non-Javadoc) * @see com.hundsun.ares.studio.ui.cellEditor.AresContentProposalProvider#getProposals(java.lang.String, int) */ @Override public IContentProposal[] getProposals(String contents, int position) { List<IContentProposal> proposals = new ArrayList<IContentProposal>(); if (input != null) { for (Object obj : input) { if(obj instanceof OracleUser) { OracleUser user = (OracleUser)obj; String name = user.getName(); String desc = user.getDecription(); if (StringUtils.startsWithIgnoreCase(name, contents)) { IContentProposal proposal = new OracleUserContentProposal(name,desc); if (proposal != null) { proposals.add(proposal); } } } } } return proposals.toArray(new IContentProposal[0]); } class OracleUserContentProposal implements IContentProposal { String name; String label; /** * @param name * @param desc */ public OracleUserContentProposal(String name, String desc) { this.name = name; this.label = name + "--->" + desc; } /* (non-Javadoc) * @see org.eclipse.jface.fieldassist.IContentProposal#getContent() */ @Override public String getContent() { return name; } /* (non-Javadoc) * @see org.eclipse.jface.fieldassist.IContentProposal#getCursorPosition() */ @Override public int getCursorPosition() { return name.length(); } /* (non-Javadoc) * @see org.eclipse.jface.fieldassist.IContentProposal#getLabel() */ @Override public String getLabel() { return label; } /* (non-Javadoc) * @see org.eclipse.jface.fieldassist.IContentProposal#getDescription() */ @Override public String getDescription() { return null; } } }