clearing readonly status before changes

This commit is contained in:
Eugene Zhuravlev
2015-04-22 13:48:26 +02:00
parent f5e49637bc
commit b455f3f9ff
2 changed files with 20 additions and 6 deletions
@@ -15,6 +15,7 @@
*/
package com.intellij.lang.ant.quickfix;
import com.intellij.codeInsight.FileModificationService;
import com.intellij.codeInspection.LocalQuickFix;
import com.intellij.codeInspection.ProblemDescriptor;
import com.intellij.lang.ant.AntBundle;
@@ -36,6 +37,8 @@ import com.intellij.util.xml.DomUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Collections;
public class AntCreatePropertyFix implements LocalQuickFix {
private static final String PROPERTY = "property";
private static final String NAME_ATTR = "name";
@@ -67,18 +70,29 @@ public class AntCreatePropertyFix implements LocalQuickFix {
final PsiElement psiElement = descriptor.getPsiElement();
final PsiFile containingFile = psiElement.getContainingFile();
final FileModificationService modificationService = FileModificationService.getInstance();
Navigatable result = null;
if (myPropFile != null) {
final IProperty generatedProperty = myPropFile.addProperty(myCanonicalText, "");
final VirtualFile vFile = myPropFile.getVirtualFile();
result = vFile != null? new OpenFileDescriptor(project, vFile, generatedProperty.getPsiElement().getTextRange().getEndOffset()) : generatedProperty;
boolean canModify = true;
if (myPropFile instanceof PsiFile) {
canModify = modificationService.prepareFileForWrite((PsiFile)myPropFile);
}
else if (vFile != null) {
canModify = modificationService.prepareVirtualFilesForWrite(project, Collections.singleton(vFile));
}
if (canModify) {
final IProperty generatedProperty = myPropFile.addProperty(myCanonicalText, "");
result = vFile != null? new OpenFileDescriptor(project, vFile, generatedProperty.getPsiElement().getTextRange().getEndOffset()) : generatedProperty;
}
}
else {
if (containingFile instanceof XmlFile) {
final XmlFile xmlFile = (XmlFile)containingFile;
final XmlTag rootTag = xmlFile.getRootTag();
if (rootTag != null) {
if (rootTag != null && modificationService.prepareFileForWrite(xmlFile)) {
final XmlTag propTag = rootTag.createChildTag(PROPERTY, rootTag.getNamespace(), null, false);
propTag.setAttribute(NAME_ATTR, myCanonicalText);
propTag.setAttribute(VALUE_ATTR, "");
@@ -15,6 +15,7 @@
*/
package com.intellij.lang.ant.quickfix;
import com.intellij.codeInsight.FileModificationService;
import com.intellij.codeInspection.LocalQuickFix;
import com.intellij.codeInspection.ProblemDescriptor;
import com.intellij.lang.ant.AntBundle;
@@ -53,12 +54,11 @@ public class AntCreateTargetFix implements LocalQuickFix {
final PsiElement psiElement = descriptor.getPsiElement();
final PsiFile containingFile = psiElement.getContainingFile();
Navigatable result = null;
if (containingFile instanceof XmlFile) {
final XmlFile xmlFile = (XmlFile)containingFile;
final XmlTag rootTag = xmlFile.getRootTag();
if (rootTag != null) {
if (rootTag != null && FileModificationService.getInstance().prepareFileForWrite(xmlFile)) {
final XmlTag propTag = rootTag.createChildTag(TAG_NAME, rootTag.getNamespace(), "", false);
propTag.setAttribute(NAME_ATTR, myCanonicalText);
final DomElement contextElement = DomUtil.getDomElement(descriptor.getPsiElement());