/*******************************************************************************
* Copyright (c) 2007 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is 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
*
* Contributor:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.common.el.ui.ca;
import java.util.Arrays;
import java.util.List;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jdt.ui.text.java.ContentAssistInvocationContext;
import org.eclipse.jdt.ui.text.java.IJavaCompletionProposalComputer;
import org.eclipse.jdt.ui.text.java.JavaContentAssistInvocationContext;
import org.eclipse.jface.text.contentassist.ICompletionProposal;
import org.eclipse.jface.text.contentassist.IContextInformation;
/**
* Custom Java Completion Proposal computer
*
* @author Jeremy
*/
public abstract class JavaELProposalComputer implements IJavaCompletionProposalComputer {
/**
* Default constructor to make it instantiatable via the extension mechanism.
*/
public JavaELProposalComputer() {
}
protected abstract ELProposalProcessor getELProcessor();
/*
* @see org.eclipse.jface.text.contentassist.ICompletionProposalComputer#computeCompletionProposals(org.eclipse.jface.text.contentassist.TextContentAssistInvocationContext, org.eclipse.core.runtime.IProgressMonitor)
*/
public List<ICompletionProposal> computeCompletionProposals(ContentAssistInvocationContext context, IProgressMonitor monitor) {
if(context instanceof JavaContentAssistInvocationContext) {
int start = ((JavaContentAssistInvocationContext)context).getCoreContext().getTokenStart();
int end = ((JavaContentAssistInvocationContext)context).getCoreContext().getTokenEnd();
if(start >= 0 && end >= start) {
return Arrays.asList(getELProcessor().computeCompletionProposals(context.getViewer(), context.getInvocationOffset(), start, end));
}
}
return Arrays.asList(getELProcessor().computeCompletionProposals(context.getViewer(), context.getInvocationOffset()));
}
/*
* @see org.eclipse.jface.text.contentassist.ICompletionProposalComputer#computeContextInformation(org.eclipse.jface.text.contentassist.TextContentAssistInvocationContext, org.eclipse.core.runtime.IProgressMonitor)
*/
public List<IContextInformation> computeContextInformation(ContentAssistInvocationContext context, IProgressMonitor monitor) {
return Arrays.asList(getELProcessor().computeContextInformation(context.getViewer(), context.getInvocationOffset()));
}
/*
* @see org.eclipse.jface.text.contentassist.ICompletionProposalComputer#getErrorMessage()
*/
public String getErrorMessage() {
return getELProcessor().getErrorMessage();
}
/*
* @see org.eclipse.jdt.ui.text.java.IJavaCompletionProposalComputer#sessionStarted()
*/
public void sessionStarted() {
}
/*
* @see org.eclipse.jdt.ui.text.java.IJavaCompletionProposalComputer#sessionEnded()
*/
public void sessionEnded() {
}
}