Java 类org.eclipse.jface.text.templates.TemplateContext 实例源码

项目:ftc    文件:TweakedTemplateProposal.java   
/**
 * Creates a template proposal with a template and its context.
 *
 * @param template
 *            the template
 * @param context
 *            the context in which the template was requested.
 * @param image
 *            the icon of the proposal.
 * @param region
 *            the region this proposal is applied to
 * @param relevance
 *            the relevance of the proposal
 */
public TweakedTemplateProposal(Template template, TemplateContext context, IRegion region, Image image,
        int relevance) {
    Assert.isNotNull(template);
    Assert.isNotNull(context);
    Assert.isNotNull(region);

    fTemplate = template;

    Check.isTrue(context instanceof FtcDocumentTemplateContext);
    fContext = (FtcDocumentTemplateContext) context;

    fImage = image;
    fRegion = region;

    fDisplayString = null;

    fRelevance = relevance;
}
项目:ftc    文件:FtcVariableResolver.java   
@Override
protected String[] resolveAll(TemplateContext context) {

    Check.isTrue(context instanceof FtcDocumentTemplateContext);
    FtcDocumentTemplateContext ftcContext = (FtcDocumentTemplateContext) context;

    String pattern = ftcContext.getCurrentTemplate().getPattern();
    Check.notNull(pattern);
    String currentText = ftcContext.getDocument().get();
    ICompletionProposal[] proposals = createCompletionProposals(ftcContext.getCompletionOffset(), getType(),
            pattern, currentText);

    String[] result = new String[proposals.length];
    for (int i = 0; i < proposals.length; i++)
        result[i] = proposals[i].getDisplayString();
    return result;
}
项目:dsl-devkit    文件:CheckCfgTemplateProposalProvider.java   
@Override
protected void createTemplates(final TemplateContext templateContext, final ContentAssistContext context, final ITemplateAcceptor acceptor) {
  if (templateContext.getContextType().getId().equals("com.avaloq.tools.ddk.checkcfg.CheckCfg.ConfiguredCheck")) { //$NON-NLS-1$
    addConfiguredCheckTemplates(templateContext, context, acceptor);
    return;
  } else if (templateContext.getContextType().getId().equals("com.avaloq.tools.ddk.checkcfg.CheckCfg.kw_catalog")) { //$NON-NLS-1$
    addCatalogConfigurations(templateContext, context, acceptor);
  }
  TemplateContextType contextType = templateContext.getContextType();
  Template[] templates = templateStore.getTemplates(contextType.getId());
  for (Template template : templates) {

    if (!acceptor.canAcceptMoreTemplates()) {
      return;
    }
    if (validate(template, templateContext)) {
      acceptor.accept(createProposal(template, templateContext, context, getImage(template), getRelevance(template)));
    }
  }
}
项目:che    文件:ImportsResolver.java   
@Override
public void resolve(TemplateVariable variable, TemplateContext context) {
  variable.setUnambiguous(true);
  variable.setValue(""); // $NON-NLS-1$

  if (context instanceof JavaContext) {
    JavaContext jc = (JavaContext) context;
    List<String> params = variable.getVariableType().getParams();
    if (params.size() > 0) {
      for (Iterator<String> iterator = params.iterator(); iterator.hasNext(); ) {
        String typeName = iterator.next();
        jc.addImport(typeName);
      }
    }
  } else {
    super.resolve(variable, context);
  }
}
项目:che    文件:StaticImportResolver.java   
@Override
public void resolve(TemplateVariable variable, TemplateContext context) {
  variable.setUnambiguous(true);
  variable.setValue(""); // $NON-NLS-1$

  if (context instanceof JavaContext) {
    JavaContext jc = (JavaContext) context;
    List<String> params = variable.getVariableType().getParams();
    if (params.size() > 0) {
      for (Iterator<String> iterator = params.iterator(); iterator.hasNext(); ) {
        String qualifiedMemberName = iterator.next();
        jc.addStaticImport(qualifiedMemberName);
      }
    }
  } else {
    super.resolve(variable, context);
  }
}
项目:che    文件:CompilationUnitContextType.java   
@Override
protected String resolve(TemplateContext context) {
  IJavaElement element =
      ((CompilationUnitContext) context).findEnclosingElement(IJavaElement.METHOD);
  if (element == null) return null;

  IMethod method = (IMethod) element;

  try {
    String[] arguments = method.getParameterNames();
    StringBuffer buffer = new StringBuffer();

    for (int i = 0; i < arguments.length; i++) {
      if (i > 0) buffer.append(", "); // $NON-NLS-1$
      buffer.append(arguments[i]);
    }

    return buffer.toString();

  } catch (JavaModelException e) {
    return null;
  }
}
项目:che    文件:JavaFormatter.java   
/**
 * Formats the template buffer.
 *
 * @param buffer
 * @param context
 * @throws BadLocationException
 */
public void format(TemplateBuffer buffer, TemplateContext context) throws BadLocationException {
  try {
    VariableTracker tracker = new VariableTracker(buffer);
    IDocument document = tracker.getDocument();

    internalFormat(document, context);
    convertLineDelimiters(document);
    if (!(context instanceof JavaDocContext) && !isReplacedAreaEmpty(context))
      trimStart(document);

    tracker.updateBuffer();
  } catch (MalformedTreeException e) {
    throw new BadLocationException();
  }
}
项目:che    文件:JavaFormatter.java   
private boolean isReplacedAreaEmpty(TemplateContext context) {
  // don't trim the buffer if the replacement area is empty
  // case: surrounding empty lines with block
  if (context instanceof DocumentTemplateContext) {
    DocumentTemplateContext dtc = (DocumentTemplateContext) context;
    if (dtc.getStart() == dtc.getCompletionOffset())
      try {
        IDocument document = dtc.getDocument();
        int lineOffset = document.getLineInformationOfOffset(dtc.getStart()).getOffset();
        // only if we are at the beginning of the line
        if (lineOffset != dtc.getStart()) return false;

        // Does the selection only contain whitespace characters?
        if (document.get(dtc.getStart(), dtc.getEnd() - dtc.getStart()).trim().length() == 0)
          return true;
      } catch (BadLocationException x) {
        // ignore - this may happen when the document was modified after the initial invocation,
        // and the
        // context does not track the changes properly - don't trim in that case
        return true;
      }
  }
  return false;
}
项目:che    文件:ElementTypeResolver.java   
@Override
public void resolve(TemplateVariable variable, TemplateContext context) {
  if (!(variable instanceof MultiVariable)) {
    super.resolve(variable, context);
    return;
  }
  MultiVariable mv = (MultiVariable) variable;
  List<String> params = variable.getVariableType().getParams();
  if (params.isEmpty()) {
    super.resolve(variable, context);
    return;
  }

  JavaContext jc = (JavaContext) context;
  String reference = params.get(0);
  TemplateVariable refVar = jc.getTemplateVariable(reference);
  if (refVar instanceof JavaVariable) {
    JavaVariable jvar = (JavaVariable) refVar;
    resolve(mv, jvar, jc);
    return;
  }

  super.resolve(variable, context);
}
项目:che    文件:AbstractJavaContextType.java   
@Override
public void resolve(TemplateVariable variable, TemplateContext context) {
  if (variable instanceof MultiVariable) {
    JavaContext jc = (JavaContext) context;
    JavaVariable jv = (JavaVariable) variable;
    Variable[] iterables = getVariables(jc);
    if (iterables.length > 0) {
      jv.setChoices(iterables);
      jc.markAsUsed(iterables[0].getName());

      if (iterables.length > 1) variable.setUnambiguous(false);
      else variable.setUnambiguous(isUnambiguous(context));

      return;
    }
  }

  super.resolve(variable, context);
}
项目:brainfuck    文件:BfTemplateCompletionProcessor.java   
@Override
protected TemplateContext createContext(ITextViewer viewer, IRegion region) {
    TemplateContext context = null;
    TemplateContextType contextType= getContextType(viewer, region);
    if (contextType != null) {
        IDocument document= viewer.getDocument();
        context =  new BfTemplateContext(contextType, document, region.getOffset(), region.getLength());
    }
    if (context == null) {
        return null;
    }
    try {
        String prefix = viewer.getDocument().get(region.getOffset(), region.getLength());
        int i = 0;
        for (String param : parseParameters(prefix)) {
            context.setVariable("x" + (i++), param);
        }
    } 
    catch (BadLocationException ex) {
        BfActivator.getDefault().logError("Prefix for Template could not be computed", ex);
    }
    return context;
}
项目:brainfuck    文件:ExpressionEvaluator.java   
@Override
int calculateValue(TemplateContext context) {
    String parseValue = null;
    if (this.isVariable) {
        parseValue = context.getVariable(this.value);
        if (parseValue == null) {
            String contextInfo = "";
            if (context instanceof DocumentTemplateContext) {
                contextInfo = ": '" + ((DocumentTemplateContext) context).getKey() + "'";
            }
            throw new VariableEvaluationException("Variable " + this.value + " is undefined in context"+ contextInfo);
        }
        parseValue = this.sign + parseValue;
    }
    else {
        parseValue = this.value;
    }
    try {
        return Integer.parseInt(parseValue);
    }
    catch (NumberFormatException ex) {
        throw new VariableEvaluationException(ex.getMessage(), ex);
    }
}
项目:brainfuck    文件:ExpressionEvaluator.java   
@Override
int calculateValue(TemplateContext context) {
    if (op == null) {
        return left.calculateValue(context);
    }
    switch (op) {
        case MULTPLY :
            return left.calculateValue(context) * right.calculateValue(context);
        case DIVIDE :
            return left.calculateValue(context) / right.calculateValue(context);
        case MODULO :
            return left.calculateValue(context) % right.calculateValue(context);
        case ADD :
            return left.calculateValue(context) + right.calculateValue(context);
        case SUBTRACT :
            return left.calculateValue(context) - right.calculateValue(context);
        default :
            throw new VariableEvaluationException("Invalid Operator" + op);

    }
}
项目:APICloud-Studio    文件:TabStopVariableResolver.java   
@SuppressWarnings("unchecked")
@Override
public void resolve(TemplateVariable variable, TemplateContext context)
{
    if (!variable.getVariableType().getParams().isEmpty())
    {
        String[] values = (String[]) variable.getVariableType().getParams().toArray(new String[0]);
        variable.setValues(values);
        variable.setUnambiguous(false);
        variable.setResolved(true);
    }
    else
    {
        super.resolve(variable, context);
        setEvaluationString(variable.getName());
    }
}
项目:APICloud-Studio    文件:SnippetsCompletionProcessor.java   
public static void insertAsTemplate(ITextViewer textViewer, final IRegion region, String templateText,
        CommandElement commandElement)
{
    SnippetsCompletionProcessor snippetsCompletionProcessor = new SnippetsCompletionProcessor();
    Template template = new SnippetTemplate(commandElement, templateText);
    TemplateContext context = snippetsCompletionProcessor.createContext(textViewer, region);
    SnippetTemplateProposal completionProposal = (SnippetTemplateProposal) snippetsCompletionProcessor
            .createProposal(template, context, region, 0);
    completionProposal.setTemplateProposals(new ICompletionProposal[] { completionProposal });
    completionProposal.apply(textViewer, '0', SWT.NONE, region.getOffset());

    Point selection = completionProposal.getSelection(textViewer.getDocument());
    if (selection != null)
    {
        textViewer.setSelectedRange(selection.x, selection.y);
        textViewer.revealRange(selection.x, selection.y);
    }
}
项目:Eclipse-Postfix-Code-Completion    文件:TypeResolver.java   
@Override
public void resolve(TemplateVariable variable, TemplateContext context) {
    List<String> params= variable.getVariableType().getParams();
    String param;
    if (params.size() == 0)
        param= fDefaultType;
    else
        param= params.get(0);

    JavaContext jc= (JavaContext) context;
    MultiVariable mv= (MultiVariable) variable;

    String reference= jc.addImport(param);
    mv.setValue(reference);
    mv.setUnambiguous(true);
}
项目:Eclipse-Postfix-Code-Completion    文件:ImportsResolver.java   
@Override
public void resolve(TemplateVariable variable, TemplateContext context) {
    variable.setUnambiguous(true);
    variable.setValue(""); //$NON-NLS-1$

    if (context instanceof JavaContext) {
        JavaContext jc= (JavaContext) context;
        List<String> params= variable.getVariableType().getParams();
        if (params.size() > 0) {
            for (Iterator<String> iterator= params.iterator(); iterator.hasNext();) {
                String typeName= iterator.next();
                jc.addImport(typeName);
            }
        }
    } else {
        super.resolve(variable, context);
    }
}
项目:Eclipse-Postfix-Code-Completion    文件:CompilationUnitContextType.java   
@Override
protected String resolve(TemplateContext context) {
    IJavaElement element= ((CompilationUnitContext) context).findEnclosingElement(IJavaElement.METHOD);
    if (element == null)
        return null;

    IMethod method= (IMethod) element;

    try {
        String[] arguments= method.getParameterNames();
        StringBuffer buffer= new StringBuffer();

        for (int i= 0; i < arguments.length; i++) {
            if (i > 0)
                buffer.append(", "); //$NON-NLS-1$
            buffer.append(arguments[i]);
        }

        return buffer.toString();

    } catch (JavaModelException e) {
        return null;
    }
}
项目:glassmaker    文件:NewCardTemplatesWizardPage.java   
/**
 * Returns template string to insert.
 * 
 * @return String to insert or null if none is to be inserted
 */
String getTemplateString() {
    String templateString = null;

    Template template = getSelectedTemplate();
    if (template != null) {
        TemplateContextType contextType = GlassmakerUIPlugin.getDefault().getTemplateContextRegistry().getContextType(CardContextType.CONTEXT_TYPE);
        IDocument document = new Document();
        TemplateContext context = new DocumentTemplateContext(contextType, document, 0, 0);
        try {
            TemplateBuffer buffer = context.evaluate(template);
            templateString = buffer.getString();
        }
        catch (Exception e) {
            GlassmakerUIPlugin.logError("Could not create template for new html", e); 
        }
    }

    return templateString;
}
项目:Eclipse-Postfix-Code-Completion    文件:JavaFormatter.java   
/**
 * Formats the template buffer.
 * @param buffer
 * @param context
 * @throws BadLocationException
 */
public void format(TemplateBuffer buffer, TemplateContext context) throws BadLocationException {
    try {
        VariableTracker tracker= new VariableTracker(buffer);
        IDocument document= tracker.getDocument();

        internalFormat(document, context);
        convertLineDelimiters(document);
        if (!(context instanceof JavaDocContext) && !isReplacedAreaEmpty(context))
            trimStart(document);

        tracker.updateBuffer();
    } catch (MalformedTreeException e) {
        throw new BadLocationException();
    }
}
项目:Eclipse-Postfix-Code-Completion    文件:JavaFormatter.java   
private boolean isReplacedAreaEmpty(TemplateContext context) {
    // don't trim the buffer if the replacement area is empty
    // case: surrounding empty lines with block
    if (context instanceof DocumentTemplateContext) {
        DocumentTemplateContext dtc= (DocumentTemplateContext) context;
        if (dtc.getStart() == dtc.getCompletionOffset())
            try {
                IDocument document= dtc.getDocument();
                int lineOffset= document.getLineInformationOfOffset(dtc.getStart()).getOffset();
                //only if we are at the beginning of the line
                if (lineOffset != dtc.getStart())
                    return false;

                //Does the selection only contain whitespace characters?
                if (document.get(dtc.getStart(), dtc.getEnd() - dtc.getStart()).trim().length() == 0)
                    return true;
            } catch (BadLocationException x) {
                // ignore - this may happen when the document was modified after the initial invocation, and the
                // context does not track the changes properly - don't trim in that case
                return true;
            }
    }
    return false;
}
项目:Eclipse-Postfix-Code-Completion    文件:ElementTypeResolver.java   
@Override
public void resolve(TemplateVariable variable, TemplateContext context) {
    if (!(variable instanceof MultiVariable)) {
        super.resolve(variable, context);
        return;
    }
    MultiVariable mv= (MultiVariable) variable;
    List<String> params= variable.getVariableType().getParams();
    if (params.isEmpty()) {
        super.resolve(variable, context);
        return;
    }

    JavaContext jc= (JavaContext) context;
    String reference= params.get(0);
    TemplateVariable refVar= jc.getTemplateVariable(reference);
    if (refVar instanceof JavaVariable) {
        JavaVariable jvar= (JavaVariable) refVar;
        resolve(mv, jvar, jc);
        return;
    }

    super.resolve(variable, context);
}
项目:Eclipse-Postfix-Code-Completion    文件:AbstractJavaContextType.java   
@Override
public void resolve(TemplateVariable variable, TemplateContext context) {
    if (variable instanceof MultiVariable) {
        JavaContext jc= (JavaContext) context;
        JavaVariable jv= (JavaVariable) variable;
        Variable[] iterables= getVariables(jc);
        if (iterables.length > 0) {
            jv.setChoices(iterables);
            jc.markAsUsed(iterables[0].getName());

            if (iterables.length > 1)
                variable.setUnambiguous(false);
            else
                variable.setUnambiguous(isUnambiguous(context));

            return;
        }
    }

    super.resolve(variable, context);
}
项目:Eclipse-Postfix-Code-Completion    文件:InnerExpressionResolver.java   
@Override
public void resolve(TemplateVariable variable, TemplateContext context) {
    if (context instanceof JavaStatementPostfixContext && variable instanceof JavaVariable) {
        JavaStatementPostfixContext c = (JavaStatementPostfixContext) context;
        JavaVariable jv = (JavaVariable) variable;
        List<String> params = variable.getVariableType().getParams();

        if (!params.contains(HIDE_FLAG)) {
            jv.setValue(resolve(context));
        } else {
            jv.setValues(new String[] { "", resolve(context) }); // We hide the value from the output
        }

        jv.setParamType(c.getInnerExpressionTypeSignature());
        jv.setResolved(true);
        jv.setUnambiguous(true);
        return;
    }
    super.resolve(variable, context);
}
项目:Eclipse-Postfix-Code-Completion-Juno38    文件:TypeResolver.java   
@Override
public void resolve(TemplateVariable variable, TemplateContext context) {
    List<String> params= variable.getVariableType().getParams();
    String param;
    if (params.size() == 0)
        param= fDefaultType;
    else
        param= params.get(0);

    JavaContext jc= (JavaContext) context;
    MultiVariable mv= (MultiVariable) variable;

    String reference= jc.addImport(param);
    mv.setValue(reference);
    mv.setUnambiguous(true);
}
项目:Eclipse-Postfix-Code-Completion-Juno38    文件:ImportsResolver.java   
@Override
public void resolve(TemplateVariable variable, TemplateContext context) {
    variable.setUnambiguous(true);
    variable.setValue(""); //$NON-NLS-1$

    if (context instanceof JavaContext) {
        JavaContext jc= (JavaContext) context;
        List<String> params= variable.getVariableType().getParams();
        if (params.size() > 0) {
            for (Iterator<String> iterator= params.iterator(); iterator.hasNext();) {
                String typeName= iterator.next();
                jc.addImport(typeName);
            }
        }
    } else {
        super.resolve(variable, context);
    }
}
项目:Eclipse-Postfix-Code-Completion-Juno38    文件:StaticImportResolver.java   
@Override
public void resolve(TemplateVariable variable, TemplateContext context) {
    variable.setUnambiguous(true);
    variable.setValue(""); //$NON-NLS-1$

    if (context instanceof JavaContext) {
        JavaContext jc= (JavaContext) context;
        List<String> params= variable.getVariableType().getParams();
        if (params.size() > 0) {
            for (Iterator<String> iterator= params.iterator(); iterator.hasNext();) {
                String qualifiedMemberName= iterator.next();
                jc.addStaticImport(qualifiedMemberName);
            }
        }
    } else {
        super.resolve(variable, context);
    }
}
项目:Eclipse-Postfix-Code-Completion-Juno38    文件:CompilationUnitContextType.java   
@Override
protected String resolve(TemplateContext context) {
    IJavaElement element= ((CompilationUnitContext) context).findEnclosingElement(IJavaElement.METHOD);
    if (element == null)
        return null;

    IMethod method= (IMethod) element;

    try {
        String[] arguments= method.getParameterNames();
        StringBuffer buffer= new StringBuffer();

        for (int i= 0; i < arguments.length; i++) {
            if (i > 0)
                buffer.append(", "); //$NON-NLS-1$
            buffer.append(arguments[i]);
        }

        return buffer.toString();

    } catch (JavaModelException e) {
        return null;
    }
}
项目:Eclipse-Postfix-Code-Completion-Juno38    文件:InnerExpressionResolver.java   
@Override
public void resolve(TemplateVariable variable, TemplateContext context) {
    if (context instanceof JavaStatementPostfixContext && variable instanceof JavaVariable) {
        JavaStatementPostfixContext c = (JavaStatementPostfixContext) context;
        JavaVariable jv = (JavaVariable) variable;
        List<String> params = variable.getVariableType().getParams();

        if (!params.contains(HIDE_FLAG)) {
            jv.setValue(resolve(context));
        } else {
            jv.setValues(new String[] { "", resolve(context) }); // We hide the value from the output
        }

        jv.setParamType(c.getInnerExpressionTypeSignature());
        jv.setResolved(true);
        jv.setUnambiguous(true);
        return;
    }
    super.resolve(variable, context);
}
项目:Eclipse-Postfix-Code-Completion-Juno38    文件:JavaFormatter.java   
/**
 * Formats the template buffer.
 * @param buffer
 * @param context
 * @throws BadLocationException
 */
public void format(TemplateBuffer buffer, TemplateContext context) throws BadLocationException {
    try {
        VariableTracker tracker= new VariableTracker(buffer);
        IDocument document= tracker.getDocument();

        internalFormat(document, context);
        convertLineDelimiters(document);
        if (!(context instanceof JavaDocContext) && !isReplacedAreaEmpty(context))
            trimStart(document);

        tracker.updateBuffer();
    } catch (MalformedTreeException e) {
        throw new BadLocationException();
    }
}
项目:Eclipse-Postfix-Code-Completion-Juno38    文件:JavaFormatter.java   
private boolean isReplacedAreaEmpty(TemplateContext context) {
    // don't trim the buffer if the replacement area is empty
    // case: surrounding empty lines with block
    if (context instanceof DocumentTemplateContext) {
        DocumentTemplateContext dtc= (DocumentTemplateContext) context;
        if (dtc.getStart() == dtc.getCompletionOffset())
            try {
                IDocument document= dtc.getDocument();
                int lineOffset= document.getLineInformationOfOffset(dtc.getStart()).getOffset();
                //only if we are at the beginning of the line
                if (lineOffset != dtc.getStart())
                    return false;

                //Does the selection only contain whitespace characters?
                if (document.get(dtc.getStart(), dtc.getEnd() - dtc.getStart()).trim().length() == 0)
                    return true;
            } catch (BadLocationException x) {
                // ignore - this may happen when the document was modified after the initial invocation, and the
                // context does not track the changes properly - don't trim in that case
                return true;
            }
    }
    return false;
}
项目:Eclipse-Postfix-Code-Completion-Juno38    文件:ElementTypeResolver.java   
@Override
public void resolve(TemplateVariable variable, TemplateContext context) {
    if (!(variable instanceof MultiVariable)) {
        super.resolve(variable, context);
        return;
    }
    MultiVariable mv= (MultiVariable) variable;
    List<String> params= variable.getVariableType().getParams();
    if (params.isEmpty()) {
        super.resolve(variable, context);
        return;
    }

    JavaContext jc= (JavaContext) context;
    String reference= params.get(0);
    TemplateVariable refVar= jc.getTemplateVariable(reference);
    if (refVar instanceof JavaVariable) {
        JavaVariable jvar= (JavaVariable) refVar;
        resolve(mv, jvar, jc);
        return;
    }

    super.resolve(variable, context);
}
项目:pgcodekeeper    文件:SQLEditorTemplateAssistProcessor.java   
@Override
public ICompletionProposal[] computeCompletionProposals(ITextViewer viewer,
        int offset) {
    ITextSelection selection = (ITextSelection) viewer
            .getSelectionProvider().getSelection();
    // adjust offset to end of normalized selection
    if (selection.getOffset() == offset) {
        offset = selection.getOffset() + selection.getLength();
    }
    String prefix = extractPrefix(viewer, offset);
    Region region = new Region(offset - prefix.length(), prefix.length());
    TemplateContext context = createContext(viewer, region);
    if (context == null) {
        return new ICompletionProposal[0];
    }
    context.setVariable("selection", selection.getText()); // name of the selection variables {line, word_selection //$NON-NLS-1$
    Template[] templates = getTemplates(context.getContextType().getId());
    List<ICompletionProposal> matches = new ArrayList<>();
    for (Template template : templates) {
        try {
            context.getContextType().validate(template.getPattern());
        } catch (TemplateException e) {
            continue;
        }
        if (!prefix.equals("") && prefix.charAt(0) == '<') { //$NON-NLS-1$
            prefix = prefix.substring(1);
        }
        if (!prefix.equals("") //$NON-NLS-1$
                && (template.getName().startsWith(prefix) && template
                        .matches(prefix, context.getContextType().getId()))) {
            matches.add(createProposal(template, context, (IRegion) region,
                    getRelevance(template, prefix)));
        }
    }
    return matches.toArray(new ICompletionProposal[matches.size()]);
}
项目:pgcodekeeper    文件:SQLEditorTemplateAssistProcessor.java   
public List<ICompletionProposal> getAllTemplates(ITextViewer viewer,
        int offset) {
    List<ICompletionProposal> result = new ArrayList<>();
    String prefix = extractPrefix(viewer, offset);
    Region region = new Region(offset - prefix.length(), prefix.length());
    TemplateContext context = createContext(viewer, region);
    Template[] templates = getTemplates(context.getContextType().getId());
    for (Template template : templates) {
        result.add(createProposal(template, context, (IRegion) region,
                getRelevance(template, prefix)));
    }
    return result;
}
项目:ftc    文件:TweakedTemplateCompletionProcessor.java   
public ICompletionProposal[] computeCompletionProposals(ITextViewer viewer, int offset) {

        ITextSelection selection= (ITextSelection) viewer.getSelectionProvider().getSelection();

        // adjust offset to end of normalized selection
        if (selection.getOffset() == offset)
            offset= selection.getOffset() + selection.getLength();

        String prefix= extractPrefix(viewer, offset);
        Region region= new Region(offset - prefix.length(), prefix.length());
        TemplateContext context= createContext(viewer, region);
        if (context == null)
            return new ICompletionProposal[0];

        context.setVariable("selection", selection.getText()); // name of the selection variables {line, word}_selection //$NON-NLS-1$

        Template[] templates= getTemplates(context.getContextType().getId());

        List matches= new ArrayList();
        for (int i= 0; i < templates.length; i++) {
            Template template= templates[i];
            try {
                context.getContextType().validate(template.getPattern());
            } catch (TemplateException e) {
                continue;
            }
            if (template.matches(prefix, context.getContextType().getId()))
                matches.add(createProposal(template, context, (IRegion) region, getRelevance(template, prefix)));
        }

        Collections.sort(matches, fgProposalComparator);

        return (ICompletionProposal[]) matches.toArray(new ICompletionProposal[matches.size()]);
    }
项目:fluentmark    文件:FluentMkTemplateCompletionProcessor.java   
private boolean isSelectionBasedMatch(Template template, TemplateContext context) {
    String pattern = template.getPattern();
    Set<String> vars = new HashSet<String>();
    Matcher matcher = VARIABLE_PATTERN.matcher(pattern);
    while (matcher.find()) {
        String variableName = matcher.group(1);
        if (vars.add(variableName)) {
            String variable = context.getVariable(variableName);
            if (variable != null && variable.length() > 0) {
                return true;
            }
        }
    }
    return false;
}
项目:bts    文件:DefaultTemplateProposalProvider.java   
@Override
protected void createTemplates(TemplateContext templateContext, ContentAssistContext context, ITemplateAcceptor acceptor) {
    TemplateContextType contextType = templateContext.getContextType();
    Template[] templates = templateStore.getTemplates(contextType.getId());
    for (Template template : templates) {
        if (!acceptor.canAcceptMoreTemplates())
            return;
        if (validate(template, templateContext)) {
            acceptor.accept(createProposal(template, templateContext, context, getImage(template), getRelevance(template)));
        }
    }
}
项目:bts    文件:AbstractTemplateVariableResolver.java   
@Override
public void resolve(TemplateVariable variable, TemplateContext templateContext) {
    XtextTemplateContext castedContext = (XtextTemplateContext) templateContext;
    List<String> names = resolveValues(variable, castedContext);
    String[] bindings = names.toArray(new String[names.size()]);
    if (bindings.length != 0)
        variable.setValues(bindings);
    if (bindings.length > 1)
        variable.setUnambiguous(false);
    else
        variable.setUnambiguous(isUnambiguous(castedContext));
    variable.setResolved(true);
}
项目:bts    文件:AbstractTemplateProposalProvider.java   
public void createTemplates(ContentAssistContext context, ITemplateAcceptor acceptor) {
    if (!acceptor.canAcceptMoreTemplates())
        return;
    TemplateContext[] templateContexts = createTemplateContexts(context);
    if (templateContexts == null || templateContexts.length == 0)
        return;

    ITemplateAcceptor nullSafe = new NullSafeTemplateAcceptor(acceptor);
    for(TemplateContext templateContext: templateContexts) {
        if (!nullSafe.canAcceptMoreTemplates())
            return;
        templateContext.setVariable("selection", context.getSelectedText()); // name of the selection variables {line, word}_selection //$NON-NLS-1$
        createTemplates(templateContext, context, nullSafe);
    }
}
项目:bts    文件:AbstractTemplateProposalProvider.java   
protected boolean validate(Template template, TemplateContext context) {
    try {
        context.getContextType().validate(template.getPattern());
    } catch(TemplateException e) {
        return false;
    }
    return true;
}