下面列出了怎么用org.eclipse.jface.text.templates.GlobalTemplateVariables的API类实例代码及写法,或者点击链接到github查看源代码。
private void addGlobalResolvers()
{
// Global
addResolver(new GlobalTemplateVariables.Cursor());
addResolver(new GlobalTemplateVariables.WordSelection());
addResolver(new GlobalTemplateVariables.LineSelection());
addResolver(new GlobalTemplateVariables.Dollar());
addResolver(new GlobalTemplateVariables.Date());
addResolver(new GlobalTemplateVariables.Year());
addResolver(new GlobalTemplateVariables.Time());
addResolver(new GlobalTemplateVariables.User());
// Tabstops resolver
addResolver(new TabStopVariableResolver());
// Environment variables resolver
addResolver(new EnvironmentVariableVariableResolver());
}
/**
* Creates a java context type.
*/
public JavaDocContextType() {
// global
addResolver(new GlobalTemplateVariables.Cursor());
addResolver(new SurroundWithLineSelection());
addResolver(new SurroundWithWordSelection());
addResolver(new GlobalTemplateVariables.Dollar());
addResolver(new GlobalTemplateVariables.Date());
addResolver(new GlobalTemplateVariables.Year());
addResolver(new GlobalTemplateVariables.Time());
addResolver(new GlobalTemplateVariables.User());
// compilation unit
addResolver(new File());
addResolver(new PrimaryTypeName());
addResolver(new Method());
addResolver(new ReturnType());
addResolver(new Arguments());
addResolver(new Type());
addResolver(new Package());
addResolver(new Project());
}
private void addGlobalResolvers() {
addResolver(new GlobalTemplateVariables.Cursor());
addResolver(new GlobalTemplateVariables.WordSelection());
addResolver(new GlobalTemplateVariables.LineSelection());
addResolver(new GlobalTemplateVariables.Dollar());
addResolver(new GlobalTemplateVariables.Date());
addResolver(new GlobalTemplateVariables.Year());
addResolver(new GlobalTemplateVariables.Time());
addResolver(new GlobalTemplateVariables.User());
PyContextTypeVariables.addResolvers(this);
HashMap<String, Object> locals = new HashMap<String, Object>();
locals.put("py_context_type", this);
//execute all the files that start with 'pytemplate' that are located beneath
//the org.python.pydev.jython/jysrc directory and some user specified dir (if any).
JythonPlugin.execAll(locals, "pytemplate", interpreter);
}
protected void addDefaultTemplateVariables() {
addResolver(new GlobalTemplateVariables.WordSelection());
addResolver(new GlobalTemplateVariables.LineSelection());
addResolver(new GlobalTemplateVariables.Date());
addResolver(new GlobalTemplateVariables.Year());
addResolver(new GlobalTemplateVariables.Time());
addResolver(new GlobalTemplateVariables.Dollar());
addResolver(new GlobalTemplateVariables.User());
addResolver(new GlobalTemplateVariables.Cursor());
}
private void addGlobalResolvers() {
addResolver(new GlobalTemplateVariables.Cursor());
addResolver(new GlobalTemplateVariables.WordSelection());
addResolver(new GlobalTemplateVariables.LineSelection());
addResolver(new GlobalTemplateVariables.Dollar());
addResolver(new GlobalTemplateVariables.Date());
addResolver(new GlobalTemplateVariables.Year());
addResolver(new GlobalTemplateVariables.Time());
addResolver(new GlobalTemplateVariables.User());
}
private void addGlobalResolvers() {
addResolver(new GlobalTemplateVariables.Cursor());
addResolver(new GlobalTemplateVariables.WordSelection());
addResolver(new GlobalTemplateVariables.LineSelection());
addResolver(new GlobalTemplateVariables.Dollar());
addResolver(new GlobalTemplateVariables.Date());
addResolver(new GlobalTemplateVariables.Year());
addResolver(new GlobalTemplateVariables.Time());
addResolver(new GlobalTemplateVariables.User());
}
public BaseSourceCodeTemplateContextType() {
addResolver(new GlobalTemplateVariables.Date());
addResolver(new GlobalTemplateVariables.Cursor());
addResolver(new GlobalTemplateVariables.Dollar());
addResolver(new GlobalTemplateVariables.LineSelection());
addResolver(new GlobalTemplateVariables.User());
addResolver(new GlobalTemplateVariables.WordSelection());
addResolver(new GlobalTemplateVariables.Year());
addResolver(new GlobalTemplateVariables.Time());
}
public AbstractTypeScriptContextType(String name) {
super(name);
// global
addResolver(new GlobalTemplateVariables.Cursor());
addResolver(new GlobalTemplateVariables.WordSelection());
addResolver(new GlobalTemplateVariables.LineSelection());
addResolver(new GlobalTemplateVariables.Dollar());
addResolver(new GlobalTemplateVariables.Date());
addResolver(new GlobalTemplateVariables.Year());
addResolver(new GlobalTemplateVariables.Time());
addResolver(new GlobalTemplateVariables.User());
}
private void addGlobalResolvers() {
addResolver(new GlobalTemplateVariables.Cursor());
addResolver(new GlobalTemplateVariables.WordSelection());
addResolver(new GlobalTemplateVariables.LineSelection());
addResolver(new GlobalTemplateVariables.Dollar());
addResolver(new GlobalTemplateVariables.Date());
addResolver(new GlobalTemplateVariables.Year());
addResolver(new GlobalTemplateVariables.Time());
addResolver(new GlobalTemplateVariables.User());
}
private void addGlobalResolvers() {
addResolver(new GlobalTemplateVariables.Cursor());
addResolver(new GlobalTemplateVariables.WordSelection());
addResolver(new GlobalTemplateVariables.LineSelection());
addResolver(new GlobalTemplateVariables.Dollar());
addResolver(new GlobalTemplateVariables.Date());
addResolver(new GlobalTemplateVariables.Year());
addResolver(new GlobalTemplateVariables.Time());
addResolver(new GlobalTemplateVariables.User());
addResolver(new ElementNameResolver());
}
private int getCaretOffset(TemplateBuffer buffer)
{
TemplateVariable[] variables = buffer.getVariables();
for (int i = 0; i != variables.length; i++)
{
TemplateVariable variable = variables[i];
if (variable.getType().equals(GlobalTemplateVariables.Cursor.NAME))
return variable.getOffsets()[0];
}
return buffer.getString().length();
}
@Override
protected String resolve(TemplateContext context) {
String selection= context.getVariable(org.eclipse.jface.text.templates.GlobalTemplateVariables.SELECTION);
if (selection == null)
return ""; //$NON-NLS-1$
return selection;
}
@Override
protected void validateVariables(TemplateVariable[] variables) throws TemplateException {
// check for multiple cursor variables
for (int i= 0; i < variables.length; i++) {
TemplateVariable var= variables[i];
if (var.getType().equals(GlobalTemplateVariables.Cursor.NAME)) {
if (var.getOffsets().length > 1) {
throw new TemplateException(JavaTemplateMessages.ContextType_error_multiple_cursor_variables);
}
}
}
}
@Override
protected String resolve(TemplateContext context) {
String selection= context.getVariable(org.eclipse.jface.text.templates.GlobalTemplateVariables.SELECTION);
if (selection == null)
return ""; //$NON-NLS-1$
return selection;
}
/**
* Initializes the context type resolvers.
* <p>
* <strong>Note:</strong> Only call this method if this
* context type doesn't inherit from another context type
* which already has these resolvers.</p>
*
* @since 3.4
*/
public void initializeContextTypeResolvers() {
// global
addResolver(new GlobalTemplateVariables.Cursor());
addResolver(new GlobalTemplateVariables.WordSelection());
addResolver(new SurroundWithLineSelection());
addResolver(new GlobalTemplateVariables.Dollar());
addResolver(new GlobalTemplateVariables.Date());
addResolver(new GlobalTemplateVariables.Year());
addResolver(new GlobalTemplateVariables.Time());
addResolver(new GlobalTemplateVariables.User());
// compilation unit
addResolver(new File());
addResolver(new PrimaryTypeName());
addResolver(new ReturnType());
addResolver(new Method());
addResolver(new Type());
addResolver(new Package());
addResolver(new Project());
addResolver(new Arguments());
// java
addResolver(new Array());
addResolver(new ArrayType());
addResolver(new ArrayElement());
addResolver(new Index());
addResolver(new Iterator());
addResolver(new Collection());
addResolver(new Iterable());
addResolver(new IterableType());
addResolver(new IterableElement());
addResolver(new Todo());
}
private int getCaretOffset(TemplateBuffer buffer) {
TemplateVariable[] variables= buffer.getVariables();
for (int i= 0; i != variables.length; i++) {
TemplateVariable variable= variables[i];
if (variable.getType().equals(GlobalTemplateVariables.Cursor.NAME))
return variable.getOffsets()[0];
}
return buffer.getString().length();
}
@Override
protected String resolve(TemplateContext context) {
String selection= context.getVariable(GlobalTemplateVariables.SELECTION);
if (selection == null)
return "";
return selection;
}
protected void setupResolvers() {
addResolver(new GlobalTemplateVariables.Cursor());
addResolver(new GlobalTemplateVariables.WordSelection());
addResolver(new GlobalTemplateVariables.LineSelection());
addResolver(new GlobalTemplateVariables.Dollar());
addResolver(new GlobalTemplateVariables.Date());
addResolver(new GlobalTemplateVariables.Year());
addResolver(new GlobalTemplateVariables.Time());
addResolver(new GlobalTemplateVariables.User());
addAdditionalResolvers();
}
@Override
protected void validateVariables(TemplateVariable[] variables) throws TemplateException {
// check for multiple cursor variables
for(int i = 0; i < variables.length; i++) {
TemplateVariable var = variables[i];
if(var.getType().equals(GlobalTemplateVariables.Cursor.NAME)) {
if(var.getOffsets().length > 1) {
throw new TemplateException(JavaTemplateMessages.ContextType_error_multiple_cursor_variables);
}
}
}
}
/**
* Creates a new line selection variable
*/
public SurroundWithLineSelection() {
super(org.eclipse.jface.text.templates.GlobalTemplateVariables.LineSelection.NAME, JavaTemplateMessages.CompilationUnitContextType_variable_description_line_selection);
}
/**
* Creates a new word selection variable
*/
public SurroundWithWordSelection() {
super(org.eclipse.jface.text.templates.GlobalTemplateVariables.WordSelection.NAME, JavaTemplateMessages.JavaDocContextType_variable_description_word_selection);
}
protected ICompletionProposalHandle createProposal(PySelection pySelection, String source,
Tuple<Integer, String> offsetAndIndent, boolean requireEmptyLines, Pass replacePassStatement) {
int offset;
int len;
String indent = offsetAndIndent.o2;
if (replacePassStatement == null) {
len = 0;
offset = offsetAndIndent.o1;
if (requireEmptyLines) {
int checkLine = pySelection.getLineOfOffset(offset);
int lineOffset = pySelection.getLineOffset(checkLine);
//Make sure we have 2 spaces from the last thing written.
if (lineOffset == offset) {
//it'll be added to the start of the line, so, we have to analyze the previous line to know if we'll need
//to new lines at the start.
checkLine--;
}
if (checkLine >= 0) {
//It'll be added to the current line, so, check the current line and the previous line to know about spaces.
String line = pySelection.getLine(checkLine);
if (line.trim().length() >= 1) {
source = "\n\n" + source;
} else if (checkLine > 1) {
line = pySelection.getLine(checkLine - 1);
if (line.trim().length() > 0) {
source = "\n" + source;
}
}
}
//If we have a '\n', all is OK (all contents after a \n will be indented)
if (!source.startsWith("\n")) {
try {
//Ok, it doesn't start with a \n, that means we have to check the line indentation where it'll
//be added and make sure things are correct (eventually adding a new line or just fixing the indent).
String lineContentsToCursor = pySelection.getLineContentsToCursor(offset);
if (lineContentsToCursor.length() > 0) {
source = "\n" + source;
} else {
source = indent + source;
}
} catch (BadLocationException e) {
source = "\n" + source;
}
}
}
} else {
offset = pySelection.getAbsoluteCursorOffset(replacePassStatement.beginLine - 1,
replacePassStatement.beginColumn - 1);
len = 4; //pass.len
if (requireEmptyLines) {
source = "\n\n" + source;
}
}
if (targetEditor != null) {
String creationStr = getCreationStr();
Region region = new Region(offset, len);
//Note: was using new PyContextType(), but when we had something as ${user} it
//would end up replacing it with the actual name of the user, which is not what
//we want!
TemplateContextType contextType = new TemplateContextType();
contextType.addResolver(new GlobalTemplateVariables.Cursor()); //We do want the cursor thought.
PyDocumentTemplateContext context = PyDocumentTemplateContext.createContext(contextType,
((PyEdit) targetEditor).getPySourceViewer(), region, indent);
Template template = new Template("Create " + creationStr, "Create " + creationStr, "", source, true);
ICompletionProposalHandle templateProposal = CompletionProposalFactory.get()
.createPyTemplateProposal(template, context, region, null, 0);
return templateProposal;
} else {
//This should only happen in tests.
source = StringUtils.indentTo(source, indent, false);
return CompletionProposalFactory.get().createPyCompletionProposal(source, offset, len, 0, 0);
}
}
/**
* Creates a new line selection variable
*/
public SurroundWithLineSelection() {
super(GlobalTemplateVariables.LineSelection.NAME,
JavaTemplateMessages.CompilationUnitContextType_variable_description_line_selection);
}