From baa4f4cd22e10fc818c86b105476a06b9e9d6d57 Mon Sep 17 00:00:00 2001 From: Anna Bulenkova Date: Fri, 13 Mar 2015 14:15:36 +0100 Subject: [PATCH] [site] quick fix --- _SUMMARY.md | 2 +- img/cls_tutorial/quick_fix.png | Bin 0 -> 65441 bytes quick_fix.md | 182 +++++++++++++++++++++++++++++++++ 3 files changed, 183 insertions(+), 1 deletion(-) create mode 100644 img/cls_tutorial/quick_fix.png create mode 100644 quick_fix.md diff --git a/_SUMMARY.md b/_SUMMARY.md index bb22ee5f2..14d19b392 100644 --- a/_SUMMARY.md +++ b/_SUMMARY.md @@ -58,6 +58,6 @@ * [Formatter](formatter.html) * [Code Style Settings](code_style_settings.html) * [Commenter](commenter.html) - * [Quick Fix](TODO) + * [Quick Fix](quick_fix.html) diff --git a/img/cls_tutorial/quick_fix.png b/img/cls_tutorial/quick_fix.png new file mode 100644 index 0000000000000000000000000000000000000000..47e73c2d5a8cbfbc8142f92f3c0790b4b09f3d58 GIT binary patch literal 65441 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

QP=$@TTDmx0vr%JAi~Eq)c5@Apu% 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 L`?BiAn@|4(%eRWu literal 0 HcmV?d00001 diff --git a/quick_fix.md b/quick_fix.md new file mode 100644 index 000000000..8191e59ab --- /dev/null +++ b/quick_fix.md @@ -0,0 +1,182 @@ +--- +title: Quick Fix +--- + + + +A quick fix allows to apply an automatic changes to the code via *⌥⏎*. + +Let's add a quick fix which helps to define an unresolved property from its usage. + +### 1. Update the element factory + +```java +package com.simpleplugin.psi; + +import com.intellij.openapi.project.Project; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiFileFactory; +import com.simpleplugin.SimpleFileType; + +public class SimpleElementFactory { + public static SimpleProperty createProperty(Project project, String name, String value) { + final SimpleFile file = createFile(project, name + " = " + value); + return (SimpleProperty) file.getFirstChild(); + } + + public static SimpleProperty createProperty(Project project, String name) { + final SimpleFile file = createFile(project, name); + return (SimpleProperty) file.getFirstChild(); + } + + public static PsiElement createCRLF(Project project) { + final SimpleFile file = createFile(project, "\n"); + return file.getFirstChild(); + } + + public static SimpleFile createFile(Project project, String text) { + String name = "dummy.simple"; + return (SimpleFile) PsiFileFactory.getInstance(project). + createFileFromText(name, SimpleFileType.INSTANCE, text); + } +} +``` + +### 2. Define an intention action + +The quick fix will create a property in the file chosen by user, and navigate to this property after creation. + +```java +package com.simpleplugin; + +import com.intellij.codeInsight.intention.impl.BaseIntentionAction; +import com.intellij.lang.ASTNode; +import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.editor.Editor; +import com.intellij.openapi.fileChooser.FileChooser; +import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; +import com.intellij.openapi.fileEditor.FileEditorManager; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.pom.Navigatable; +import com.intellij.psi.PsiFile; +import com.intellij.psi.PsiManager; +import com.intellij.util.IncorrectOperationException; +import com.simpleplugin.psi.SimpleElementFactory; +import com.simpleplugin.psi.SimpleFile; +import com.simpleplugin.psi.SimpleProperty; +import com.simpleplugin.psi.SimpleTypes; +import org.jetbrains.annotations.NotNull; + +class CreatePropertyQuickFix extends BaseIntentionAction { + private String key; + + CreatePropertyQuickFix(String key) { + this.key = key; + } + + @NotNull + @Override + public String getText() { + return "Create property"; + } + + @NotNull + @Override + public String getFamilyName() { + return "Simple properties"; + } + + @Override + public boolean isAvailable(@NotNull Project project, Editor editor, PsiFile file) { + return true; + } + + @Override + public void invoke(@NotNull final Project project, final Editor editor, PsiFile file) throws IncorrectOperationException { + ApplicationManager.getApplication().invokeLater(new Runnable() { + @Override + public void run() { + final FileChooserDescriptor descriptor = FileChooserDescriptorFactory.createSingleFileDescriptor(SimpleFileType.INSTANCE); + descriptor.setRoots(project.getBaseDir()); + final VirtualFile file = FileChooser.chooseFile(descriptor, project, null); + if (file != null) { + ApplicationManager.getApplication().runWriteAction(new Runnable() { + @Override + public void run() { + SimpleFile simpleFile = (SimpleFile) PsiManager.getInstance(project).findFile(file); + ASTNode lastChildNode = simpleFile.getNode().getLastChildNode(); + if (lastChildNode != null && !lastChildNode.getElementType().equals(SimpleTypes.CRLF)) { + simpleFile.getNode().addChild(SimpleElementFactory.createCRLF(project).getNode()); + } + SimpleProperty property = SimpleElementFactory.createProperty(project, key, ""); + simpleFile.getNode().addChild(property.getNode()); + ((Navigatable) property.getLastChild().getNavigationElement()).navigate(true); + FileEditorManager.getInstance(project).getSelectedTextEditor().getCaretModel(). + moveCaretRelatively(2, 0, false, false, false); + } + }); + } + } + }); + } +} +``` + +### 3. Update the annotator + +```java +package com.simpleplugin; + +import com.intellij.lang.annotation.Annotation; +import com.intellij.lang.annotation.AnnotationHolder; +import com.intellij.lang.annotation.Annotator; +import com.intellij.openapi.editor.SyntaxHighlighterColors; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.TextRange; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiLiteralExpression; +import com.simpleplugin.psi.SimpleProperty; +import org.jetbrains.annotations.NotNull; + +import java.util.List; + +public class SimpleAnnotator implements Annotator { + @Override + public void annotate(@NotNull final PsiElement element, @NotNull AnnotationHolder holder) { + if (element instanceof PsiLiteralExpression) { + PsiLiteralExpression literalExpression = (PsiLiteralExpression) element; + String value = (String) literalExpression.getValue(); + if (value != null && value.startsWith("simple:")) { + Project project = element.getProject(); + String key = value.substring(7); + List properties = SimpleUtil.findProperties(project, key); + if (properties.size() == 1) { + TextRange range = new TextRange(element.getTextRange().getStartOffset() + 7, + element.getTextRange().getStartOffset() + 7); + Annotation annotation = holder.createInfoAnnotation(range, null); + annotation.setTextAttributes(SyntaxHighlighterColors.LINE_COMMENT); + } else if (properties.size() == 0) { + TextRange range = new TextRange(element.getTextRange().getStartOffset() + 8, + element.getTextRange().getEndOffset()); + holder.createErrorAnnotation(range, "Unresolved property"). + registerFix(new CreatePropertyQuickFix(key)); + } + } + } + } +} +``` + +### 4. Run the project + +Now let's try to use a property which is not defined yet. + +![Quick Fix](img/cls_tutorial/quick_fix.png) + +[Previous](commenter.html) +[Top](cls_tutorial.html) +