import com.intellij.codeInsight.template.CustomTemplateCallback;
import com.intellij.codeInsight.template.impl.TemplateImpl;
+import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.fileTypes.StdFileTypes;
import com.intellij.openapi.util.Pair;
private static void invokeTemplate(TemplateToken token,
final CustomTemplateCallback callback,
- int numberInIteration,
+ final int numberInIteration,
String filter) {
if (token instanceof XmlTemplateToken && token.getTemplate() != null) {
XmlTemplateToken xmlTemplateToken = (XmlTemplateToken)token;
- List<Pair<String, String>> attr2value = new ArrayList<Pair<String, String>>(xmlTemplateToken.getAttribute2Value());
+ final List<Pair<String, String>> attr2value = new ArrayList<Pair<String, String>>(xmlTemplateToken.getAttribute2Value());
TemplateImpl modifiedTemplate = token.getTemplate().copy();
- XmlTag tag = xmlTemplateToken.getTag();
+ final XmlTag tag = xmlTemplateToken.getTag();
if (tag != null) {
- for (Iterator<Pair<String, String>> iterator = attr2value.iterator(); iterator.hasNext();) {
- Pair<String, String> pair = iterator.next();
- if (tag.getAttribute(pair.first) != null) {
- tag.setAttribute(pair.first, ZenCodingUtil.getValue(pair, numberInIteration));
- iterator.remove();
+ ApplicationManager.getApplication().runWriteAction(new Runnable() {
+ public void run() {
+ setAttributeValues(tag, attr2value, numberInIteration);
}
- }
+ });
String s = filterXml(tag, callback, filter);
assert s != null;
if (HtmlUtil.isHtmlBlockTagL(tag.getName())) {
}
}
+ private static void setAttributeValues(XmlTag tag, List<Pair<String, String>> attr2value, int numberInIteration) {
+ for (Iterator<Pair<String, String>> iterator = attr2value.iterator(); iterator.hasNext();) {
+ Pair<String, String> pair = iterator.next();
+ if (tag.getAttribute(pair.first) != null) {
+ tag.setAttribute(pair.first, ZenCodingUtil.getValue(pair, numberInIteration));
+ iterator.remove();
+ }
+ }
+ }
+
@Nullable
private static String filterXml(XmlTag tag, CustomTemplateCallback callback, String filterSuffix) {
PsiElement context = callback.getContext();
import com.intellij.codeInsight.template.TemplateInvokationListener;
import com.intellij.codeInsight.template.impl.TemplateImpl;
import com.intellij.lang.xml.XMLLanguage;
+import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.fileTypes.FileType;
import com.intellij.openapi.fileTypes.StdFileTypes;
if (template == null && !isXML11ValidQName(prefix)) {
return null;
}
- XmlTemplateToken token = parseSelectors(key);
+ final XmlTemplateToken token = parseSelectors(key);
if (token == null) {
return null;
}
}
assert prefix.equals(token.getKey());
token.setTemplate(template);
- XmlTag tag = parseXmlTagInTemplate(template.getString(), callback, true);
+ final XmlTag tag = parseXmlTagInTemplate(template.getString(), callback, true);
if (token.getAttribute2Value().size() > 0 && tag == null) {
return null;
}
if (tag != null) {
if (!XmlZenCodingInterpreter.containsAttrsVar(template) && token.getAttribute2Value().size() > 0) {
- addMissingAttributes(tag, token.getAttribute2Value());
+ ApplicationManager.getApplication().runWriteAction(new Runnable() {
+ public void run() {
+ addMissingAttributes(tag, token.getAttribute2Value());
+ }
+ });
}
token.setTag(tag);
}