diff --git a/java/java-impl/src/com/intellij/codeInsight/intention/impl/MoveFieldAssignmentToInitializerAction.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/MoveFieldAssignmentToInitializerAction.java index 03890d57873d..9a8fe6f60cbe 100644 --- a/java/java-impl/src/com/intellij/codeInsight/intention/impl/MoveFieldAssignmentToInitializerAction.java +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/MoveFieldAssignmentToInitializerAction.java @@ -16,10 +16,13 @@ package com.intellij.codeInsight.intention.impl; import com.intellij.codeInsight.CodeInsightBundle; -import com.intellij.codeInsight.PsiEquivalenceUtil; import com.intellij.codeInsight.CodeInsightUtilBase; +import com.intellij.codeInsight.PsiEquivalenceUtil; +import com.intellij.codeInsight.highlighting.HighlightManager; import com.intellij.openapi.editor.Editor; -import com.intellij.openapi.editor.ScrollType; +import com.intellij.openapi.editor.colors.EditorColors; +import com.intellij.openapi.editor.colors.EditorColorsManager; +import com.intellij.openapi.editor.markup.TextAttributes; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Ref; import com.intellij.psi.*; @@ -96,6 +99,7 @@ public class MoveFieldAssignmentToInitializerAction extends BaseIntentionAction final Ref result = new Ref(Boolean.TRUE); final List totalUsages = new ArrayList(); PsiClass containingClass = field.getContainingClass(); + assert containingClass != null; containingClass.accept(new JavaRecursiveElementVisitor(){ private PsiCodeBlock currentInitializingBlock; //ctr or class initializer @@ -178,7 +182,9 @@ public class MoveFieldAssignmentToInitializerAction extends BaseIntentionAction statement.delete(); } } - editor.getCaretModel().moveToOffset(field.getTextOffset()); - editor.getScrollingModel().scrollToCaret(ScrollType.MAKE_VISIBLE); + + EditorColorsManager manager = EditorColorsManager.getInstance(); + TextAttributes attributes = manager.getGlobalScheme().getAttributes(EditorColors.SEARCH_RESULT_ATTRIBUTES); + HighlightManager.getInstance(project).addOccurrenceHighlights(editor, new PsiElement[] {field.getInitializer()}, attributes, false,null); } } diff --git a/java/java-impl/src/com/intellij/codeInsight/intention/impl/MoveInitializerToConstructorAction.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/MoveInitializerToConstructorAction.java index e71d52aa19e1..454a77dc13ba 100644 --- a/java/java-impl/src/com/intellij/codeInsight/intention/impl/MoveInitializerToConstructorAction.java +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/MoveInitializerToConstructorAction.java @@ -20,11 +20,14 @@ import com.intellij.codeInsight.CodeInsightUtilBase; import com.intellij.codeInsight.daemon.impl.analysis.HighlightControlFlowUtil; import com.intellij.codeInsight.daemon.impl.analysis.HighlightUtil; import com.intellij.codeInsight.daemon.impl.quickfix.CreateFromUsageUtils; +import com.intellij.codeInsight.highlighting.HighlightManager; import com.intellij.codeInsight.intention.IntentionAction; import com.intellij.codeInsight.intention.PsiElementBaseIntentionAction; import com.intellij.codeInsight.intention.QuickFixFactory; import com.intellij.openapi.editor.Editor; -import com.intellij.openapi.editor.ScrollType; +import com.intellij.openapi.editor.colors.EditorColors; +import com.intellij.openapi.editor.colors.EditorColorsManager; +import com.intellij.openapi.editor.markup.TextAttributes; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Ref; import com.intellij.psi.*; @@ -77,6 +80,7 @@ public class MoveInitializerToConstructorAction extends PsiElementBaseIntentionA if (constructors.length == 0) { IntentionAction addDefaultConstructorFix = QuickFixFactory.getInstance().createAddDefaultConstructorFix(aClass); addDefaultConstructorFix.invoke(project, editor, file); + editor.getCaretModel().moveToOffset(offset); //restore caret constructorsToAddInitialization = Arrays.asList(aClass.getConstructors()); } else { @@ -90,24 +94,27 @@ public class MoveInitializerToConstructorAction extends PsiElementBaseIntentionA } } - PsiElement toMove = null; + PsiExpressionStatement toMove = null; for (PsiMethod constructor : constructorsToAddInitialization) { PsiCodeBlock codeBlock = constructor.getBody(); if (codeBlock == null) { CreateFromUsageUtils.setupMethodBody(constructor); codeBlock = constructor.getBody(); } - PsiElement added = addAssignment(codeBlock, field); + PsiExpressionStatement added = addAssignment(codeBlock, field); if (toMove == null) toMove = added; } field.getInitializer().delete(); if (toMove != null) { - editor.getCaretModel().moveToOffset(toMove.getTextOffset()); - editor.getScrollingModel().scrollToCaret(ScrollType.MAKE_VISIBLE); + PsiAssignmentExpression assignment = (PsiAssignmentExpression)toMove.getExpression(); + PsiExpression expression = assignment.getRExpression(); + EditorColorsManager manager = EditorColorsManager.getInstance(); + TextAttributes attributes = manager.getGlobalScheme().getAttributes(EditorColors.SEARCH_RESULT_ATTRIBUTES); + HighlightManager.getInstance(project).addOccurrenceHighlights(editor, new PsiElement[] {expression}, attributes, false,null); } } - private static PsiElement addAssignment(@NotNull PsiCodeBlock codeBlock, @NotNull PsiField field) throws IncorrectOperationException { + private static PsiExpressionStatement addAssignment(@NotNull PsiCodeBlock codeBlock, @NotNull PsiField field) throws IncorrectOperationException { PsiElementFactory factory = JavaPsiFacade.getInstance(codeBlock.getProject()).getElementFactory(); PsiExpressionStatement statement = (PsiExpressionStatement)factory.createStatementFromText(field.getName()+" = y;", codeBlock); PsiAssignmentExpression expression = (PsiAssignmentExpression)statement.getExpression(); @@ -133,7 +140,7 @@ public class MoveInitializerToConstructorAction extends PsiElementBaseIntentionA } PsiElement newStatement = codeBlock.addBefore(statement,anchor); replaceWithQualifiedReferences(newStatement, newStatement); - return newStatement; + return (PsiExpressionStatement)newStatement; } private static boolean containsReference(final PsiElement element, final PsiField field) {