package com.robotoworks.mechanoid.ui.wizard.fields; import java.util.ArrayList; import java.util.TreeSet; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.IPackageFragment; import org.eclipse.jdt.core.IPackageFragmentRoot; import org.eclipse.jdt.core.JavaModelException; import org.eclipse.jface.fieldassist.IContentProposal; import org.eclipse.jface.fieldassist.IContentProposalProvider; public class PackageProposalProvider implements IContentProposalProvider { private TreeSet<PackageProposal> mAllProposals = new TreeSet<PackageProposal>(); public PackageProposalProvider() { } public void setProposalsFromProject(IJavaProject project) { mAllProposals.clear(); if(project == null) { return; } try { IPackageFragment[] packageFragments = project.getPackageFragments(); for(int i=0; i < packageFragments.length; i++) { IPackageFragment frag = packageFragments[i]; if(!frag.isDefaultPackage() && frag.getKind() == IPackageFragmentRoot.K_SOURCE) { mAllProposals.add(new PackageProposal(frag)); } } } catch (JavaModelException e) { e.printStackTrace(); } } @Override public IContentProposal[] getProposals(String contents, int position) { ArrayList<IContentProposal> proposals = new ArrayList<IContentProposal>(); for(IContentProposal p : mAllProposals) { if(p.getContent().startsWith(contents)) { proposals.add(p); } } return proposals.toArray(new IContentProposal[proposals.size()]); } }