mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
convert static to instance method: same class conversion presentation
This commit is contained in:
+4
-4
@@ -17,8 +17,8 @@ package com.intellij.refactoring.convertToInstanceMethod;
|
||||
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.help.HelpManager;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiMethod;
|
||||
import com.intellij.psi.PsiParameter;
|
||||
import com.intellij.refactoring.HelpID;
|
||||
import com.intellij.refactoring.RefactoringBundle;
|
||||
import com.intellij.refactoring.move.moveInstanceMethod.MoveInstanceMethodDialogBase;
|
||||
@@ -34,16 +34,16 @@ import java.awt.event.MouseEvent;
|
||||
*/
|
||||
public class ConvertToInstanceMethodDialog extends MoveInstanceMethodDialogBase {
|
||||
private static final Logger LOG = Logger.getInstance("#com.intellij.refactoring.convertToInstanceMethod.ConvertToInstanceMethodDialog");
|
||||
public ConvertToInstanceMethodDialog(final PsiMethod method, final PsiElement[] variables) {
|
||||
public ConvertToInstanceMethodDialog(final PsiMethod method, final Object[] variables) {
|
||||
super(method, variables, ConvertToInstanceMethodHandler.REFACTORING_NAME);
|
||||
init();
|
||||
}
|
||||
|
||||
protected void doAction() {
|
||||
final PsiElement targetVariable = (PsiElement)myList.getSelectedValue();
|
||||
final Object targetVariable = myList.getSelectedValue();
|
||||
LOG.assertTrue(targetVariable != null);
|
||||
final ConvertToInstanceMethodProcessor processor = new ConvertToInstanceMethodProcessor(myMethod.getProject(),
|
||||
myMethod, targetVariable,
|
||||
myMethod, targetVariable instanceof PsiParameter ? (PsiParameter)targetVariable : null,
|
||||
myVisibilityPanel.getVisibility());
|
||||
if (!verifyTargetClass(processor.getTargetClass())) return;
|
||||
invokeRefactoring(processor);
|
||||
|
||||
+4
-5
@@ -26,6 +26,7 @@ import com.intellij.refactoring.HelpID;
|
||||
import com.intellij.refactoring.RefactoringActionHandler;
|
||||
import com.intellij.refactoring.RefactoringBundle;
|
||||
import com.intellij.refactoring.util.CommonRefactoringUtil;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -70,7 +71,7 @@ public class ConvertToInstanceMethodHandler implements RefactoringActionHandler
|
||||
return;
|
||||
}
|
||||
final PsiParameter[] parameters = method.getParameterList().getParameters();
|
||||
List<PsiElement> targetQualifiers = new ArrayList<>();
|
||||
List<Object> targetQualifiers = new ArrayList<>();
|
||||
for (final PsiParameter parameter : parameters) {
|
||||
final PsiType type = parameter.getType();
|
||||
if (type instanceof PsiClassType) {
|
||||
@@ -89,11 +90,9 @@ public class ConvertToInstanceMethodHandler implements RefactoringActionHandler
|
||||
boolean noArgConstructor =
|
||||
constructors.length == 0 || Arrays.stream(constructors).anyMatch(constructor -> constructor.getParameterList().getParametersCount() == 0);
|
||||
if (noArgConstructor) {
|
||||
targetQualifiers.add(JavaPsiFacade.getElementFactory(project).createExpressionFromText("new " + className + "()", method));
|
||||
targetQualifiers.add("this / new " + className + "()");
|
||||
}
|
||||
|
||||
new ConvertToInstanceMethodDialog(
|
||||
method,
|
||||
targetQualifiers.toArray(new PsiElement[targetQualifiers.size()])).show();
|
||||
new ConvertToInstanceMethodDialog(method, ArrayUtil.toObjectArray(targetQualifiers)).show();
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -65,11 +65,11 @@ public class ConvertToInstanceMethodProcessor extends BaseRefactoringProcessor {
|
||||
|
||||
public ConvertToInstanceMethodProcessor(final Project project,
|
||||
final PsiMethod method,
|
||||
final PsiElement targetParameter,
|
||||
@Nullable final PsiParameter targetParameter,
|
||||
final String newVisibility) {
|
||||
super(project);
|
||||
myMethod = method;
|
||||
myTargetParameter = targetParameter instanceof PsiParameter ? (PsiParameter)targetParameter : null;
|
||||
myTargetParameter = targetParameter;
|
||||
LOG.assertTrue(method.hasModifierProperty(PsiModifier.STATIC));
|
||||
if (myTargetParameter != null) {
|
||||
LOG.assertTrue(myTargetParameter.getDeclarationScope() == myMethod);
|
||||
|
||||
+1
-1
@@ -106,7 +106,7 @@ public class MoveInstanceMethodDialog extends MoveInstanceMethodDialogBase {
|
||||
textField.setEnabled(true);
|
||||
}
|
||||
|
||||
final PsiElement variable = myVariables[selectedIndex];
|
||||
final Object variable = myVariables[selectedIndex];
|
||||
if (variable instanceof PsiField) {
|
||||
final PsiField field = (PsiField)variable;
|
||||
final PsiClass hisClass = field.getContainingClass();
|
||||
|
||||
+8
-5
@@ -18,7 +18,10 @@ package com.intellij.refactoring.move.moveInstanceMethod;
|
||||
import com.intellij.lang.findUsages.DescriptiveNameUtil;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiMethod;
|
||||
import com.intellij.psi.PsiSubstitutor;
|
||||
import com.intellij.psi.PsiVariable;
|
||||
import com.intellij.psi.search.searches.ClassInheritorsSearch;
|
||||
import com.intellij.psi.util.PsiFormatUtil;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
@@ -39,7 +42,7 @@ import java.awt.*;
|
||||
*/
|
||||
public abstract class MoveInstanceMethodDialogBase extends MoveDialogBase {
|
||||
protected final PsiMethod myMethod;
|
||||
protected final PsiElement[] myVariables;
|
||||
protected final Object[] myVariables;
|
||||
|
||||
public JComponent getPreferredFocusedComponent() {
|
||||
return myList;
|
||||
@@ -49,7 +52,7 @@ public abstract class MoveInstanceMethodDialogBase extends MoveDialogBase {
|
||||
protected JavaVisibilityPanel myVisibilityPanel;
|
||||
protected final String myRefactoringName;
|
||||
|
||||
public MoveInstanceMethodDialogBase(PsiMethod method, PsiElement[] variables, String refactoringName) {
|
||||
public MoveInstanceMethodDialogBase(PsiMethod method, Object[] variables, String refactoringName) {
|
||||
super(method.getProject(), true);
|
||||
myMethod = method;
|
||||
myVariables = variables;
|
||||
@@ -147,8 +150,8 @@ public abstract class MoveInstanceMethodDialogBase extends MoveDialogBase {
|
||||
setIcon(psiVariable.getIcon(0));
|
||||
setText(text);
|
||||
}
|
||||
else if (value instanceof PsiExpression) {
|
||||
setText(((PsiExpression)value).getText());
|
||||
else if (value instanceof String) {
|
||||
setText((String)value);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user