/******************************************************************************* * Copyright (c) 2010 Zend Technologies and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Zend Technologies - initial API and implementation *******************************************************************************/ package org.eclipse.php.internal.core.codeassist.templates; import java.util.*; import org.eclipse.dltk.core.CompletionProposal; import org.eclipse.dltk.core.CompletionRequestor; import org.eclipse.php.internal.core.codeassist.CompletionRequestorExtension; public abstract class CodeCompletionRequestor extends CompletionRequestor implements CompletionRequestorExtension { List<CompletionProposal> proposals; Comparator<CompletionProposal> sorter; public CodeCompletionRequestor() { proposals = new ArrayList<CompletionProposal>(); sorter = getSorter(); setIgnored(CompletionProposal.KEYWORD, true); } protected Comparator<CompletionProposal> getSorter() { return new Comparator<CompletionProposal>() { public int compare(CompletionProposal o1, CompletionProposal o2) { return o1.getName().compareTo(o2.getName()); } }; } @Override public void accept(CompletionProposal proposal) { if (isIgnored(proposal.getKind())) return; addProposal(proposal); } public final void addProposal(CompletionProposal proposal) { proposals.add(proposal); } public String[] getVariables() { Collections.sort(proposals, sorter); Set<String> nameSet = new HashSet<String>(); List<String> nameList = new ArrayList<String>(); for (Iterator<CompletionProposal> iterator = proposals.iterator(); iterator.hasNext();) { CompletionProposal proposal = (CompletionProposal) iterator.next(); if (!nameSet.contains(proposal.getName())) { nameSet.add(proposal.getName()); nameList.add(proposal.getName()); } } return nameList.toArray(new String[nameList.size()]); } public String[] getArrayVariables() { return getVariables(); } }