blob: 39828521173defe86bd724f909d1c0c2c902c4e9 [file] [log] [blame]
package org.eclipse.dltk.ui.templates;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.TextUtilities;
import org.eclipse.jface.text.templates.Template;
import org.eclipse.jface.text.templates.TemplateBuffer;
import org.eclipse.jface.text.templates.TemplateContext;
import org.eclipse.jface.text.templates.TemplateException;
import org.eclipse.jface.text.templates.TemplateProposal;
import org.eclipse.swt.graphics.Image;
public class ScriptTemplateProposal extends TemplateProposal {
public ScriptTemplateProposal(Template template, TemplateContext context,
IRegion region, Image image, int relevance) {
super(template, context, region, image, relevance);
}
private boolean isRelevanceOverriden;
private int relevanceOverride;
/* (non-Javadoc)
* @see org.eclipse.jface.text.templates.TemplateProposal#getRelevance()
*/
public int getRelevance() {
return isRelevanceOverriden ? relevanceOverride: super.getRelevance();
}
public void setRelevance(int value) {
this.relevanceOverride = value;
this.isRelevanceOverriden = true;
}
public String getAdditionalProposalInfo() {
TemplateContext context = getContext();
if (context instanceof ScriptTemplateContext) {
ScriptTemplateContext scriptContext = (ScriptTemplateContext) context;
try {
getContext().setReadOnly(true);
TemplateBuffer templateBuffer;
templateBuffer = scriptContext.evaluate(getTemplate());
// restore indenting
IDocument document = scriptContext.getDocument();
String indenting = ScriptTemplateContext.calculateIndent(
document, scriptContext.getStart());
String delimeter = TextUtilities.getDefaultLineDelimiter(document);
String info = templateBuffer.getString();
return info.replaceAll(delimeter + indenting, delimeter);
} catch (BadLocationException e) {
} catch (TemplateException e1) {
}
}
return null;
}
public String getPattern() {
return getTemplate().getPattern();
}
}