blob: c0bfb7f2b241eab1a542407a29e1e326c24281ad [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010 IBM Corporation 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:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jst.jsp.ui.internal.contentassist;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.text.contentassist.ICompletionProposal;
import org.eclipse.wst.sse.ui.contentassist.CompletionProposalInvocationContext;
/**
* <p>Generates JSP import completion proposals</p>
*/
public class JSPImportCompletionProposalComputer extends
JSPJavaCompletionProposalComputer {
/**
* @see org.eclipse.jst.jsp.ui.internal.contentassist.JSPJavaCompletionProposalComputer#computeCompletionProposals(org.eclipse.wst.sse.ui.contentassist.CompletionProposalInvocationContext, org.eclipse.core.runtime.IProgressMonitor)
*/
public List computeCompletionProposals(
CompletionProposalInvocationContext context,
IProgressMonitor monitor) {
List proposals = computeJavaCompletionProposals(context.getViewer(), context.getInvocationOffset(), 0);
List importProposals = new ArrayList(proposals.size());
for (int i = 0; i < proposals.size(); i++) {
if (proposals.get(i) instanceof JSPCompletionProposal) {
ICompletionProposal importProposal = adjustImportProposal((JSPCompletionProposal) proposals.get(i));
importProposals.add(importProposal);
}
}
return importProposals;
}
/**
* <p>JSP import proposals need to be adjusted, this does that</p>
*
* @param importProposal {@link JSPCompletionProposal} to adjust
* @return adjusted {@link ICompletionProposal}
*/
private ICompletionProposal adjustImportProposal(JSPCompletionProposal importProposal) {
// just need to remove the ";"
// and adjust offsets for the change
String newReplace;
if (importProposal instanceof AutoImportProposal){
newReplace =((AutoImportProposal)importProposal).getImportDeclaration() .replaceAll(";", ""); //$NON-NLS-1$ //$NON-NLS-2$
}
else{
newReplace = importProposal.getReplacementString().replaceAll(";", ""); //$NON-NLS-1$ //$NON-NLS-2$
}
importProposal.setReplacementString(newReplace);
String newDisplay = importProposal.getDisplayString().replaceAll(";", ""); //$NON-NLS-1$ //$NON-NLS-2$
importProposal.setDisplayString(newDisplay);
int newReplacementLength = importProposal.getReplacementLength() - 1;
if (newReplacementLength >= 0) {
importProposal.setReplacementLength(newReplacementLength);
}
int newCursorPosition = importProposal.getCursorPosition() - 1;
importProposal.setCursorPosition(newCursorPosition);
return importProposal;
}
}