/*******************************************************************************
* Copyright (c) 2004 Lukas Larsson and others.
* All rights reserved. This program and the accompanying materials
* are 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
*
* Contributors:
* Lukas Larsson
*******************************************************************************/
package org.erlide.ui.templates;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.Document;
import org.eclipse.jface.text.templates.DocumentTemplateContext;
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.TemplateVariable;
import org.eclipse.jface.text.templates.TemplateVariableResolver;
public class ModuleElementVariableResolver extends TemplateVariableResolver {
private final Template fTemplate;
private boolean reentry = false;
public ModuleElementVariableResolver(final String type, final Template template) {
super(type, "");
fTemplate = template;
}
@Override
public void resolve(final TemplateVariable variable,
final TemplateContext theContext) {
if (reentry) {
return;
}
reentry = true;
final DocumentTemplateContext context = new DocumentTemplateContext(
ErlangSourceContextTypeModule.getDefault(),
new Document(fTemplate.getPattern()), 0, fTemplate.getPattern().length());
TemplateBuffer tb;
try {
tb = context.evaluate(fTemplate);
variable.setValue(tb.getString());
} catch (final BadLocationException e) {
} catch (final TemplateException e) {
}
reentry = false;
}
}