Package tk.eclipse.plugin.jspeditor.editors

Source Code of tk.eclipse.plugin.jspeditor.editors.JSPScriptletAssistProcessor

package tk.eclipse.plugin.jspeditor.editors;

import java.util.ArrayList;
import java.util.List;

import org.eclipse.core.resources.IFile;
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.internal.core.DefaultWorkingCopyOwner;
import org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal;
import org.eclipse.jdt.ui.text.java.CompletionProposalCollector;
import org.eclipse.jdt.ui.text.java.IJavaCompletionProposal;
import org.eclipse.jface.text.ITextViewer;
import org.eclipse.jface.text.contentassist.ContextInformation;
import org.eclipse.jface.text.contentassist.ContextInformationValidator;
import org.eclipse.jface.text.contentassist.ICompletionProposal;
import org.eclipse.jface.text.contentassist.IContentAssistProcessor;
import org.eclipse.jface.text.contentassist.IContextInformation;
import org.eclipse.jface.text.contentassist.IContextInformationValidator;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IFileEditorInput;

import tk.eclipse.plugin.htmleditor.HTMLPlugin;
import tk.eclipse.plugin.htmleditor.HTMLUtil;
import tk.eclipse.plugin.jspeditor.compiler.CompileResult;
import tk.eclipse.plugin.jspeditor.compiler.JSPCompiler;

/**
* Provides code completion for Java code.
*
* @author Naoki Takezoe
* @since 2.0.3
*/
public class JSPScriptletAssistProcessor implements IContentAssistProcessor {

  private IFile file;
 
  public ICompletionProposal[] computeCompletionProposals(ITextViewer viewer, int offset) {
    if(file == null){
      return new ICompletionProposal[0];
    }
    try {
      CompileResult result = JSPCompiler.compile(viewer.getDocument().get());
      IJavaProject project = JavaCore.create(file.getProject());
      if(project != null){
        ICompilationUnit unit = HTMLUtil.getTemporaryCompilationUnit(project);
        HTMLUtil.setContentsToCU(unit, result.toString());
       
        CompletionProposalCollector collector = new CompletionProposalCollector(project);
        int headerLength = result.getHeader().length();
        unit.codeComplete(headerLength + offset,
            collector, DefaultWorkingCopyOwner.PRIMARY);
       
        IJavaCompletionProposal[] proposals = collector.getJavaCompletionProposals();
        List<ICompletionProposal> list = new ArrayList<ICompletionProposal>();
        for(int i=0;i<proposals.length;i++){
          if(proposals[i] instanceof AbstractJavaCompletionProposal){
            AbstractJavaCompletionProposal proposal = (AbstractJavaCompletionProposal)proposals[i];
            if(proposal.getDisplayString().endsWith("_xxx")){
              continue;
            }
            proposal.setReplacementOffset(proposal.getReplacementOffset() - headerLength);
            list.add(proposal);
          }
        }
        return list.toArray(new ICompletionProposal[list.size()]);
      }     
    } catch(Exception e){
      HTMLPlugin.logException(e);
    }
    return new ICompletionProposal[0];
  }

  public IContextInformation[] computeContextInformation(ITextViewer viewer, int offset) {
    ContextInformation[] info = new ContextInformation[0];
    return info;
  }

  public char[] getCompletionProposalAutoActivationCharacters() {
    return new char[0];
  }

  public char[] getContextInformationAutoActivationCharacters() {
    return new char[0];
  }

  public IContextInformationValidator getContextInformationValidator() {
    return new ContextInformationValidator(this);
  }

  public String getErrorMessage() {
    return "Error";
  }
 
 
  public void update(JSPSourceEditor editor){
    IEditorInput input = editor.getEditorInput();
    if(input instanceof IFileEditorInput){
      this.file = ((IFileEditorInput)input).getFile();
    }
  }

}
TOP

Related Classes of tk.eclipse.plugin.jspeditor.editors.JSPScriptletAssistProcessor

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.