From e475d654b69d48c7ffe1b945364c7788676a86b2 Mon Sep 17 00:00:00 2001 From: m0rkeulv Date: Tue, 9 Jul 2024 22:02:58 +0200 Subject: [PATCH] adding Introduce parameter and doing some quickfix cleanup --- .../intention/IteratorForLoopIntention.java | 4 +- .../KeyValueIteratorForLoopIntention.java | 5 +- .../HaxeRefactoringSupportProvider.java | 8 +- .../ide/refactoring/HaxeRefactoringUtil.java | 18 +- .../HaxeExtractMethodHandler.java | 8 +- .../HaxeIntroduceConstantHandler.java | 8 +- .../HaxeIntroduceParameterHandler.java | 234 ++++++++++++++++++ .../HaxeIntroduceDialog.form | 2 +- .../HaxeIntroduceDialog.java | 8 +- .../HaxeIntroduceHandler.java | 89 ++++--- .../HaxeIntroduceOperation.java | 14 +- .../HaxeIntroduceVariableHandler.java | 2 +- .../haxe/lang/util/HaxeExpressionUtil.java | 2 +- .../model/fixer/HaxeCreateFieldFixer.java | 32 --- .../fixer/HaxeCreateLocalVariableFixer.java | 32 --- .../model/fixer/HaxeCreateMethodFixer.java | 32 --- .../type/HaxeExpressionEvaluatorHandlers.java | 7 +- .../haxe/util/HaxeNameSuggesterUtil.java | 9 +- .../resources/messages/HaxeBundle.properties | 1 + .../HaxeIntroduceTestBase.java | 4 +- .../HaxeIntroduceVariableTest.java | 2 +- 21 files changed, 349 insertions(+), 172 deletions(-) create mode 100644 src/main/java/com/intellij/plugins/haxe/ide/refactoring/introduceParameter/HaxeIntroduceParameterHandler.java rename src/main/java/com/intellij/plugins/haxe/ide/refactoring/{introduce => introduceVariable}/HaxeIntroduceDialog.form (99%) rename src/main/java/com/intellij/plugins/haxe/ide/refactoring/{introduce => introduceVariable}/HaxeIntroduceDialog.java (95%) rename src/main/java/com/intellij/plugins/haxe/ide/refactoring/{introduce => introduceVariable}/HaxeIntroduceHandler.java (90%) rename src/main/java/com/intellij/plugins/haxe/ide/refactoring/{introduce => introduceVariable}/HaxeIntroduceOperation.java (90%) rename src/main/java/com/intellij/plugins/haxe/ide/refactoring/{introduce => introduceVariable}/HaxeIntroduceVariableHandler.java (96%) delete mode 100644 src/main/java/com/intellij/plugins/haxe/model/fixer/HaxeCreateFieldFixer.java delete mode 100644 src/main/java/com/intellij/plugins/haxe/model/fixer/HaxeCreateLocalVariableFixer.java delete mode 100644 src/main/java/com/intellij/plugins/haxe/model/fixer/HaxeCreateMethodFixer.java rename src/test/java/com/intellij/plugins/haxe/ide/refactoring/{introduce => introduceVariable}/HaxeIntroduceTestBase.java (96%) rename src/test/java/com/intellij/plugins/haxe/ide/refactoring/{introduce => introduceVariable}/HaxeIntroduceVariableTest.java (98%) diff --git a/src/main/java/com/intellij/plugins/haxe/ide/intention/IteratorForLoopIntention.java b/src/main/java/com/intellij/plugins/haxe/ide/intention/IteratorForLoopIntention.java index b947fa2e4..9382c8820 100644 --- a/src/main/java/com/intellij/plugins/haxe/ide/intention/IteratorForLoopIntention.java +++ b/src/main/java/com/intellij/plugins/haxe/ide/intention/IteratorForLoopIntention.java @@ -7,7 +7,7 @@ import com.intellij.openapi.util.TextRange; import com.intellij.plugins.haxe.HaxeBundle; import com.intellij.plugins.haxe.HaxeLanguage; -import com.intellij.plugins.haxe.ide.refactoring.introduce.HaxeIntroduceHandler; +import com.intellij.plugins.haxe.ide.refactoring.introduceVariable.HaxeIntroduceHandler; import com.intellij.plugins.haxe.lang.psi.*; import com.intellij.plugins.haxe.model.type.HaxeExpressionEvaluator; import com.intellij.plugins.haxe.model.type.ResultHolder; @@ -64,7 +64,7 @@ public void invoke(@NotNull final Project project, Editor editor, PsiFile file) HaxeValueIterator valueIterator = itr.getValueIterator(); if (valueIterator != null ) { HaxeComponentName name = valueIterator.getComponentName(); - final var introducer = new HaxeIntroduceHandler.HaxeInplaceVariableIntroducer(name, editor, List.of()); + final var introducer = new HaxeIntroduceHandler.HaxeInplaceVariableIntroducer(name, editor, List.of(), "Introduce loop iterator"); introducer.setElementToRename(name); TextRange range = name.getTextRange(); editor.getSelectionModel().setSelection(range.getStartOffset(), range.getEndOffset()); diff --git a/src/main/java/com/intellij/plugins/haxe/ide/intention/KeyValueIteratorForLoopIntention.java b/src/main/java/com/intellij/plugins/haxe/ide/intention/KeyValueIteratorForLoopIntention.java index 1bb274c3b..1c1403c57 100644 --- a/src/main/java/com/intellij/plugins/haxe/ide/intention/KeyValueIteratorForLoopIntention.java +++ b/src/main/java/com/intellij/plugins/haxe/ide/intention/KeyValueIteratorForLoopIntention.java @@ -7,7 +7,7 @@ import com.intellij.openapi.util.TextRange; import com.intellij.plugins.haxe.HaxeBundle; import com.intellij.plugins.haxe.HaxeLanguage; -import com.intellij.plugins.haxe.ide.refactoring.introduce.HaxeIntroduceHandler; +import com.intellij.plugins.haxe.ide.refactoring.introduceVariable.HaxeIntroduceHandler; import com.intellij.plugins.haxe.lang.psi.*; import com.intellij.plugins.haxe.model.type.HaxeExpressionEvaluator; import com.intellij.plugins.haxe.model.type.ResultHolder; @@ -81,7 +81,8 @@ private static void introduceKeyValueIterators(Editor editor, HaxeKeyValueIterat HaxeComponentName keyNamed = keyItr.getComponentName(); HaxeComponentName valueNamed = valueItr.getComponentName(); - final var introducer = new HaxeIntroduceHandler.HaxeInplaceVariableIntroducer(keyNamed, editor, List.of(), Map.of( valueNamed, "value")); + final var introducer = new HaxeIntroduceHandler.HaxeInplaceVariableIntroducer(keyNamed, editor, List.of(), Map.of( valueNamed, "value"), + "Introduce key-value iterator"); introducer.setElementToRename(keyNamed); TextRange range = keyNamed.getTextRange(); editor.getSelectionModel().setSelection(range.getStartOffset(), range.getEndOffset()); diff --git a/src/main/java/com/intellij/plugins/haxe/ide/refactoring/HaxeRefactoringSupportProvider.java b/src/main/java/com/intellij/plugins/haxe/ide/refactoring/HaxeRefactoringSupportProvider.java index 8daf8c8a3..891d221c8 100644 --- a/src/main/java/com/intellij/plugins/haxe/ide/refactoring/HaxeRefactoringSupportProvider.java +++ b/src/main/java/com/intellij/plugins/haxe/ide/refactoring/HaxeRefactoringSupportProvider.java @@ -21,7 +21,8 @@ import com.intellij.plugins.haxe.ide.refactoring.extractInterface.ExtractInterfaceHandler; import com.intellij.plugins.haxe.ide.refactoring.extractMethod.HaxeExtractMethodHandler; import com.intellij.plugins.haxe.ide.refactoring.extractSuperclass.ExtractSuperclassHandler; -import com.intellij.plugins.haxe.ide.refactoring.introduce.HaxeIntroduceVariableHandler; +import com.intellij.plugins.haxe.ide.refactoring.introduceParameter.HaxeIntroduceParameterHandler; +import com.intellij.plugins.haxe.ide.refactoring.introduceVariable.HaxeIntroduceVariableHandler; import com.intellij.plugins.haxe.ide.refactoring.introduceField.HaxeIntroduceConstantHandler; import com.intellij.plugins.haxe.ide.refactoring.memberPullUp.HaxePullUpHandler; import com.intellij.plugins.haxe.ide.refactoring.memberPushDown.HaxePushDownHandler; @@ -44,6 +45,11 @@ public RefactoringActionHandler getIntroduceVariableHandler() { return new HaxeIntroduceVariableHandler(); } + @Override + public @Nullable RefactoringActionHandler getIntroduceParameterHandler() { + return new HaxeIntroduceParameterHandler(); + } + @Nullable @Override public RefactoringActionHandler getExtractInterfaceHandler() { diff --git a/src/main/java/com/intellij/plugins/haxe/ide/refactoring/HaxeRefactoringUtil.java b/src/main/java/com/intellij/plugins/haxe/ide/refactoring/HaxeRefactoringUtil.java index a7e17964d..d62c2f4d3 100644 --- a/src/main/java/com/intellij/plugins/haxe/ide/refactoring/HaxeRefactoringUtil.java +++ b/src/main/java/com/intellij/plugins/haxe/ide/refactoring/HaxeRefactoringUtil.java @@ -44,7 +44,7 @@ * @author: Fedor.Korotkov */ public class HaxeRefactoringUtil { - public static Set collectUsedNames(HaxePsiCompositeElement context) { + public static Set collectUsedNames(PsiElement context) { final Set usedComponentNames = new HashSet<>(); PsiTreeUtil.treeWalkUp(new ComponentNameScopeProcessor(usedComponentNames), context, null, new ResolveState()); @@ -70,10 +70,7 @@ public static Set collectKeywords() { } @Nullable - public static HaxeExpression getSelectedExpression(@NotNull final Project project, - @NotNull PsiFile file, - @NotNull final PsiElement element1, - @NotNull final PsiElement element2) { + public static HaxeExpression getSelectedExpression(@NotNull final PsiElement element1, @NotNull final PsiElement element2) { PsiElement parent = PsiTreeUtil.findCommonParent(element1, element2); if (parent == null) { return null; @@ -83,6 +80,17 @@ public static HaxeExpression getSelectedExpression(@NotNull final Project projec } return PsiTreeUtil.getParentOfType(parent, HaxeExpression.class); } + @Nullable + public static HaxeComponentName getSelectedComponentName(@NotNull final PsiElement element1, @NotNull final PsiElement element2) { + PsiElement parent = PsiTreeUtil.findCommonParent(element1, element2); + if (parent == null) { + return null; + } + if (parent instanceof HaxeComponentName) { + return (HaxeComponentName)parent; + } + return PsiTreeUtil.getParentOfType(parent, HaxeComponentName.class); + } public static void reformat(final PsiMember movedElement) { ApplicationManager.getApplication().runWriteAction(() -> { diff --git a/src/main/java/com/intellij/plugins/haxe/ide/refactoring/extractMethod/HaxeExtractMethodHandler.java b/src/main/java/com/intellij/plugins/haxe/ide/refactoring/extractMethod/HaxeExtractMethodHandler.java index c837dd5d7..a8bbf2f21 100644 --- a/src/main/java/com/intellij/plugins/haxe/ide/refactoring/extractMethod/HaxeExtractMethodHandler.java +++ b/src/main/java/com/intellij/plugins/haxe/ide/refactoring/extractMethod/HaxeExtractMethodHandler.java @@ -10,8 +10,8 @@ import com.intellij.openapi.editor.SelectionModel; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.TextRange; -import com.intellij.plugins.haxe.ide.refactoring.introduce.HaxeIntroduceHandler; -import com.intellij.plugins.haxe.ide.refactoring.introduce.HaxeIntroduceOperation; +import com.intellij.plugins.haxe.ide.refactoring.introduceVariable.HaxeIntroduceHandler; +import com.intellij.plugins.haxe.ide.refactoring.introduceVariable.HaxeIntroduceOperation; import com.intellij.plugins.haxe.lang.psi.*; import com.intellij.psi.*; import com.intellij.psi.codeStyle.CodeStyleManager; @@ -31,7 +31,7 @@ public HaxeExtractMethodHandler() { @Override public void invoke(@NotNull Project project, Editor editor, PsiFile file, DataContext dataContext) { - performAction(new HaxeIntroduceOperation(project, editor, file, null)); + performAction(new HaxeIntroduceOperation(project, editor, file, null, "Extract Method")); } @Override @@ -168,7 +168,7 @@ private static void startRenameMethod(HaxeIntroduceOperation operation, Editor e final InplaceVariableIntroducer introducer = new HaxeInplaceVariableIntroducer(method.getComponentName(), operation, - List.of(method.getComponentName())); + List.of(method.getComponentName()), "Introduce Method"); introducer.performInplaceRefactoring(new LinkedHashSet<>(Optional.ofNullable(operation.getSuggestedNames()).orElse(List.of()))); } diff --git a/src/main/java/com/intellij/plugins/haxe/ide/refactoring/introduceField/HaxeIntroduceConstantHandler.java b/src/main/java/com/intellij/plugins/haxe/ide/refactoring/introduceField/HaxeIntroduceConstantHandler.java index 08bc1b8cc..67282242e 100644 --- a/src/main/java/com/intellij/plugins/haxe/ide/refactoring/introduceField/HaxeIntroduceConstantHandler.java +++ b/src/main/java/com/intellij/plugins/haxe/ide/refactoring/introduceField/HaxeIntroduceConstantHandler.java @@ -19,8 +19,8 @@ package com.intellij.plugins.haxe.ide.refactoring.introduceField; import com.intellij.openapi.project.Project; -import com.intellij.plugins.haxe.ide.refactoring.introduce.HaxeIntroduceHandler; -import com.intellij.plugins.haxe.ide.refactoring.introduce.HaxeIntroduceOperation; +import com.intellij.plugins.haxe.ide.refactoring.introduceVariable.HaxeIntroduceHandler; +import com.intellij.plugins.haxe.ide.refactoring.introduceVariable.HaxeIntroduceOperation; import com.intellij.plugins.haxe.lang.psi.HaxeClass; import com.intellij.plugins.haxe.lang.psi.HaxeClassBody; import com.intellij.plugins.haxe.lang.psi.HaxeExpression; @@ -82,7 +82,7 @@ private static HaxeFieldDeclaration lastFieldDeclarationInList(HaxeClassBody cla @Override public PsiElement createDeclaration(HaxeIntroduceOperation operation) { final Project project = operation.getProject(); - final HaxeExpression initializer = operation.getInitializer(); + final PsiElement initializer = operation.getInitializer(); InitializerTextBuilder builder = new InitializerTextBuilder(); initializer.accept(builder); String assignmentText = "public static inline var " + operation.getName() + " = " + builder.result() + ";"; @@ -122,7 +122,7 @@ protected HaxeFieldDeclaration createDeclaration(Project project, String text, P } @Override - protected Collection getSuggestedNames(HaxeExpression expression) { + protected Collection getSuggestedNames(PsiElement expression) { return HaxeNameSuggesterUtil.getSuggestedNames(expression, true); } } diff --git a/src/main/java/com/intellij/plugins/haxe/ide/refactoring/introduceParameter/HaxeIntroduceParameterHandler.java b/src/main/java/com/intellij/plugins/haxe/ide/refactoring/introduceParameter/HaxeIntroduceParameterHandler.java new file mode 100644 index 000000000..cd9bdd3b5 --- /dev/null +++ b/src/main/java/com/intellij/plugins/haxe/ide/refactoring/introduceParameter/HaxeIntroduceParameterHandler.java @@ -0,0 +1,234 @@ +/* + * Copyright 2000-2013 JetBrains s.r.o. + * Copyright 2014-2014 AS3Boyan + * Copyright 2014-2014 Elias Ku + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.plugins.haxe.ide.refactoring.introduceParameter; + +import com.intellij.codeInsight.CodeInsightUtilCore; +import com.intellij.openapi.project.Project; +import com.intellij.plugins.haxe.HaxeBundle; +import com.intellij.plugins.haxe.ide.refactoring.introduceVariable.HaxeIntroduceHandler; +import com.intellij.plugins.haxe.ide.refactoring.introduceVariable.HaxeIntroduceOperation; +import com.intellij.plugins.haxe.lang.psi.*; +import com.intellij.plugins.haxe.model.type.HaxeExpressionEvaluator; +import com.intellij.plugins.haxe.model.type.HaxeTypeResolver; +import com.intellij.plugins.haxe.model.type.ResultHolder; +import com.intellij.plugins.haxe.util.HaxeElementGenerator; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiParserFacade; +import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.psi.util.PsiUtilCore; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.List; + +import static com.intellij.plugins.haxe.util.HaxeElementGenerator.createSemi; + +/** + * @author: Fedor.Korotkov + */ +public class HaxeIntroduceParameterHandler extends HaxeIntroduceHandler { + public HaxeIntroduceParameterHandler() { + super(HaxeBundle.message("refactoring.introduce.parameter.dialog.title")); + } + + protected @NotNull String getActionName() { + return "Introduce Parameter"; + } + + @Override + protected boolean isValidIntroduceContext(PsiElement element) { + if( isLiteral(element)) { + if (PsiTreeUtil.getParentOfType(element, HaxeMethodDeclaration.class)!= null) { + return true; + } + }else if (isVarDeclaration(element)) { + return true; + }else { + // check for block parent, we need a block to put assign statement in + if (PsiTreeUtil.getParentOfType(element, HaxeBlockStatement.class) != null) { + return true; + } + } + return false; + } + + private boolean isVarDeclaration(PsiElement element) { + HaxeLocalVarDeclarationList varDeclarations = PsiTreeUtil.getParentOfType(element, HaxeLocalVarDeclarationList.class); + if(varDeclarations.getLocalVarDeclarationList().size() == 1) { + HaxeLocalVarDeclaration varDeclaration = varDeclarations.getLocalVarDeclarationList().get(0); + if (varDeclaration != null && element instanceof HaxeComponentName varName) { + return varDeclaration.getComponentName() == varName; + } + } + return false; + } + + @Override + protected void performActionOnElementOccurrences(HaxeIntroduceOperation operation) { + if(operation.getInitializer() instanceof HaxeComponentName componentName) { + operation.setName(componentName.getIdentifier().getText()); + } + super.performActionOnElementOccurrences(operation); + } + + @Nullable + public PsiElement createDeclaration(HaxeIntroduceOperation operation) { + PsiElement initializer = operation.getInitializer(); + + + ResultHolder result = findType(initializer); + + String typeTag = !result.isUnknown() ? ":" + result.toStringWithoutConstant() : ""; + String constant = getConstantString(initializer); + String assignmentText = operation.getName() + typeTag + constant; + + PsiElement anchor = operation.isReplaceAll() + ? findAnchor(operation.getOccurrences()) + : findAnchor(initializer); + + return createDeclaration(operation.getProject(), assignmentText, anchor); + } + + private ResultHolder findType(PsiElement initializer) { + if(isVarDeclaration(initializer)) { + HaxeLocalVarDeclaration varDeclaration = PsiTreeUtil.getParentOfType(initializer, HaxeLocalVarDeclaration.class); + if(varDeclaration != null) return HaxeTypeResolver.getPsiElementType(varDeclaration, null); + } + return HaxeExpressionEvaluator.evaluate(initializer, null).result; + } + + private @NotNull String getConstantString(PsiElement expression) { + if (isLiteral(expression)) { + return " = " + expression.getText(); + } + if (isVarDeclaration(expression)) { + HaxeLocalVarDeclaration declaration = PsiTreeUtil.getParentOfType(expression, HaxeLocalVarDeclaration.class); + if (declaration != null && declaration.getVarInit() != null) { + HaxeExpression init = declaration.getVarInit().getExpression(); + if(isLiteral(init)) { + return " = " + init.getText(); + } + } + } + return ""; + } + + private boolean isLiteral(PsiElement element) { + return element instanceof HaxeLiteralExpression || element instanceof HaxeStringLiteralExpression; + } + + @Nullable + protected PsiElement createDeclaration(Project project, String text, PsiElement anchor) { + return HaxeElementGenerator.createParameter(project, text); + } + + protected void modifyDeclaration(@NotNull PsiElement declaration, HaxeIntroduceOperation operation) { + PsiElement expression = operation.getInitializer(); + if (declaration instanceof HaxeParameter parameter) { + if (isLiteral(expression)) { + return; // handled as parameter default value + } + + if (isVarDeclaration(expression)) { + replaceVarDeclaration(parameter, expression); + return; + } + + insertParameterAssignStatement(parameter, expression); + } + } + + private void replaceVarDeclaration(HaxeParameter parameter, PsiElement expression) { + HaxeLocalVarDeclarationList declarations = PsiTreeUtil.getParentOfType(expression, HaxeLocalVarDeclarationList.class); + if(declarations.getLocalVarDeclarationList().size() == 1) { + HaxeLocalVarDeclaration declaration = declarations.getLocalVarDeclarationList().get(0); + if (declaration.getVarInit() != null) { + HaxeExpression init = declaration.getVarInit().getExpression(); + if (isLiteral(init)) { + declarations.delete(); + } else { + PsiElement replaced = declarations.replace(declaration); + replaced.add(createSemi(declaration.getProject())); + } + } + else { + declarations.delete(); + } + } + } + + private static void insertParameterAssignStatement(@NotNull HaxeParameter parameter, PsiElement expression) { + Project project = expression.getProject(); + + String paramName = parameter.getComponentName().getText(); + String assignExpression = paramName + " = " + expression.getText()+";"; + PsiElement assign = HaxeElementGenerator.createStatementFromText(project, assignExpression); + HaxeBlockStatement blockStatement = PsiTreeUtil.getParentOfType(expression, HaxeBlockStatement.class); + PsiElement anchor = blockStatement.addBefore(assign, findInsertBeforeElement(expression, blockStatement)); + + final PsiElement newLineNode = PsiParserFacade.getInstance(parameter.getProject()).createWhiteSpaceFromText("\n"); + blockStatement.addAfter(newLineNode, anchor); + blockStatement.addAfter(HaxeElementGenerator.createSemi(project), anchor); + + CodeInsightUtilCore.forcePsiPostprocessAndRestoreElement(expression.getContainingFile()); + } + + private static @NotNull PsiElement findInsertBeforeElement(@NotNull PsiElement startElement, HaxeBlockStatement block) { + PsiElement insertBeforeElement = startElement; + PsiElement parent = startElement.getParent(); + + while (parent != null && parent != block) { + insertBeforeElement = parent; + parent = parent.getParent(); + } + return insertBeforeElement; + } + + + @Override + protected PsiElement addDeclaration(@NotNull final PsiElement expression, + @NotNull final PsiElement declaration, + @NotNull HaxeIntroduceOperation operation) { + return doIntroduceParameter(expression, declaration, operation.getOccurrences(), operation.isReplaceAll()); + } + + public static PsiElement doIntroduceParameter(PsiElement expression, + PsiElement declaration, + List occurrences, + boolean replaceAll) { + PsiElement anchor = replaceAll ? findAnchor(occurrences) : findAnchor(expression); + assert anchor != null; + HaxeMethodDeclaration method = PsiTreeUtil.getParentOfType(expression, HaxeMethodDeclaration.class); + + + if (method != null) { + HaxeParameterList parameterList = method.getParameterList(); + List list = parameterList.getParameterList(); + if (list.isEmpty()) { + return parameterList.add(declaration); + }else { + PsiUtilCore.ensureValid(parameterList); + PsiElement seperator = HaxeElementGenerator.createComma(expression.getProject()); + parameterList.add(seperator); + return parameterList.add(declaration); + } + + } + return null; + } +} diff --git a/src/main/java/com/intellij/plugins/haxe/ide/refactoring/introduce/HaxeIntroduceDialog.form b/src/main/java/com/intellij/plugins/haxe/ide/refactoring/introduceVariable/HaxeIntroduceDialog.form similarity index 99% rename from src/main/java/com/intellij/plugins/haxe/ide/refactoring/introduce/HaxeIntroduceDialog.form rename to src/main/java/com/intellij/plugins/haxe/ide/refactoring/introduceVariable/HaxeIntroduceDialog.form index db9e8249d..7b78f2d77 100644 --- a/src/main/java/com/intellij/plugins/haxe/ide/refactoring/introduce/HaxeIntroduceDialog.form +++ b/src/main/java/com/intellij/plugins/haxe/ide/refactoring/introduceVariable/HaxeIntroduceDialog.form @@ -1,5 +1,5 @@ -
+ diff --git a/src/main/java/com/intellij/plugins/haxe/ide/refactoring/introduce/HaxeIntroduceDialog.java b/src/main/java/com/intellij/plugins/haxe/ide/refactoring/introduceVariable/HaxeIntroduceDialog.java similarity index 95% rename from src/main/java/com/intellij/plugins/haxe/ide/refactoring/introduce/HaxeIntroduceDialog.java rename to src/main/java/com/intellij/plugins/haxe/ide/refactoring/introduceVariable/HaxeIntroduceDialog.java index 11801d14b..c9696d2d8 100644 --- a/src/main/java/com/intellij/plugins/haxe/ide/refactoring/introduce/HaxeIntroduceDialog.java +++ b/src/main/java/com/intellij/plugins/haxe/ide/refactoring/introduceVariable/HaxeIntroduceDialog.java @@ -15,13 +15,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.intellij.plugins.haxe.ide.refactoring.introduce; +package com.intellij.plugins.haxe.ide.refactoring.introduceVariable; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.ComboBox; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.plugins.haxe.HaxeFileType; import com.intellij.plugins.haxe.lang.psi.HaxeExpression; +import com.intellij.psi.PsiElement; import com.intellij.ui.EditorComboBoxEditor; import com.intellij.ui.EditorComboBoxRenderer; import com.intellij.ui.StringComboboxEditor; @@ -45,7 +46,7 @@ public class HaxeIntroduceDialog extends DialogWrapper { private final Project myProject; private final int myOccurrencesCount; - private final HaxeExpression myExpression; + private final PsiElement myExpression; public HaxeIntroduceDialog(@NotNull final Project project, @NotNull final String caption, @@ -117,9 +118,6 @@ public Project getProject() { return myProject; } - public HaxeExpression getExpression() { - return myExpression; - } public boolean doReplaceAllOccurrences() { return myReplaceAll.isSelected(); diff --git a/src/main/java/com/intellij/plugins/haxe/ide/refactoring/introduce/HaxeIntroduceHandler.java b/src/main/java/com/intellij/plugins/haxe/ide/refactoring/introduceVariable/HaxeIntroduceHandler.java similarity index 90% rename from src/main/java/com/intellij/plugins/haxe/ide/refactoring/introduce/HaxeIntroduceHandler.java rename to src/main/java/com/intellij/plugins/haxe/ide/refactoring/introduceVariable/HaxeIntroduceHandler.java index fdf388ef6..d9c81fe41 100644 --- a/src/main/java/com/intellij/plugins/haxe/ide/refactoring/introduce/HaxeIntroduceHandler.java +++ b/src/main/java/com/intellij/plugins/haxe/ide/refactoring/introduceVariable/HaxeIntroduceHandler.java @@ -16,7 +16,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.intellij.plugins.haxe.ide.refactoring.introduce; +package com.intellij.plugins.haxe.ide.refactoring.introduceVariable; import com.intellij.codeInsight.CodeInsightUtilCore; import com.intellij.codeInsight.template.TemplateBuilderImpl; @@ -26,6 +26,7 @@ import com.intellij.lang.ASTNode; import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.command.CommandProcessor; import com.intellij.openapi.command.WriteCommandAction; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.CaretModel; @@ -61,6 +62,11 @@ */ @SuppressWarnings("MethodMayBeStatic") public abstract class HaxeIntroduceHandler implements RefactoringActionHandler { + + protected @NotNull String getActionName() { + return "Introduce Variable"; + } + @Nullable protected static PsiElement findAnchor(PsiElement occurrence) { return findAnchor(Collections.singletonList(occurrence)); @@ -109,7 +115,17 @@ public HaxeIntroduceHandler(@NotNull final String dialogTitle) { @Override public void invoke(@NotNull Project project, Editor editor, PsiFile file, DataContext dataContext) { - performAction(new HaxeIntroduceOperation(project, editor, file, null)); + + CommandProcessor.getInstance().executeCommand(project, () -> { + performAction(new HaxeIntroduceOperation(project, editor, file, null, getActionName())); + }, getActionName(), getActionName()); + + //LocalHistoryAction action = LocalHistory.getInstance().startAction(getActionName()); + //try { + // performAction(new HaxeIntroduceOperation(project, editor, file, null, getActionName())); + //}finally { + // action.finish(); + //} } @Override @@ -167,16 +183,17 @@ protected void performAction(HaxeIntroduceOperation operation) { return; } - element1 = HaxeRefactoringUtil.getSelectedExpression(project, file, element1, element2); - if (!isValidForExtraction(element1)) { + PsiElement selectedExpression = HaxeRefactoringUtil.getSelectedExpression(element1, element2); + if (selectedExpression == null) selectedExpression = HaxeRefactoringUtil.getSelectedComponentName(element1, element2); + if (!isValidForExtraction(selectedExpression)) { showCannotPerformError(project, editor); return; } - if (!checkIntroduceContext(file, editor, element1)) { + if (!checkIntroduceContext(file, editor, selectedExpression)) { return; } - operation.setElement(element1); + operation.setElement(selectedExpression); performActionOnElement(operation); } @@ -285,18 +302,17 @@ private void performActionOnElement(HaxeIntroduceOperation operation) { if (!checkEnabled(operation)) { return; } - final PsiElement element = operation.getElement(); + final PsiElement element = operation.getElement(); - final HaxeExpression initializer = (HaxeExpression)element; - operation.setInitializer(initializer); + operation.setInitializer(element); - operation.setOccurrences(getOccurrences(element, initializer)); - operation.setSuggestedNames(getSuggestedNames(initializer)); - if (operation.getOccurrences().size() == 0) { - operation.setReplaceAll(false); - } + operation.setOccurrences(getOccurrences(element, element)); + operation.setSuggestedNames(getSuggestedNames(element)); + if (operation.getOccurrences().isEmpty()) { + operation.setReplaceAll(false); + } - performActionOnElementOccurrences(operation); + performActionOnElementOccurrences(operation); } protected void performActionOnElementOccurrences(final HaxeIntroduceOperation operation) { @@ -331,7 +347,7 @@ protected boolean checkEnabled(HaxeIntroduceOperation operation) { protected static void ensureName(HaxeIntroduceOperation operation) { if (operation.getName() == null) { final Collection suggestedNames = operation.getSuggestedNames(); - if (suggestedNames.size() > 0) { + if (!suggestedNames.isEmpty()) { operation.suggestName(); } else { @@ -341,7 +357,7 @@ protected static void ensureName(HaxeIntroduceOperation operation) { } - protected List getOccurrences(PsiElement element, @NotNull final HaxeExpression expression) { + protected List getOccurrences(PsiElement element, @NotNull final PsiElement expression) { PsiElement context = element; HaxeComponentType type = null; do { @@ -363,7 +379,7 @@ private static boolean notFunctionMethodClass(HaxeComponentType type) { return !isFunctionMethodClass; } - protected Collection getSuggestedNames(final HaxeExpression expression) { + protected Collection getSuggestedNames(final PsiElement expression) { return HaxeNameSuggesterUtil.getSuggestedNames(expression, false); } @@ -383,9 +399,11 @@ protected void performIntroduceWithDialog(HaxeIntroduceOperation operation) { if (declaration == null) { return; } - final Editor editor = operation.getEditor(); - editor.getCaretModel().moveToOffset(declaration.getTextRange().getEndOffset()); - editor.getSelectionModel().removeSelection(); + + final Editor editor = operation.getEditor(); + editor.getCaretModel().moveToOffset(declaration.getTextRange().getEndOffset()); + editor.getSelectionModel().removeSelection(); + } protected void performInplaceIntroduce(HaxeIntroduceOperation operation) { @@ -421,10 +439,12 @@ protected void performInplaceIntroduce(HaxeIntroduceOperation operation) { operation.getEditor().getCaretModel().moveToOffset(elementForCaret.getTextRange().getStartOffset()); final InplaceVariableIntroducer introducer = - new HaxeInplaceVariableIntroducer(target.getComponentName(), operation, occurrences); + new HaxeInplaceVariableIntroducer(target.getComponentName(), operation, occurrences, getActionName()); introducer.performInplaceRefactoring(names); } + + @Nullable protected PsiElement performRefactoring(HaxeIntroduceOperation operation) { PsiElement declaration = createDeclaration(operation); @@ -442,7 +462,7 @@ protected PsiElement performRefactoring(HaxeIntroduceOperation operation) { @Nullable public PsiElement createDeclaration(HaxeIntroduceOperation operation) { - HaxeExpression initializer = operation.getInitializer(); + PsiElement initializer = operation.getInitializer(); String typeText = ""; if (initializer instanceof HaxeTypeCheckExpr) { typeText = toTypeText(((HaxeTypeCheckExpr)initializer).getTypeOrAnonymous()); @@ -475,16 +495,19 @@ protected PsiElement createDeclaration(Project project, String text, PsiElement } private PsiElement performReplace(@NotNull final PsiElement declaration, final HaxeIntroduceOperation operation) { - final HaxeExpression expression = operation.getInitializer(); + final PsiElement expression = operation.getInitializer(); final Project project = operation.getProject(); - PsiElement result = WriteCommandAction.writeCommandAction(project, expression.getContainingFile()).compute(() -> { + PsiElement result = WriteCommandAction.writeCommandAction(project, expression.getContainingFile()) + .withName(getActionName()) + .withGroupId(getActionName()) + .compute(() -> { final PsiElement createdDeclaration = addDeclaration(operation, declaration); if (createdDeclaration == null) return null; - modifyDeclaration(createdDeclaration); + modifyDeclaration(createdDeclaration, operation); PsiElement newExpression = createExpression(project, operation); if (null == newExpression) { @@ -533,7 +556,7 @@ private PsiElement performReplace(@NotNull final PsiElement declaration, final H return null; } - protected void modifyDeclaration(@NotNull PsiElement declaration) { + protected void modifyDeclaration(@NotNull PsiElement declaration, HaxeIntroduceOperation operation) { final PsiElement newLineNode = PsiParserFacade.getInstance(declaration.getProject()).createWhiteSpaceFromText("\n"); final PsiElement parent = declaration.getParent(); parent.addAfter(newLineNode, declaration); @@ -598,22 +621,22 @@ public static class HaxeInplaceVariableIntroducer extends InplaceVariableIntrodu public HaxeInplaceVariableIntroducer(HaxeComponentName target, HaxeIntroduceOperation operation, - List occurrences) { - super(target, operation.getEditor(), operation.getProject(), "Introduce Variable", + List occurrences, String title) { + super(target, operation.getEditor(), operation.getProject(), title, occurrences.toArray(new PsiElement[0]), null); myTarget = target; } public HaxeInplaceVariableIntroducer(HaxeComponentName target, Editor editor, - List occurrences) { - super(target, editor, editor.getProject(), "Introduce Variable", + List occurrences, String title) { + super(target, editor, editor.getProject(), title, occurrences.toArray(new PsiElement[0]), null); myTarget = target; } public HaxeInplaceVariableIntroducer(HaxeComponentName target, Editor editor, - List occurrences, Map additional) { - super(target, editor, editor.getProject(), "Introduce Variable", + List occurrences, Map additional, String title) { + super(target, editor, editor.getProject(), title, occurrences.toArray(new PsiElement[0]), null); this.additional = additional; myTarget = target; diff --git a/src/main/java/com/intellij/plugins/haxe/ide/refactoring/introduce/HaxeIntroduceOperation.java b/src/main/java/com/intellij/plugins/haxe/ide/refactoring/introduceVariable/HaxeIntroduceOperation.java similarity index 90% rename from src/main/java/com/intellij/plugins/haxe/ide/refactoring/introduce/HaxeIntroduceOperation.java rename to src/main/java/com/intellij/plugins/haxe/ide/refactoring/introduceVariable/HaxeIntroduceOperation.java index 4fb47576a..12c49c5d2 100644 --- a/src/main/java/com/intellij/plugins/haxe/ide/refactoring/introduce/HaxeIntroduceOperation.java +++ b/src/main/java/com/intellij/plugins/haxe/ide/refactoring/introduceVariable/HaxeIntroduceOperation.java @@ -16,7 +16,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.intellij.plugins.haxe.ide.refactoring.introduce; +package com.intellij.plugins.haxe.ide.refactoring.introduceVariable; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.project.Project; @@ -37,9 +37,10 @@ public class HaxeIntroduceOperation { private Editor myEditor; private PsiFile myFile; private String myName; + private String myActionName; private Boolean myReplaceAll; private PsiElement myElement; - private HaxeExpression myInitializer; + private PsiElement myInitializer; private List myOccurrences = Collections.emptyList(); private Collection mySuggestedNames; private boolean nameWasAutoSelectedFromSuggestions; @@ -47,11 +48,14 @@ public class HaxeIntroduceOperation { public HaxeIntroduceOperation(Project project, Editor editor, PsiFile file, - String name) { + String name, + String actionName + ) { myProject = project; myEditor = editor; myFile = file; myName = name; + myActionName = actionName; } public String getName() { @@ -125,11 +129,11 @@ public void setReplaceAll(boolean replaceAll) { myReplaceAll = replaceAll; } - public HaxeExpression getInitializer() { + public PsiElement getInitializer() { return myInitializer; } - public void setInitializer(HaxeExpression initializer) { + public void setInitializer(PsiElement initializer) { myInitializer = initializer; } diff --git a/src/main/java/com/intellij/plugins/haxe/ide/refactoring/introduce/HaxeIntroduceVariableHandler.java b/src/main/java/com/intellij/plugins/haxe/ide/refactoring/introduceVariable/HaxeIntroduceVariableHandler.java similarity index 96% rename from src/main/java/com/intellij/plugins/haxe/ide/refactoring/introduce/HaxeIntroduceVariableHandler.java rename to src/main/java/com/intellij/plugins/haxe/ide/refactoring/introduceVariable/HaxeIntroduceVariableHandler.java index 7acd7b17f..aa00f5222 100644 --- a/src/main/java/com/intellij/plugins/haxe/ide/refactoring/introduce/HaxeIntroduceVariableHandler.java +++ b/src/main/java/com/intellij/plugins/haxe/ide/refactoring/introduceVariable/HaxeIntroduceVariableHandler.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.intellij.plugins.haxe.ide.refactoring.introduce; +package com.intellij.plugins.haxe.ide.refactoring.introduceVariable; import com.intellij.plugins.haxe.HaxeBundle; import com.intellij.psi.PsiElement; diff --git a/src/main/java/com/intellij/plugins/haxe/lang/util/HaxeExpressionUtil.java b/src/main/java/com/intellij/plugins/haxe/lang/util/HaxeExpressionUtil.java index f3ff1a17c..26e6d7555 100644 --- a/src/main/java/com/intellij/plugins/haxe/lang/util/HaxeExpressionUtil.java +++ b/src/main/java/com/intellij/plugins/haxe/lang/util/HaxeExpressionUtil.java @@ -83,7 +83,7 @@ private static IElementType getAssignOperationElementType(@NotNull HaxeAssignExp return null; } - public static boolean isArrayExpression(HaxeExpression expr) { + public static boolean isArrayExpression(PsiElement expr) { return expr instanceof HaxeArrayLiteral || expr instanceof HaxeArrayAccessExpression; } diff --git a/src/main/java/com/intellij/plugins/haxe/model/fixer/HaxeCreateFieldFixer.java b/src/main/java/com/intellij/plugins/haxe/model/fixer/HaxeCreateFieldFixer.java deleted file mode 100644 index 85b051082..000000000 --- a/src/main/java/com/intellij/plugins/haxe/model/fixer/HaxeCreateFieldFixer.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2000-2013 JetBrains s.r.o. - * Copyright 2014-2015 AS3Boyan - * Copyright 2014-2014 Elias Ku - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.intellij.plugins.haxe.model.fixer; - -import com.intellij.plugins.haxe.lang.psi.HaxeReferenceExpression; -import com.intellij.psi.PsiElement; - -public class HaxeCreateFieldFixer extends HaxeFixer { - public HaxeCreateFieldFixer(String name, PsiElement context) { - super("Create field"); - } - - @Override - public void run() { - // @TODO: Stub. Implement. - } -} diff --git a/src/main/java/com/intellij/plugins/haxe/model/fixer/HaxeCreateLocalVariableFixer.java b/src/main/java/com/intellij/plugins/haxe/model/fixer/HaxeCreateLocalVariableFixer.java deleted file mode 100644 index 44d6dd56d..000000000 --- a/src/main/java/com/intellij/plugins/haxe/model/fixer/HaxeCreateLocalVariableFixer.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2000-2013 JetBrains s.r.o. - * Copyright 2014-2015 AS3Boyan - * Copyright 2014-2014 Elias Ku - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.intellij.plugins.haxe.model.fixer; - -import com.intellij.plugins.haxe.lang.psi.HaxeReferenceExpression; -import com.intellij.psi.PsiElement; - -public class HaxeCreateLocalVariableFixer extends HaxeFixer { - public HaxeCreateLocalVariableFixer(String name, PsiElement context) { - super("Create local variable"); - } - - @Override - public void run() { - // @TODO: Stub. Implement. - } -} diff --git a/src/main/java/com/intellij/plugins/haxe/model/fixer/HaxeCreateMethodFixer.java b/src/main/java/com/intellij/plugins/haxe/model/fixer/HaxeCreateMethodFixer.java deleted file mode 100644 index c8354d0ed..000000000 --- a/src/main/java/com/intellij/plugins/haxe/model/fixer/HaxeCreateMethodFixer.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2000-2013 JetBrains s.r.o. - * Copyright 2014-2015 AS3Boyan - * Copyright 2014-2014 Elias Ku - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.intellij.plugins.haxe.model.fixer; - -import com.intellij.plugins.haxe.lang.psi.HaxeReferenceExpression; -import com.intellij.psi.PsiElement; - -public class HaxeCreateMethodFixer extends HaxeFixer { - public HaxeCreateMethodFixer(String name, PsiElement context) { - super("Create method"); - } - - @Override - public void run() { - // @TODO: Stub. Implement. - } -} diff --git a/src/main/java/com/intellij/plugins/haxe/model/type/HaxeExpressionEvaluatorHandlers.java b/src/main/java/com/intellij/plugins/haxe/model/type/HaxeExpressionEvaluatorHandlers.java index 448c6e02e..8957ce010 100644 --- a/src/main/java/com/intellij/plugins/haxe/model/type/HaxeExpressionEvaluatorHandlers.java +++ b/src/main/java/com/intellij/plugins/haxe/model/type/HaxeExpressionEvaluatorHandlers.java @@ -209,13 +209,10 @@ static ResultHolder handleReferenceExpression( HaxeExpressionEvaluatorContext co resolved = false; if (children.length == 1) { - context.addError(children[n], "Can't resolve '" + accessName + "' in " + typeHolder.getType(), - new HaxeCreateLocalVariableFixer(accessName, element)); + context.addError(children[n], "Can't resolve '" + accessName + "' in " + typeHolder.getType()); } else { - context.addError(children[n], "Can't resolve '" + accessName + "' in " + typeHolder.getType(), - new HaxeCreateMethodFixer(accessName, element), - new HaxeCreateFieldFixer(accessName, element)); + context.addError(children[n], "Can't resolve '" + accessName + "' in " + typeHolder.getType()); } } diff --git a/src/main/java/com/intellij/plugins/haxe/util/HaxeNameSuggesterUtil.java b/src/main/java/com/intellij/plugins/haxe/util/HaxeNameSuggesterUtil.java index 3968fa80d..875a3a6fb 100644 --- a/src/main/java/com/intellij/plugins/haxe/util/HaxeNameSuggesterUtil.java +++ b/src/main/java/com/intellij/plugins/haxe/util/HaxeNameSuggesterUtil.java @@ -23,6 +23,7 @@ import com.intellij.plugins.haxe.lang.psi.*; import com.intellij.plugins.haxe.lang.util.HaxeExpressionUtil; import com.intellij.plugins.haxe.model.type.*; +import com.intellij.psi.PsiElement; import com.intellij.psi.codeStyle.NameUtil; import org.jetbrains.annotations.NotNull; @@ -86,13 +87,13 @@ public static Collection generateNames(@NotNull String name, boolean use } @NotNull - public static String getDefaultExpressionName(HaxeExpression expression, boolean useUpperCase) { + public static String getDefaultExpressionName(PsiElement expression, boolean useUpperCase) { String lower = getDefaultExpressionName(expression); return useUpperCase ? lower.toUpperCase() : lower; } @NotNull - public static String getDefaultExpressionName(HaxeExpression expression) { + public static String getDefaultExpressionName(PsiElement expression) { ResultHolder typeResult = HaxeTypeResolver.getPsiElementType(expression, new HaxeGenericResolver()); SpecificTypeReference type = typeResult.getType(); @@ -214,10 +215,10 @@ public static String getDefaultExpressionName(HaxeExpression expression) { } @NotNull - public static List getSuggestedNames(final HaxeExpression expression, final boolean wantUpperCase) { + public static List getSuggestedNames(final PsiElement expression, final boolean wantUpperCase) { return getSuggestedNames(expression, wantUpperCase, true, null); } - public static List getSuggestedNames(final HaxeExpression expression, final boolean wantUpperCase, boolean findUsed, Set customUsedList) { + public static List getSuggestedNames(final PsiElement expression, final boolean wantUpperCase, boolean findUsed, Set customUsedList) { String text = expression.getText(); boolean useUpperCase = wantUpperCase; boolean isArray = HaxeExpressionUtil.isArrayExpression(expression); diff --git a/src/main/resources/messages/HaxeBundle.properties b/src/main/resources/messages/HaxeBundle.properties index 6019357de..7a06b299b 100644 --- a/src/main/resources/messages/HaxeBundle.properties +++ b/src/main/resources/messages/HaxeBundle.properties @@ -136,6 +136,7 @@ haxe.color.settings.description.metadata=Metadata haxe.project.reparsing=Applying new compiler macros... refactoring.introduce.selection.error=Cannot perform refactoring using selected element(s) refactoring.introduce.variable.dialog.title=Introduce Variable +refactoring.introduce.parameter.dialog.title=Introduce Parameter install.flex.plugin=Please install Flex plugin to debug Flash target\! enable.flex.plugin=Please enable Flex plugin to debug Flash target\! hxcpp.port.label=HXCPP Debugging Port\: diff --git a/src/test/java/com/intellij/plugins/haxe/ide/refactoring/introduce/HaxeIntroduceTestBase.java b/src/test/java/com/intellij/plugins/haxe/ide/refactoring/introduceVariable/HaxeIntroduceTestBase.java similarity index 96% rename from src/test/java/com/intellij/plugins/haxe/ide/refactoring/introduce/HaxeIntroduceTestBase.java rename to src/test/java/com/intellij/plugins/haxe/ide/refactoring/introduceVariable/HaxeIntroduceTestBase.java index fde146105..a17bf1b24 100644 --- a/src/test/java/com/intellij/plugins/haxe/ide/refactoring/introduce/HaxeIntroduceTestBase.java +++ b/src/test/java/com/intellij/plugins/haxe/ide/refactoring/introduceVariable/HaxeIntroduceTestBase.java @@ -16,7 +16,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.intellij.plugins.haxe.ide.refactoring.introduce; +package com.intellij.plugins.haxe.ide.refactoring.introduceVariable; import com.intellij.openapi.util.text.StringUtil; import com.intellij.plugins.haxe.HaxeCodeInsightFixtureTestCase; @@ -69,7 +69,7 @@ protected void doTest(@Nullable Consumer customization, myFixture.getEditor().getSettings().setVariableInplaceRenameEnabled(inPlace); HaxeIntroduceHandler handler = createHandler(); final HaxeIntroduceOperation operation = - new HaxeIntroduceOperation(myFixture.getProject(), myFixture.getEditor(), myFixture.getFile(), newname); + new HaxeIntroduceOperation(myFixture.getProject(), myFixture.getEditor(), myFixture.getFile(), newname,"action name"); operation.setReplaceAll(replaceAll); if (customization != null) { customization.consume(operation); diff --git a/src/test/java/com/intellij/plugins/haxe/ide/refactoring/introduce/HaxeIntroduceVariableTest.java b/src/test/java/com/intellij/plugins/haxe/ide/refactoring/introduceVariable/HaxeIntroduceVariableTest.java similarity index 98% rename from src/test/java/com/intellij/plugins/haxe/ide/refactoring/introduce/HaxeIntroduceVariableTest.java rename to src/test/java/com/intellij/plugins/haxe/ide/refactoring/introduceVariable/HaxeIntroduceVariableTest.java index fb7680c39..92fcfdb6a 100644 --- a/src/test/java/com/intellij/plugins/haxe/ide/refactoring/introduce/HaxeIntroduceVariableTest.java +++ b/src/test/java/com/intellij/plugins/haxe/ide/refactoring/introduceVariable/HaxeIntroduceVariableTest.java @@ -16,7 +16,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.intellij.plugins.haxe.ide.refactoring.introduce; +package com.intellij.plugins.haxe.ide.refactoring.introduceVariable; import com.intellij.plugins.haxe.lang.psi.HaxeCallExpression; import org.junit.Test;