Ich möchte auch dies und versuchte, eine benutzerdefinierte TemplateVariableResolver
zu erstellen, um es zu tun. (Ich habe bereits ein benutzerdefiniertes Resolver in Ort, die neuen UUIDs a la http://dev.eclipse.org/blogs/jdtui/2007/12/04/text-templates-2/ erzeugt.)
I einen benutzerdefinierten Resolver gemacht gebunden capitalize
:
public class CapitalizingVariableResolver extends TemplateVariableResolver {
@Override
public void resolve(TemplateVariable variable, TemplateContext context) {
@SuppressWarnings("unchecked")
final List<String> params = variable.getVariableType().getParams();
if (params.isEmpty())
return;
final String currentValue = context.getVariable(params.get(0));
if (currentValue == null || currentValue.length() == 0)
return;
variable.setValue(currentValue.substring(0, 1).toUpperCase() + currentValue.substring(1));
}
}
(plugin.xml :)
<extension point="org.eclipse.ui.editors.templates">
<resolver
class="com.foo.CapitalizingVariableResolver"
contextTypeId="java"
description="Resolves to the value of the variable named by the first argument, but with its first letter capitalized."
name="capitalized"
type="capitalize">
</resolver>
</extension>
, die ich so verwenden würde: (I in Java arbeite, ich sehe, dass Sie nicht zu sein scheinen)
public PropertyAccessor<${propertyType}> ${property:field}() {
return ${property};
}
public ${propertyType} get${capitalizedProperty:capitalize(property)}() {
return ${property}.get();
}
public void set${capitalizedProperty}(${propertyType} ${property}) {
this.${property}.set(${property});
}
Ab Eclipse 3.5 ist das Problem, dass mein benutzerdefinierter Resolver keine Chance hat, erneut aufzulösen, sobald ich einen Wert für die Variable property
angegeben habe. Es scheint, dass die Java-Entwicklungstools (Eclipse JDT) diese abhängige Template-Variablen-Neuauflösung über einen Mechanismus namens MultiVariableGuess
innerhalb der JavaContext
(siehe addDependency()
) durchführen. Leider scheint dieser Mechanismus nicht offen gelegt zu werden, so dass ich/wir ihn nicht benutzen können (ohne viel Kopieren und Einfügen oder andere überflüssige Arbeit).
An diesem Punkt gebe ich wieder für eine Weile auf und tippe die Groß- und Kleinbuchstaben weiterhin getrennt in zwei unabhängige Template-Variablen ein.
Dies ist eine großartige Antwort. Vielen Dank. – Michal