diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/RemoveRedundantElseAction.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/RemoveRedundantElseAction.java index f16949052faa..904a709a1e04 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/RemoveRedundantElseAction.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/RemoveRedundantElseAction.java @@ -90,10 +90,9 @@ public class RemoveRedundantElseAction extends PsiElementBaseIntentionAction { } @Override - public void invoke(@NotNull Project project, Editor editor, PsiFile file) throws IncorrectOperationException { - if (!CodeInsightUtilBase.prepareFileForWrite(file)) return; - PsiElement elementAt = file.findElementAt(editor.getCaretModel().getOffset()); - PsiIfStatement ifStatement = (PsiIfStatement)elementAt.getParent(); + public void invoke(@NotNull Project project, Editor editor, @NotNull PsiElement element) throws IncorrectOperationException { + if (!CodeInsightUtilBase.preparePsiElementForWrite(element)) return; + PsiIfStatement ifStatement = (PsiIfStatement)element.getParent(); LOG.assertTrue(ifStatement != null && ifStatement.getElseBranch() != null); PsiStatement elseBranch = ifStatement.getElseBranch(); if (elseBranch instanceof PsiBlockStatement) { diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/SurroundWithArrayFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/SurroundWithArrayFix.java index e6c566f08d2a..6f4b5d5d1893 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/SurroundWithArrayFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/SurroundWithArrayFix.java @@ -113,12 +113,12 @@ public class SurroundWithArrayFix extends PsiElementBaseIntentionAction { } @Override - public void invoke(@NotNull final Project project, final Editor editor, final PsiFile file) throws IncorrectOperationException { - if (!CodeInsightUtilBase.prepareFileForWrite(file)) return; + public void invoke(@NotNull Project project, Editor editor, @NotNull PsiElement element) throws IncorrectOperationException { + if (!CodeInsightUtilBase.preparePsiElementForWrite(element)) return; final PsiElementFactory elementFactory = JavaPsiFacade.getInstance(project).getElementFactory(); - final PsiExpression expression = getExpression(file.findElementAt(editor.getCaretModel().getOffset())); + final PsiExpression expression = getExpression(element); assert expression != null; - final PsiExpression toReplace = elementFactory.createExpressionFromText(getArrayCreation(expression), file); + final PsiExpression toReplace = elementFactory.createExpressionFromText(getArrayCreation(expression), element); JavaCodeStyleManager.getInstance(project).shortenClassReferences(expression.replace(toReplace)); } diff --git a/java/java-impl/src/com/intellij/codeInsight/intention/impl/AddOnDemandStaticImportAction.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/AddOnDemandStaticImportAction.java index 01cc21237bfb..c68401b9c27d 100644 --- a/java/java-impl/src/com/intellij/codeInsight/intention/impl/AddOnDemandStaticImportAction.java +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/AddOnDemandStaticImportAction.java @@ -160,11 +160,10 @@ public class AddOnDemandStaticImportAction extends PsiElementBaseIntentionAction }); } } - + @Override - public void invoke(@NotNull final Project project, final Editor editor, PsiFile file) throws IncorrectOperationException { - PsiElement element = file.findElementAt(editor.getCaretModel().getOffset()); - invoke(project, file, editor, element); + public void invoke(@NotNull Project project, Editor editor, @NotNull PsiElement element) throws IncorrectOperationException { + invoke(project, element.getContainingFile(), editor, element); } private static boolean isParameterizedReference(final PsiJavaCodeReferenceElement expression) { diff --git a/java/java-impl/src/com/intellij/codeInsight/intention/impl/AddSingleMemberStaticImportAction.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/AddSingleMemberStaticImportAction.java index ba22c9682e25..694310f10a82 100644 --- a/java/java-impl/src/com/intellij/codeInsight/intention/impl/AddSingleMemberStaticImportAction.java +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/AddSingleMemberStaticImportAction.java @@ -202,10 +202,9 @@ public class AddSingleMemberStaticImportAction extends PsiElementBaseIntentionAc }); } - + @Override - public void invoke(@NotNull final Project project, final Editor editor, PsiFile file) throws IncorrectOperationException { - PsiElement element = file.findElementAt(editor.getCaretModel().getOffset()); - invoke(file, element); + public void invoke(@NotNull Project project, Editor editor, @NotNull PsiElement element) throws IncorrectOperationException { + invoke(element.getContainingFile(), element); } } diff --git a/java/java-impl/src/com/intellij/codeInsight/intention/impl/BaseMoveInitializerToMethodAction.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/BaseMoveInitializerToMethodAction.java index a656448f7ce2..0f9081ceb6cb 100644 --- a/java/java-impl/src/com/intellij/codeInsight/intention/impl/BaseMoveInitializerToMethodAction.java +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/BaseMoveInitializerToMethodAction.java @@ -67,16 +67,17 @@ public abstract class BaseMoveInitializerToMethodAction extends PsiElementBaseIn @NotNull protected abstract Collection getUnsuitableModifiers(); - @Override - public final void invoke(@NotNull Project project, Editor editor, PsiFile file) throws IncorrectOperationException { - if (!CodeInsightUtilBase.prepareFileForWrite(file)) return; - final PsiField field = getFieldAtCaret(editor, file); + @Override + public void invoke(@NotNull Project project, Editor editor, @NotNull PsiElement element) throws IncorrectOperationException { + if (!CodeInsightUtilBase.preparePsiElementForWrite(element)) return; + + final PsiField field = PsiTreeUtil.getParentOfType(element, PsiField.class); assert field != null; final PsiClass aClass = field.getContainingClass(); if (aClass == null) return; - final Collection methodsToAddInitialization = getOrCreateMethods(project, editor, file, aClass); + final Collection methodsToAddInitialization = getOrCreateMethods(project, editor, element.getContainingFile(), aClass); final List assignments = addFieldAssignments(field, methodsToAddInitialization); @@ -117,11 +118,6 @@ public abstract class BaseMoveInitializerToMethodAction extends PsiElementBaseIn @NotNull protected abstract Collection getOrCreateMethods(@NotNull Project project, @NotNull Editor editor, PsiFile file, @NotNull PsiClass aClass); - @Nullable - private static PsiField getFieldAtCaret(@NotNull Editor editor, @NotNull PsiFile file) { - final int offset = editor.getCaretModel().getOffset(); - return PsiTreeUtil.getParentOfType(file.findElementAt(offset), PsiField.class); - } @NotNull private static PsiExpressionStatement addAssignment(@NotNull PsiCodeBlock codeBlock, @NotNull PsiField field) throws IncorrectOperationException { diff --git a/java/java-impl/src/com/intellij/codeInsight/intention/impl/BaseRefactoringAction.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/BaseRefactoringAction.java index 1d6465f98e3e..a22fe17f9301 100644 --- a/java/java-impl/src/com/intellij/codeInsight/intention/impl/BaseRefactoringAction.java +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/BaseRefactoringAction.java @@ -30,16 +30,6 @@ import javax.swing.*; * @author Danila Ponomarenko */ public abstract class BaseRefactoringAction extends PsiElementBaseIntentionAction implements RefactoringAction{ - @Override - public final boolean isAvailable(@NotNull Project project, Editor editor, PsiFile file) { - return super.isAvailable(project, editor, file); - } - - @Override - public final void invoke(@NotNull Project project, Editor editor, PsiFile file) throws IncorrectOperationException { - super.invoke(project, editor, file); - } - @Override public final boolean isAvailable(@NotNull Project project, Editor editor, @NotNull PsiElement element) { return !(element instanceof SyntheticElement) && isAvailableOverride(project, editor, element); diff --git a/java/java-impl/src/com/intellij/codeInsight/intention/impl/ColorChooserIntentionAction.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/ColorChooserIntentionAction.java index d5b05d045673..6434247509b4 100644 --- a/java/java-impl/src/com/intellij/codeInsight/intention/impl/ColorChooserIntentionAction.java +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/ColorChooserIntentionAction.java @@ -110,9 +110,9 @@ public class ColorChooserIntentionAction extends PsiElementBaseIntentionAction { } @Override - public void invoke(@NotNull final Project project, final Editor editor, final PsiFile file) throws IncorrectOperationException { - if (!CodeInsightUtilBase.prepareFileForWrite(file)) return; - PsiElement element = file.findElementAt(editor.getCaretModel().getOffset()); + public void invoke(@NotNull Project project, Editor editor, @NotNull PsiElement element) throws IncorrectOperationException { + if (!CodeInsightUtilBase.preparePsiElementForWrite(element)) return; + final JComponent editorComponent = editor.getComponent(); if (isInsideDecodeOrGetColorMethod(element)) { invokeForMethodParam(editorComponent, element); diff --git a/java/java-impl/src/com/intellij/codeInsight/intention/impl/ConvertAbsolutePathToRelativeIntentionAction.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/ConvertAbsolutePathToRelativeIntentionAction.java index e7b50e9782d3..cc2295d1c616 100644 --- a/java/java-impl/src/com/intellij/codeInsight/intention/impl/ConvertAbsolutePathToRelativeIntentionAction.java +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/ConvertAbsolutePathToRelativeIntentionAction.java @@ -15,10 +15,8 @@ */ package com.intellij.codeInsight.intention.impl; -import com.intellij.codeInsight.intention.PsiElementBaseIntentionAction; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.project.Project; -import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiReference; import com.intellij.psi.impl.source.resolve.reference.impl.PsiMultiReference; @@ -32,18 +30,16 @@ import org.jetbrains.annotations.Nullable; /** * @author spleaner */ -public class ConvertAbsolutePathToRelativeIntentionAction extends PsiElementBaseIntentionAction { +public class ConvertAbsolutePathToRelativeIntentionAction extends BaseIntentionAction { protected boolean isConvertToRelative() { return true; } @Override - public boolean isAvailable(@NotNull Project project, Editor editor, @NotNull PsiElement element) { - final PsiFile containingFile = element.getContainingFile(); - if (containingFile == null) return false; + public boolean isAvailable(@NotNull Project project, Editor editor, PsiFile file) { - final PsiReference reference = containingFile.findReferenceAt(editor.getCaretModel().getOffset()); + final PsiReference reference = file.findReferenceAt(editor.getCaretModel().getOffset()); final FileReference fileReference = reference == null ? null : findFileReference(reference); if (fileReference != null) { diff --git a/java/java-impl/src/com/intellij/codeInsight/intention/impl/ExpandStaticImportAction.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/ExpandStaticImportAction.java index 3816bb26fdd2..94b7bfe2eb10 100644 --- a/java/java-impl/src/com/intellij/codeInsight/intention/impl/ExpandStaticImportAction.java +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/ExpandStaticImportAction.java @@ -65,16 +65,12 @@ public class ExpandStaticImportAction extends PsiElementBaseIntentionAction { } public void invoke(final Project project, final PsiFile file, final Editor editor, PsiElement element) { - if (!CodeInsightUtilBase.prepareFileForWrite(file)) return; + if (!CodeInsightUtilBase.preparePsiElementForWrite(element)) return; final PsiJavaCodeReferenceElement refExpr = (PsiJavaCodeReferenceElement)element.getParent(); - final PsiImportStaticStatement staticImport = (PsiImportStaticStatement)refExpr.advancedResolve(true).getCurrentFileResolveScope(); - - final List expressionToExpand = collectReferencesThrough(file, refExpr, staticImport); - if (expressionToExpand.isEmpty()) { expand(refExpr, staticImport); staticImport.delete(); @@ -109,8 +105,7 @@ public class ExpandStaticImportAction extends PsiElementBaseIntentionAction { } @Override - public void invoke(@NotNull final Project project, final Editor editor, PsiFile file) throws IncorrectOperationException { - PsiElement element = file.findElementAt(editor.getCaretModel().getOffset()); - invoke(project, file, editor, element); + public void invoke(@NotNull Project project, Editor editor, @NotNull PsiElement element) throws IncorrectOperationException { + invoke(project, element.getContainingFile(), editor, element); } } diff --git a/java/java-impl/src/com/intellij/codeInsight/intention/impl/InvertIfConditionAction.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/InvertIfConditionAction.java index 57a689dfd54a..5fd167f78bb9 100644 --- a/java/java-impl/src/com/intellij/codeInsight/intention/impl/InvertIfConditionAction.java +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/InvertIfConditionAction.java @@ -80,11 +80,10 @@ public class InvertIfConditionAction extends PsiElementBaseIntentionAction { } @Override - public void invoke(@NotNull Project project, Editor editor, PsiFile file) throws IncorrectOperationException { - if (!CodeInsightUtilBase.prepareFileForWrite(file)) return; + public void invoke(@NotNull Project project, Editor editor, @NotNull PsiElement element) throws IncorrectOperationException { + if (!CodeInsightUtilBase.preparePsiElementForWrite(element)) return; - PsiIfStatement ifStatement = PsiTreeUtil.getParentOfType(file.findElementAt( - editor.getCaretModel().getOffset()), PsiIfStatement.class); + PsiIfStatement ifStatement = PsiTreeUtil.getParentOfType(element, PsiIfStatement.class); LOG.assertTrue(ifStatement != null); PsiElement block = findCodeBlock(ifStatement); diff --git a/java/java-impl/src/com/intellij/codeInsight/intention/impl/MakeTypeGenericAction.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/MakeTypeGenericAction.java index f20906a3a391..5a902c8ecd10 100644 --- a/java/java-impl/src/com/intellij/codeInsight/intention/impl/MakeTypeGenericAction.java +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/MakeTypeGenericAction.java @@ -93,10 +93,7 @@ public class MakeTypeGenericAction extends PsiElementBaseIntentionAction { } @Override - public void invoke(@NotNull Project project, Editor editor, PsiFile file) throws IncorrectOperationException { - final CaretModel caretModel = editor.getCaretModel(); - final int position = caretModel.getOffset(); - final PsiElement element = file.findElementAt(position); + public void invoke(@NotNull Project project, Editor editor, @NotNull PsiElement element) throws IncorrectOperationException { Pair pair = findVariable(element); if (pair == null) return; PsiVariable variable = pair.getFirst(); diff --git a/java/java-impl/src/com/intellij/codeInsight/intention/impl/SplitDeclarationAction.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/SplitDeclarationAction.java index 2815824f8007..8e7074b1a0fb 100644 --- a/java/java-impl/src/com/intellij/codeInsight/intention/impl/SplitDeclarationAction.java +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/SplitDeclarationAction.java @@ -64,7 +64,7 @@ public class SplitDeclarationAction extends PsiElementBaseIntentionAction { PsiElement nextField = field.getNextSibling(); while (nextField != null && !(nextField instanceof PsiField)) nextField = nextField.getNextSibling(); - if (nextField != null && ((PsiField) nextField).getTypeElement() == typeElement) return true; + if (nextField != null && ((PsiField)nextField).getTypeElement() == typeElement) return true; return false; } @@ -74,11 +74,12 @@ public class SplitDeclarationAction extends PsiElementBaseIntentionAction { if (declaredElements.length == 0) return false; if (!(declaredElements[0] instanceof PsiLocalVariable)) return false; if (declaredElements.length == 1) { - PsiLocalVariable var = (PsiLocalVariable) declaredElements[0]; + PsiLocalVariable var = (PsiLocalVariable)declaredElements[0]; if (var.getInitializer() == null) return false; setText(CodeInsightBundle.message("intention.split.declaration.assignment.text")); return true; - } else if (declaredElements.length > 1) { + } + else if (declaredElements.length > 1) { if (decl.getParent() instanceof PsiForStatement) return false; setText(CodeInsightBundle.message("intention.split.declaration.text")); @@ -89,23 +90,17 @@ public class SplitDeclarationAction extends PsiElementBaseIntentionAction { } @Override - public void invoke(@NotNull Project project, Editor editor, PsiFile file) throws IncorrectOperationException { - if (!CodeInsightUtilBase.prepareFileForWrite(file)) return; + public void invoke(@NotNull Project project, Editor editor, @NotNull PsiElement element) throws IncorrectOperationException { + if (!CodeInsightUtilBase.preparePsiElementForWrite(element)) return; - PsiManager psiManager = PsiManager.getInstance(project); - int offset = editor.getCaretModel().getOffset(); - - PsiElement token = file.findElementAt(offset); - PsiDeclarationStatement decl = PsiTreeUtil.getParentOfType( - token, - PsiDeclarationStatement.class - ); + final PsiDeclarationStatement decl = PsiTreeUtil.getParentOfType(element, PsiDeclarationStatement.class); + final PsiManager psiManager = PsiManager.getInstance(project); if (decl != null) { invokeOnDeclarationStatement(decl, psiManager, project); } else { - PsiField field = PsiTreeUtil.getParentOfType(token, PsiField.class); + PsiField field = PsiTreeUtil.getParentOfType(element, PsiField.class); if (field != null) { field.normalizeDeclaration(); } @@ -113,19 +108,19 @@ public class SplitDeclarationAction extends PsiElementBaseIntentionAction { } private static void invokeOnDeclarationStatement(PsiDeclarationStatement decl, PsiManager psiManager, - Project project) throws IncorrectOperationException { + Project project) throws IncorrectOperationException { if (decl.getDeclaredElements().length == 1) { - PsiLocalVariable var = (PsiLocalVariable) decl.getDeclaredElements()[0]; + PsiLocalVariable var = (PsiLocalVariable)decl.getDeclaredElements()[0]; var.normalizeDeclaration(); - PsiExpressionStatement statement = (PsiExpressionStatement) JavaPsiFacade.getInstance(psiManager.getProject()).getElementFactory() - .createStatementFromText(var.getName() + "=xxx;", null); - statement = (PsiExpressionStatement) CodeStyleManager.getInstance(project).reformat(statement); - PsiAssignmentExpression assignment = (PsiAssignmentExpression) statement.getExpression(); + PsiExpressionStatement statement = (PsiExpressionStatement)JavaPsiFacade.getInstance(psiManager.getProject()).getElementFactory() + .createStatementFromText(var.getName() + "=xxx;", null); + statement = (PsiExpressionStatement)CodeStyleManager.getInstance(project).reformat(statement); + PsiAssignmentExpression assignment = (PsiAssignmentExpression)statement.getExpression(); PsiExpression initializer = var.getInitializer(); PsiExpression rExpression; if (initializer instanceof PsiArrayInitializerExpression) { rExpression = JavaPsiFacade.getInstance(psiManager.getProject()).getElementFactory().createExpressionFromText( - "new " + var.getTypeElement().getText() + " " + initializer.getText(), null + "new " + var.getTypeElement().getText() + " " + initializer.getText(), null ); } else { @@ -157,14 +152,17 @@ public class SplitDeclarationAction extends PsiElementBaseIntentionAction { codeBlock.add(varDeclStatement); codeBlock.add(block); block.replace(blockStatement); - } else { + } + else { parent.addBefore(varDeclStatement, block); } - } else { + } + else { block.addAfter(statement, decl); } - } else { - ((PsiLocalVariable) decl.getDeclaredElements()[0]).normalizeDeclaration(); + } + else { + ((PsiLocalVariable)decl.getDeclaredElements()[0]).normalizeDeclaration(); } } } diff --git a/java/java-impl/src/com/intellij/codeInsight/intention/impl/SplitIfAction.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/SplitIfAction.java index 269995d26e09..b0cd3badf914 100644 --- a/java/java-impl/src/com/intellij/codeInsight/intention/impl/SplitIfAction.java +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/SplitIfAction.java @@ -72,14 +72,11 @@ public class SplitIfAction extends PsiElementBaseIntentionAction { } @Override - public void invoke(@NotNull Project project, Editor editor, PsiFile file) { - + public void invoke(@NotNull Project project, Editor editor, @NotNull PsiElement element) throws IncorrectOperationException { try { - if (!CodeInsightUtilBase.prepareFileForWrite(file)) { return; } + if (!CodeInsightUtilBase.preparePsiElementForWrite(element)) return; - int offset = editor.getCaretModel().getOffset(); - - PsiJavaToken token = (PsiJavaToken)file.findElementAt(offset); + PsiJavaToken token = (PsiJavaToken)element; LOG.assertTrue(token.getTokenType() == JavaTokenType.ANDAND || token.getTokenType() == JavaTokenType.OROR); PsiPolyadicExpression expression = (PsiPolyadicExpression)token.getParent(); diff --git a/java/java-impl/src/com/intellij/codeInspection/actions/ReplaceImplementsWithStaticImportAction.java b/java/java-impl/src/com/intellij/codeInspection/actions/ReplaceImplementsWithStaticImportAction.java index 42c551061e21..e54e40d36bd6 100644 --- a/java/java-impl/src/com/intellij/codeInspection/actions/ReplaceImplementsWithStaticImportAction.java +++ b/java/java-impl/src/com/intellij/codeInspection/actions/ReplaceImplementsWithStaticImportAction.java @@ -19,6 +19,7 @@ import com.intellij.codeInsight.ChangeContextUtil; import com.intellij.codeInsight.CodeInsightUtilBase; import com.intellij.codeInsight.TargetElementUtilBase; import com.intellij.codeInsight.intention.PsiElementBaseIntentionAction; +import com.intellij.codeInsight.intention.impl.BaseIntentionAction; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.Result; import com.intellij.openapi.command.WriteCommandAction; @@ -41,8 +42,8 @@ import org.jetbrains.annotations.NotNull; import java.util.*; -public class ReplaceImplementsWithStaticImportAction extends PsiElementBaseIntentionAction { - private static final Logger LOG = Logger.getInstance("#" + ReplaceImplementsWithStaticImportAction.class.getName()); +public class ReplaceImplementsWithStaticImportAction extends BaseIntentionAction { + private static final Logger LOG = Logger.getInstance(ReplaceImplementsWithStaticImportAction.class); @NonNls private static final String FIND_CONSTANT_FIELD_USAGES = "Find constant field usages..."; @NotNull @@ -55,8 +56,11 @@ public class ReplaceImplementsWithStaticImportAction extends PsiElementBaseInten return getText(); } - public boolean isAvailable(@NotNull Project project, Editor editor, @NotNull PsiElement element) { - if (!(element.getContainingFile() instanceof PsiJavaFile)) return false; + @Override + public boolean isAvailable(@NotNull Project project, Editor editor, PsiFile file) { + if (!(file instanceof PsiJavaFile)) return false; + + final PsiElement element = file.findElementAt(editor.getCaretModel().getOffset()); if (element instanceof PsiIdentifier) { final PsiElement parent = element.getParent(); if (parent instanceof PsiClass) { @@ -99,6 +103,7 @@ public class ReplaceImplementsWithStaticImportAction extends PsiElementBaseInten return targetClass.getAllFields().length > 0; } + @Override public void invoke(@NotNull final Project project, final Editor editor, final PsiFile file) throws IncorrectOperationException { if (!CodeInsightUtilBase.preparePsiElementForWrite(file)) return; diff --git a/java/java-impl/src/com/intellij/testIntegration/createTest/CreateTestAction.java b/java/java-impl/src/com/intellij/testIntegration/createTest/CreateTestAction.java index f49d1cfa38f5..5323056e3857 100644 --- a/java/java-impl/src/com/intellij/testIntegration/createTest/CreateTestAction.java +++ b/java/java-impl/src/com/intellij/testIntegration/createTest/CreateTestAction.java @@ -16,6 +16,7 @@ package com.intellij.testIntegration.createTest; import com.intellij.codeInsight.CodeInsightBundle; +import com.intellij.codeInsight.CodeInsightUtilBase; import com.intellij.codeInsight.intention.PsiElementBaseIntentionAction; import com.intellij.openapi.command.CommandProcessor; import com.intellij.openapi.editor.Editor; @@ -87,15 +88,15 @@ public class CreateTestAction extends PsiElementBaseIntentionAction { return rm.getFileIndex().isInTestSourceContent(f); } - public void invoke(@NotNull final Project project, final Editor editor, PsiFile file) throws IncorrectOperationException { - PsiElement element = file.findElementAt(editor.getCaretModel().getOffset()); - - final Module srcModule = ModuleUtil.findModuleForPsiElement(file); + @Override + public void invoke(final @NotNull Project project, Editor editor, @NotNull PsiElement element) throws IncorrectOperationException { + if (!CodeInsightUtilBase.preparePsiElementForWrite(element)) return; + final Module srcModule = ModuleUtil.findModuleForPsiElement(element); final PsiClass srcClass = getContainingClass(element); if (srcClass == null) return; - PsiDirectory srcDir = file.getContainingDirectory(); + PsiDirectory srcDir = element.getContainingFile().getContainingDirectory(); PsiPackage srcPackage = JavaDirectoryService.getInstance().getPackage(srcDir); final CreateTestDialog d = new CreateTestDialog(project, diff --git a/platform/lang-api/src/com/intellij/codeInsight/intention/PsiElementBaseIntentionAction.java b/platform/lang-api/src/com/intellij/codeInsight/intention/PsiElementBaseIntentionAction.java index 6967f36ecb86..e06bfcec20c6 100644 --- a/platform/lang-api/src/com/intellij/codeInsight/intention/PsiElementBaseIntentionAction.java +++ b/platform/lang-api/src/com/intellij/codeInsight/intention/PsiElementBaseIntentionAction.java @@ -31,6 +31,14 @@ import org.jetbrains.annotations.Nullable; * @author Konstantin Bulenkov */ public abstract class PsiElementBaseIntentionAction extends BaseIntentionAction { + @Override + public final void invoke(@NotNull Project project, Editor editor, PsiFile file) throws IncorrectOperationException { + final PsiElement element = getElement(editor, file); + if (element != null) { + invoke(project, editor, element); + } + } + /** * Invokes intention action for the element under cursor. * @@ -38,33 +46,16 @@ public abstract class PsiElementBaseIntentionAction extends BaseIntentionAction * @param editor the editor for the file. * @param element the element under cursor. * @throws com.intellij.util.IncorrectOperationException + * */ - public void invoke(@NotNull Project project, Editor editor, @NotNull PsiElement element) throws IncorrectOperationException { - throw new IncorrectOperationException(); - } + public abstract void invoke(@NotNull Project project, Editor editor, @NotNull PsiElement element) throws IncorrectOperationException; @Override - public boolean isAvailable(@NotNull Project project, Editor editor, PsiFile file) { + public final boolean isAvailable(@NotNull Project project, Editor editor, PsiFile file) { final PsiElement element = getElement(editor, file); return element != null && isAvailable(project, editor, element); } - @Nullable - protected static PsiElement getElement(Editor editor, @NotNull PsiFile file) { - if (!file.getManager().isInProject(file)) return null; - CaretModel caretModel = editor.getCaretModel(); - int position = caretModel.getOffset(); - return file.findElementAt(position); - } - - @Override - public void invoke(@NotNull Project project, Editor editor, PsiFile file) throws IncorrectOperationException { - final PsiElement element = getElement(editor, file); - if (element != null) { - invoke(project, editor, element); - } - } - /** * Checks whether this intention is available at a caret offset in file. * If this method returns true, a light bulb for this intention is shown. @@ -75,4 +66,12 @@ public abstract class PsiElementBaseIntentionAction extends BaseIntentionAction * @return true if the intention is available, false otherwise. */ public abstract boolean isAvailable(@NotNull Project project, Editor editor, @NotNull PsiElement element); + + @Nullable + protected static PsiElement getElement(Editor editor, @NotNull PsiFile file) { + if (!file.getManager().isInProject(file)) return null; + CaretModel caretModel = editor.getCaretModel(); + int position = caretModel.getOffset(); + return file.findElementAt(position); + } } \ No newline at end of file diff --git a/platform/lang-api/src/com/intellij/codeInspection/SuppressIntentionAction.java b/platform/lang-api/src/com/intellij/codeInspection/SuppressIntentionAction.java index ea0b47873d2e..a5b517458c89 100644 --- a/platform/lang-api/src/com/intellij/codeInspection/SuppressIntentionAction.java +++ b/platform/lang-api/src/com/intellij/codeInspection/SuppressIntentionAction.java @@ -22,31 +22,13 @@ package com.intellij.codeInspection; import com.intellij.codeInsight.intention.PsiElementBaseIntentionAction; import com.intellij.icons.AllIcons; -import com.intellij.openapi.editor.CaretModel; -import com.intellij.openapi.editor.Editor; -import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Iconable; -import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiFile; -import com.intellij.util.IncorrectOperationException; -import org.jetbrains.annotations.NotNull; import javax.swing.*; public abstract class SuppressIntentionAction extends PsiElementBaseIntentionAction implements Iconable { private static final Icon ICON = AllIcons.General.InspectionsOff; - public void invoke(@NotNull final Project project, final Editor editor, final PsiFile file) throws IncorrectOperationException { - final CaretModel caretModel = editor.getCaretModel(); - final int position = caretModel.getOffset(); - final PsiElement element = file.findElementAt(position); - if (element != null) { - invoke(project, editor, element); - } - } - - public abstract void invoke(@NotNull Project project, Editor editor, @NotNull PsiElement element) throws IncorrectOperationException; - public Icon getIcon(int flags) { return ICON; } diff --git a/platform/lang-impl/src/com/intellij/refactoring/changeSignature/ChangeSignatureDetectorAction.java b/platform/lang-impl/src/com/intellij/refactoring/changeSignature/ChangeSignatureDetectorAction.java index 5f7ef77ae2eb..627b1085c74e 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/changeSignature/ChangeSignatureDetectorAction.java +++ b/platform/lang-impl/src/com/intellij/refactoring/changeSignature/ChangeSignatureDetectorAction.java @@ -29,7 +29,6 @@ import org.jetbrains.annotations.NotNull; * Date: Sep 6, 2010 */ public class ChangeSignatureDetectorAction extends RefactoringBaseIntention { - private static final Logger LOG = Logger.getInstance("#" + ChangeSignatureDetectorAction.class.getName()); public static final String CHANGE_SIGNATURE = "Apply signature change"; public static final String NEW_NAME = "Apply new name"; @@ -65,8 +64,8 @@ public class ChangeSignatureDetectorAction extends RefactoringBaseIntention { } @Override - public void invoke(@NotNull Project project, Editor editor, PsiFile file) throws IncorrectOperationException { - ChangeSignatureGestureDetector.getInstance(project).changeSignature(file, true); + public void invoke(@NotNull Project project, Editor editor, @NotNull PsiElement element) throws IncorrectOperationException { + ChangeSignatureGestureDetector.getInstance(project).changeSignature(element.getContainingFile(), true); } @Override diff --git a/xml/impl/src/com/intellij/codeInsight/intentions/XmlChooseColorIntentionAction.java b/xml/impl/src/com/intellij/codeInsight/intentions/XmlChooseColorIntentionAction.java index 65e7e7e94816..5bfdb3b3bf08 100644 --- a/xml/impl/src/com/intellij/codeInsight/intentions/XmlChooseColorIntentionAction.java +++ b/xml/impl/src/com/intellij/codeInsight/intentions/XmlChooseColorIntentionAction.java @@ -23,7 +23,6 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiFile; import com.intellij.psi.PsiManager; import com.intellij.psi.XmlElementFactory; import com.intellij.psi.util.PsiTreeUtil; @@ -55,9 +54,9 @@ public class XmlChooseColorIntentionAction extends PsiElementBaseIntentionAction return getText(); } - public void invoke(@NotNull final Project project, final Editor editor, final PsiFile file) throws IncorrectOperationException { - if (!CodeInsightUtilBase.prepareFileForWrite(file)) return; - PsiElement element = file.findElementAt(editor.getCaretModel().getOffset()); + @Override + public void invoke(@NotNull Project project, Editor editor, @NotNull PsiElement element) throws IncorrectOperationException { + if (!CodeInsightUtilBase.preparePsiElementForWrite(element)) return; invokeForLiteral(editor.getComponent(), element); }