mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
moved to java-psi
This commit is contained in:
+5
-4
@@ -30,6 +30,7 @@ import com.intellij.refactoring.ui.NameSuggestionsField;
|
||||
import com.intellij.refactoring.util.CommonRefactoringUtil;
|
||||
import com.intellij.refactoring.util.ParameterTablePanel;
|
||||
import com.intellij.refactoring.util.RefactoringMessageUtil;
|
||||
import com.intellij.refactoring.util.VariableData;
|
||||
import com.intellij.ui.IdeBorderFactory;
|
||||
import com.intellij.ui.NonFocusableCheckBox;
|
||||
import com.intellij.util.Function;
|
||||
@@ -49,7 +50,7 @@ class AnonymousToInnerDialog extends DialogWrapper{
|
||||
private final boolean myShowCanBeStatic;
|
||||
|
||||
private NameSuggestionsField myNameField;
|
||||
private final ParameterTablePanel.VariableData[] myVariableData;
|
||||
private final VariableData[] myVariableData;
|
||||
private final Map<PsiVariable,VariableInfo> myVariableToInfoMap = new HashMap<PsiVariable, VariableInfo>();
|
||||
private JCheckBox myCbMakeStatic;
|
||||
|
||||
@@ -65,7 +66,7 @@ class AnonymousToInnerDialog extends DialogWrapper{
|
||||
for (VariableInfo info : variableInfos) {
|
||||
myVariableToInfoMap.put(info.variable, info);
|
||||
}
|
||||
myVariableData = new ParameterTablePanel.VariableData[variableInfos.length];
|
||||
myVariableData = new VariableData[variableInfos.length];
|
||||
|
||||
final JavaCodeStyleManager codeStyleManager = JavaCodeStyleManager.getInstance(myProject);
|
||||
for(int idx = 0; idx < variableInfos.length; idx++){
|
||||
@@ -74,7 +75,7 @@ class AnonymousToInnerDialog extends DialogWrapper{
|
||||
VariableKind kind = codeStyleManager.getVariableKind(info.variable);
|
||||
name = codeStyleManager.variableNameToPropertyName(name, kind);
|
||||
name = codeStyleManager.propertyNameToVariableName(name, VariableKind.PARAMETER);
|
||||
ParameterTablePanel.VariableData data = new ParameterTablePanel.VariableData(info.variable);
|
||||
VariableData data = new VariableData(info.variable);
|
||||
data.name = name;
|
||||
data.passAsParameter = true;
|
||||
myVariableData[idx] = data;
|
||||
@@ -127,7 +128,7 @@ class AnonymousToInnerDialog extends DialogWrapper{
|
||||
JavaCodeStyleManager codeStyleManager = JavaCodeStyleManager.getInstance(myProject);
|
||||
VariableInfo[] infos = new VariableInfo[myVariableData.length];
|
||||
for (int idx = 0; idx < myVariableData.length; idx++) {
|
||||
ParameterTablePanel.VariableData data = myVariableData[idx];
|
||||
VariableData data = myVariableData[idx];
|
||||
VariableInfo info = myVariableToInfoMap.get(data.variable);
|
||||
|
||||
info.passAsParameter = data.passAsParameter;
|
||||
|
||||
+2
-2
@@ -23,7 +23,7 @@ package com.intellij.refactoring.extractMethod;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.DialogWrapper;
|
||||
import com.intellij.psi.PsiModifier;
|
||||
import com.intellij.refactoring.util.ParameterTablePanel;
|
||||
import com.intellij.refactoring.util.VariableData;
|
||||
|
||||
public abstract class AbstractExtractDialog extends DialogWrapper {
|
||||
protected AbstractExtractDialog(Project project) {
|
||||
@@ -33,7 +33,7 @@ public abstract class AbstractExtractDialog extends DialogWrapper {
|
||||
|
||||
public abstract String getChosenMethodName();
|
||||
|
||||
public abstract ParameterTablePanel.VariableData[] getChosenParameters();
|
||||
public abstract VariableData[] getChosenParameters();
|
||||
|
||||
@PsiModifier.ModifierConstant
|
||||
public abstract String getVisibility();
|
||||
|
||||
@@ -32,6 +32,7 @@ import com.intellij.refactoring.ui.JavaComboBoxVisibilityPanel;
|
||||
import com.intellij.refactoring.ui.MethodSignatureComponent;
|
||||
import com.intellij.refactoring.util.ConflictsUtil;
|
||||
import com.intellij.refactoring.util.ParameterTablePanel;
|
||||
import com.intellij.refactoring.util.VariableData;
|
||||
import com.intellij.ui.EditorTextField;
|
||||
import com.intellij.ui.IdeBorderFactory;
|
||||
import com.intellij.ui.NonFocusableCheckBox;
|
||||
@@ -81,7 +82,7 @@ public class ExtractMethodDialog extends AbstractExtractDialog {
|
||||
private final JCheckBox myFoldParameters = new NonFocusableCheckBox(RefactoringBundle.message("declare.folded.parameters"));
|
||||
public JPanel myCenterPanel;
|
||||
public JPanel myParamTable;
|
||||
private ParameterTablePanel.VariableData[] myInputVariables;
|
||||
private VariableData[] myInputVariables;
|
||||
|
||||
public ExtractMethodDialog(Project project,
|
||||
PsiClass targetClass, final InputVariables inputVariables, PsiType returnType,
|
||||
@@ -156,7 +157,7 @@ public class ExtractMethodDialog extends AbstractExtractDialog {
|
||||
return myNameField.getText();
|
||||
}
|
||||
|
||||
public ParameterTablePanel.VariableData[] getChosenParameters() {
|
||||
public VariableData[] getChosenParameters() {
|
||||
return myInputVariables;
|
||||
}
|
||||
|
||||
@@ -182,7 +183,7 @@ public class ExtractMethodDialog extends AbstractExtractDialog {
|
||||
}
|
||||
|
||||
if (myMakeVarargs != null && myMakeVarargs.isSelected()) {
|
||||
final ParameterTablePanel.VariableData data = myInputVariables[myInputVariables.length - 1];
|
||||
final VariableData data = myInputVariables[myInputVariables.length - 1];
|
||||
if (data.type instanceof PsiArrayType) {
|
||||
data.type = new PsiEllipsisType(((PsiArrayType)data.type).getComponentType());
|
||||
}
|
||||
@@ -243,12 +244,12 @@ public class ExtractMethodDialog extends AbstractExtractDialog {
|
||||
myFoldParameters.setSelected(myVariableData.isFoldingSelectedByDefault());
|
||||
myFoldParameters.setVisible(myVariableData.isFoldable());
|
||||
myVariableData.setFoldingAvailable(myFoldParameters.isSelected());
|
||||
myInputVariables = myVariableData.getInputVariables().toArray(new ParameterTablePanel.VariableData[myVariableData.getInputVariables().size()]);
|
||||
myInputVariables = myVariableData.getInputVariables().toArray(new VariableData[myVariableData.getInputVariables().size()]);
|
||||
myFoldParameters.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
myVariableData.setFoldingAvailable(myFoldParameters.isSelected());
|
||||
myInputVariables =
|
||||
myVariableData.getInputVariables().toArray(new ParameterTablePanel.VariableData[myVariableData.getInputVariables().size()]);
|
||||
myVariableData.getInputVariables().toArray(new VariableData[myVariableData.getInputVariables().size()]);
|
||||
updateVarargsEnabled();
|
||||
createParametersPanel();
|
||||
updateSignature();
|
||||
@@ -258,7 +259,7 @@ public class ExtractMethodDialog extends AbstractExtractDialog {
|
||||
myFoldParameters.setBorder(emptyBorder);
|
||||
|
||||
boolean canBeVarargs = false;
|
||||
for (ParameterTablePanel.VariableData data : myInputVariables) {
|
||||
for (VariableData data : myInputVariables) {
|
||||
canBeVarargs |= data.type instanceof PsiArrayType;
|
||||
}
|
||||
if (myVariableData.isFoldable()) {
|
||||
@@ -453,10 +454,10 @@ public class ExtractMethodDialog extends AbstractExtractDialog {
|
||||
|
||||
final String INDENT = StringUtil.repeatSymbol(' ', buffer.length());
|
||||
|
||||
final ParameterTablePanel.VariableData[] datas = myInputVariables;
|
||||
final VariableData[] datas = myInputVariables;
|
||||
int count = 0;
|
||||
for (int i = 0; i < datas.length;i++) {
|
||||
ParameterTablePanel.VariableData data = datas[i];
|
||||
VariableData data = datas[i];
|
||||
if (data.passAsParameter) {
|
||||
//String typeAndModifiers = PsiFormatUtil.formatVariable(data.variable,
|
||||
// PsiFormatUtil.SHOW_MODIFIERS | PsiFormatUtil.SHOW_TYPE);
|
||||
@@ -500,7 +501,7 @@ public class ExtractMethodDialog extends AbstractExtractDialog {
|
||||
PsiElementFactory factory = JavaPsiFacade.getInstance(myProject).getElementFactory();
|
||||
prototype = factory.createMethod(myNameField.getText().trim(), myReturnType);
|
||||
if (myTypeParameterList != null) prototype.getTypeParameterList().replace(myTypeParameterList);
|
||||
for (ParameterTablePanel.VariableData data : myInputVariables) {
|
||||
for (VariableData data : myInputVariables) {
|
||||
if (data.passAsParameter) {
|
||||
prototype.getParameterList().add(factory.createParameter(data.name, data.type));
|
||||
}
|
||||
|
||||
+14
-16
@@ -67,10 +67,7 @@ import com.intellij.refactoring.introduceField.ElementToWorkOn;
|
||||
import com.intellij.refactoring.introduceVariable.IntroduceVariableBase;
|
||||
import com.intellij.refactoring.util.*;
|
||||
import com.intellij.refactoring.util.classMembers.ElementNeedsThis;
|
||||
import com.intellij.refactoring.util.duplicates.DuplicatesFinder;
|
||||
import com.intellij.refactoring.util.duplicates.Match;
|
||||
import com.intellij.refactoring.util.duplicates.MatchProvider;
|
||||
import com.intellij.refactoring.util.duplicates.VariableReturnValue;
|
||||
import com.intellij.refactoring.util.duplicates.*;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.Processor;
|
||||
@@ -105,7 +102,7 @@ public class ExtractMethodProcessor implements MatchProvider {
|
||||
protected String myMethodName; // name for extracted method
|
||||
protected PsiType myReturnType; // return type for extracted method
|
||||
protected PsiTypeParameterList myTypeParameterList; //type parameter list of extracted method
|
||||
private ParameterTablePanel.VariableData[] myVariableDatum; // parameter data for extracted method
|
||||
private VariableData[] myVariableDatum; // parameter data for extracted method
|
||||
protected PsiClassType[] myThrownExceptions; // exception to declare as thrown by extracted method
|
||||
protected boolean myStatic; // whether to declare extracted method static
|
||||
|
||||
@@ -547,7 +544,7 @@ public class ExtractMethodProcessor implements MatchProvider {
|
||||
public void testPrepare() {
|
||||
myInputVariables.setFoldingAvailable(myInputVariables.isFoldingSelectedByDefault());
|
||||
myMethodName = myInitialMethodName;
|
||||
myVariableDatum = new ParameterTablePanel.VariableData[myInputVariables.getInputVariables().size()];
|
||||
myVariableDatum = new VariableData[myInputVariables.getInputVariables().size()];
|
||||
for (int i = 0; i < myInputVariables.getInputVariables().size(); i++) {
|
||||
myVariableDatum[i] = myInputVariables.getInputVariables().get(i);
|
||||
}
|
||||
@@ -806,7 +803,7 @@ public class ExtractMethodProcessor implements MatchProvider {
|
||||
|
||||
adjustFinalParameters(newMethod);
|
||||
int i = 0;
|
||||
for (ParameterTablePanel.VariableData data : myVariableDatum) {
|
||||
for (VariableData data : myVariableDatum) {
|
||||
if (!data.passAsParameter) continue;
|
||||
final PsiVariable variable = data.variable;
|
||||
final PsiParameter psiParameter = newMethod.getParameterList().getParameters()[i++];
|
||||
@@ -927,20 +924,20 @@ public class ExtractMethodProcessor implements MatchProvider {
|
||||
}
|
||||
|
||||
public PsiElement processMatch(Match match) throws IncorrectOperationException {
|
||||
match.changeSignature(myExtractedMethod);
|
||||
MatchUtil.changeSignature(match, myExtractedMethod);
|
||||
if (RefactoringUtil.isInStaticContext(match.getMatchStart(), myExtractedMethod.getContainingClass())) {
|
||||
PsiUtil.setModifierProperty(myExtractedMethod, PsiModifier.STATIC, true);
|
||||
}
|
||||
final PsiMethodCallExpression methodCallExpression = generateMethodCall(match.getInstanceExpression(), false);
|
||||
|
||||
ArrayList<ParameterTablePanel.VariableData> datas = new ArrayList<ParameterTablePanel.VariableData>();
|
||||
for (final ParameterTablePanel.VariableData variableData : myVariableDatum) {
|
||||
ArrayList<VariableData> datas = new ArrayList<VariableData>();
|
||||
for (final VariableData variableData : myVariableDatum) {
|
||||
if (variableData.passAsParameter) {
|
||||
datas.add(variableData);
|
||||
}
|
||||
}
|
||||
final PsiElementFactory elementFactory = JavaPsiFacade.getElementFactory(myProject);
|
||||
for (ParameterTablePanel.VariableData data : datas) {
|
||||
for (VariableData data : datas) {
|
||||
final List<PsiElement> parameterValue = match.getParameterValues(data.variable);
|
||||
if (parameterValue != null) {
|
||||
for (PsiElement val : parameterValue) {
|
||||
@@ -984,7 +981,7 @@ public class ExtractMethodProcessor implements MatchProvider {
|
||||
}
|
||||
|
||||
private void renameInputVariables() throws IncorrectOperationException {
|
||||
for (ParameterTablePanel.VariableData data : myVariableDatum) {
|
||||
for (VariableData data : myVariableDatum) {
|
||||
PsiVariable variable = data.variable;
|
||||
if (!data.name.equals(variable.getName())) {
|
||||
for (PsiElement element : myElements) {
|
||||
@@ -1016,7 +1013,7 @@ public class ExtractMethodProcessor implements MatchProvider {
|
||||
|
||||
boolean isFinal = CodeStyleSettingsManager.getSettings(myProject).GENERATE_FINAL_PARAMETERS;
|
||||
PsiParameterList list = newMethod.getParameterList();
|
||||
for (ParameterTablePanel.VariableData data : myVariableDatum) {
|
||||
for (VariableData data : myVariableDatum) {
|
||||
if (data.passAsParameter) {
|
||||
PsiParameter parm = myElementFactory.createParameter(data.name, data.type);
|
||||
if (isFinal) {
|
||||
@@ -1105,7 +1102,7 @@ public class ExtractMethodProcessor implements MatchProvider {
|
||||
buffer.append("(");
|
||||
if (generateArgs) {
|
||||
int count = 0;
|
||||
for (ParameterTablePanel.VariableData data : myVariableDatum) {
|
||||
for (VariableData data : myVariableDatum) {
|
||||
if (data.passAsParameter) {
|
||||
if (count > 0) {
|
||||
buffer.append(",");
|
||||
@@ -1253,7 +1250,7 @@ public class ExtractMethodProcessor implements MatchProvider {
|
||||
}
|
||||
|
||||
private String getNewVariableName(PsiVariable variable) {
|
||||
for (ParameterTablePanel.VariableData data : myVariableDatum) {
|
||||
for (VariableData data : myVariableDatum) {
|
||||
if (data.variable.equals(variable)) {
|
||||
return data.name;
|
||||
}
|
||||
@@ -1374,7 +1371,8 @@ public class ExtractMethodProcessor implements MatchProvider {
|
||||
@Nullable
|
||||
public String getConfirmDuplicatePrompt(Match match) {
|
||||
final boolean needToBeStatic = RefactoringUtil.isInStaticContext(match.getMatchStart(), myExtractedMethod.getContainingClass());
|
||||
final String changedSignature = match.getChangedSignature(myExtractedMethod, needToBeStatic, VisibilityUtil.getVisibilityStringToDisplay(myExtractedMethod));
|
||||
final String changedSignature = MatchUtil
|
||||
.getChangedSignature(match, myExtractedMethod, needToBeStatic, VisibilityUtil.getVisibilityStringToDisplay(myExtractedMethod));
|
||||
if (changedSignature != null) {
|
||||
return RefactoringBundle.message("replace.this.code.fragment.and.change.signature", changedSignature);
|
||||
}
|
||||
|
||||
+11
-10
@@ -27,6 +27,7 @@ import com.intellij.refactoring.extractMethod.AbstractExtractDialog;
|
||||
import com.intellij.refactoring.extractMethod.InputVariables;
|
||||
import com.intellij.refactoring.ui.ConflictsDialog;
|
||||
import com.intellij.refactoring.util.ParameterTablePanel;
|
||||
import com.intellij.refactoring.util.VariableData;
|
||||
import com.intellij.ui.EditorTextField;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.VisibilityUtil;
|
||||
@@ -78,7 +79,7 @@ public class ExtractMethodObjectDialog extends AbstractExtractDialog {
|
||||
private JPanel myAnonymousClassPanel;
|
||||
private JCheckBox myFoldCb;
|
||||
private ButtonGroup myVisibilityGroup;
|
||||
private ParameterTablePanel.VariableData[] myInputVariables;
|
||||
private VariableData[] myInputVariables;
|
||||
|
||||
|
||||
public ExtractMethodObjectDialog(Project project, PsiClass targetClass, final InputVariables inputVariables, PsiType returnType,
|
||||
@@ -96,7 +97,7 @@ public class ExtractMethodObjectDialog extends AbstractExtractDialog {
|
||||
myMultipleExitPoints = multipleExitPoints;
|
||||
|
||||
boolean canBeVarargs = false;
|
||||
for (ParameterTablePanel.VariableData data : inputVariables.getInputVariables()) {
|
||||
for (VariableData data : inputVariables.getInputVariables()) {
|
||||
canBeVarargs |= data.type instanceof PsiArrayType;
|
||||
}
|
||||
canBeVarargs |= inputVariables.isFoldable() && inputVariables.isFoldingSelectedByDefault();
|
||||
@@ -136,7 +137,7 @@ public class ExtractMethodObjectDialog extends AbstractExtractDialog {
|
||||
return myCreateInnerClassRb.isSelected() ? myInnerClassName.getText() : myMethodName.getText();
|
||||
}
|
||||
|
||||
public ParameterTablePanel.VariableData[] getChosenParameters() {
|
||||
public VariableData[] getChosenParameters() {
|
||||
return myInputVariables;
|
||||
}
|
||||
|
||||
@@ -167,7 +168,7 @@ public class ExtractMethodObjectDialog extends AbstractExtractDialog {
|
||||
|
||||
final JCheckBox makeVarargsCb = myCreateInnerClassRb.isSelected() ? myCbMakeVarargs : myCbMakeVarargsAnonymous;
|
||||
if (makeVarargsCb != null && makeVarargsCb.isSelected()) {
|
||||
final ParameterTablePanel.VariableData data = myInputVariables[myInputVariables.length - 1];
|
||||
final VariableData data = myInputVariables[myInputVariables.length - 1];
|
||||
if (data.type instanceof PsiArrayType) {
|
||||
data.type = new PsiEllipsisType(((PsiArrayType)data.type).getComponentType());
|
||||
}
|
||||
@@ -212,7 +213,7 @@ public class ExtractMethodObjectDialog extends AbstractExtractDialog {
|
||||
protected JComponent createCenterPanel() {
|
||||
mySignatureArea.setEditable(false);
|
||||
myCreateInnerClassRb.setSelected(true);
|
||||
|
||||
|
||||
final ActionListener enableDisableListener = new ActionListener() {
|
||||
public void actionPerformed(final ActionEvent e) {
|
||||
enable(myCreateInnerClassRb.isSelected());
|
||||
@@ -225,11 +226,11 @@ public class ExtractMethodObjectDialog extends AbstractExtractDialog {
|
||||
myFoldCb.setSelected(myVariableData.isFoldingSelectedByDefault());
|
||||
myFoldCb.setVisible(myVariableData.isFoldable());
|
||||
myVariableData.setFoldingAvailable(myFoldCb.isSelected());
|
||||
myInputVariables = myVariableData.getInputVariables().toArray(new ParameterTablePanel.VariableData[myVariableData.getInputVariables().size()]);
|
||||
myInputVariables = myVariableData.getInputVariables().toArray(new VariableData[myVariableData.getInputVariables().size()]);
|
||||
myFoldCb.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
myVariableData.setFoldingAvailable(myFoldCb.isSelected());
|
||||
myInputVariables = myVariableData.getInputVariables().toArray(new ParameterTablePanel.VariableData[myVariableData.getInputVariables().size()]);
|
||||
myInputVariables = myVariableData.getInputVariables().toArray(new VariableData[myVariableData.getInputVariables().size()]);
|
||||
myParametersTableContainer.removeAll();
|
||||
myParametersTableContainer.add(createParametersPanel(), BorderLayout.CENTER);
|
||||
updateSignature();
|
||||
@@ -359,8 +360,8 @@ public class ExtractMethodObjectDialog extends AbstractExtractDialog {
|
||||
buffer.append("\n}.");
|
||||
buffer.append(myMethodName.getText());
|
||||
buffer.append("(");
|
||||
buffer.append(StringUtil.join(myInputVariables, new Function<ParameterTablePanel.VariableData, String>() {
|
||||
public String fun(final ParameterTablePanel.VariableData variableData) {
|
||||
buffer.append(StringUtil.join(myInputVariables, new Function<VariableData, String>() {
|
||||
public String fun(final VariableData variableData) {
|
||||
return variableData.name;
|
||||
}
|
||||
}, ", "));
|
||||
@@ -375,7 +376,7 @@ public class ExtractMethodObjectDialog extends AbstractExtractDialog {
|
||||
int count = 0;
|
||||
final String indent = " ";
|
||||
for (int i = 0; i < myInputVariables.length; i++) {
|
||||
ParameterTablePanel.VariableData data = myInputVariables[i];
|
||||
VariableData data = myInputVariables[i];
|
||||
if (data.passAsParameter) {
|
||||
//String typeAndModifiers = PsiFormatUtil.formatVariable(data.variable,
|
||||
// PsiFormatUtil.SHOW_MODIFIERS | PsiFormatUtil.SHOW_TYPE);
|
||||
|
||||
+8
-7
@@ -32,6 +32,7 @@ import com.intellij.refactoring.move.moveClassesOrPackages.DestinationFolderComb
|
||||
import com.intellij.refactoring.ui.PackageNameReferenceEditorCombo;
|
||||
import com.intellij.refactoring.ui.RefactoringDialog;
|
||||
import com.intellij.refactoring.util.ParameterTablePanel;
|
||||
import com.intellij.refactoring.util.VariableData;
|
||||
import com.intellij.ui.ComboboxWithBrowseButton;
|
||||
import com.intellij.ui.DocumentAdapter;
|
||||
import com.intellij.ui.RecentsManager;
|
||||
@@ -53,7 +54,7 @@ import java.util.List;
|
||||
public class IntroduceParameterObjectDialog extends RefactoringDialog {
|
||||
|
||||
private final PsiMethod sourceMethod;
|
||||
private final ParameterTablePanel.VariableData[] parameterInfo;
|
||||
private final VariableData[] parameterInfo;
|
||||
private JTextField sourceMethodTextField;
|
||||
|
||||
private JRadioButton useExistingClassButton;
|
||||
@@ -94,9 +95,9 @@ public class IntroduceParameterObjectDialog extends RefactoringDialog {
|
||||
myInnerClassNameTextField.getDocument().addDocumentListener(docListener);
|
||||
final PsiParameterList parameterList = sourceMethod.getParameterList();
|
||||
final PsiParameter[] parameters = parameterList.getParameters();
|
||||
parameterInfo = new ParameterTablePanel.VariableData[parameters.length];
|
||||
parameterInfo = new VariableData[parameters.length];
|
||||
for (int i = 0; i < parameterInfo.length; i++) {
|
||||
parameterInfo[i] = new ParameterTablePanel.VariableData(parameters[i]);
|
||||
parameterInfo[i] = new VariableData(parameters[i]);
|
||||
parameterInfo[i].name = parameters[i].getName();
|
||||
parameterInfo[i].passAsParameter = true;
|
||||
}
|
||||
@@ -164,8 +165,8 @@ public class IntroduceParameterObjectDialog extends RefactoringDialog {
|
||||
packageName = getPackageName();
|
||||
className = getClassName();
|
||||
}
|
||||
List<ParameterTablePanel.VariableData> parameters = new ArrayList<ParameterTablePanel.VariableData>();
|
||||
for (ParameterTablePanel.VariableData data : parameterInfo) {
|
||||
List<VariableData> parameters = new ArrayList<VariableData>();
|
||||
for (VariableData data : parameterInfo) {
|
||||
if (data.passAsParameter) {
|
||||
parameters.add(data);
|
||||
}
|
||||
@@ -175,7 +176,7 @@ public class IntroduceParameterObjectDialog extends RefactoringDialog {
|
||||
final MoveDestination moveDestination = ((DestinationFolderComboBox)myDestinationCb)
|
||||
.selectDirectory(new PackageWrapper(PsiManager.getInstance(myProject), packageName), false);
|
||||
invokeRefactoring(new IntroduceParameterObjectProcessor(className, packageName, moveDestination, sourceMethod,
|
||||
parameters.toArray(new ParameterTablePanel.VariableData[parameters.size()]),
|
||||
parameters.toArray(new VariableData[parameters.size()]),
|
||||
keepMethod, useExistingClass,
|
||||
createInnerClass, newVisibility, myGenerateAccessorsCheckBox.isSelected()));
|
||||
}
|
||||
@@ -238,7 +239,7 @@ public class IntroduceParameterObjectDialog extends RefactoringDialog {
|
||||
@NotNull
|
||||
public List<PsiParameter> getParametersToExtract() {
|
||||
final List<PsiParameter> out = new ArrayList<PsiParameter>();
|
||||
for (ParameterTablePanel.VariableData info : parameterInfo) {
|
||||
for (VariableData info : parameterInfo) {
|
||||
if (info.passAsParameter) {
|
||||
out.add((PsiParameter)info.variable);
|
||||
}
|
||||
|
||||
+8
-11
@@ -37,10 +37,7 @@ import com.intellij.psi.util.TypeConversionUtil;
|
||||
import com.intellij.refactoring.MoveDestination;
|
||||
import com.intellij.refactoring.RefactorJBundle;
|
||||
import com.intellij.refactoring.introduceparameterobject.usageInfo.*;
|
||||
import com.intellij.refactoring.util.FixableUsageInfo;
|
||||
import com.intellij.refactoring.util.FixableUsagesRefactoringProcessor;
|
||||
import com.intellij.refactoring.util.ParameterTablePanel;
|
||||
import com.intellij.refactoring.util.RefactoringUtil;
|
||||
import com.intellij.refactoring.util.*;
|
||||
import com.intellij.usageView.UsageInfo;
|
||||
import com.intellij.usageView.UsageViewDescriptor;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
@@ -76,7 +73,7 @@ public class IntroduceParameterObjectProcessor extends FixableUsagesRefactoringP
|
||||
String packageName,
|
||||
MoveDestination moveDestination,
|
||||
PsiMethod method,
|
||||
ParameterTablePanel.VariableData[] parameters, boolean keepMethodAsDelegate, final boolean useExistingClass,
|
||||
VariableData[] parameters, boolean keepMethodAsDelegate, final boolean useExistingClass,
|
||||
final boolean createInnerClass,
|
||||
String newVisibility,
|
||||
boolean generateAccessors) {
|
||||
@@ -91,14 +88,14 @@ public class IntroduceParameterObjectProcessor extends FixableUsagesRefactoringP
|
||||
myNewVisibility = newVisibility;
|
||||
myGenerateAccessors = generateAccessors;
|
||||
this.parameters = new ArrayList<ParameterChunk>();
|
||||
for (ParameterTablePanel.VariableData parameter : parameters) {
|
||||
for (VariableData parameter : parameters) {
|
||||
this.parameters.add(new ParameterChunk(parameter));
|
||||
}
|
||||
final PsiParameterList parameterList = method.getParameterList();
|
||||
final PsiParameter[] methodParams = parameterList.getParameters();
|
||||
paramsToMerge = new int[parameters.length];
|
||||
for (int p = 0; p < parameters.length; p++) {
|
||||
ParameterTablePanel.VariableData parameter = parameters[p];
|
||||
VariableData parameter = parameters[p];
|
||||
for (int i = 0; i < methodParams.length; i++) {
|
||||
final PsiParameter methodParam = methodParams[i];
|
||||
if (parameter.variable.equals(methodParam)) {
|
||||
@@ -118,7 +115,7 @@ public class IntroduceParameterObjectProcessor extends FixableUsagesRefactoringP
|
||||
return super.visitClassType(classType);
|
||||
}
|
||||
};
|
||||
for (ParameterTablePanel.VariableData parameter : parameters) {
|
||||
for (VariableData parameter : parameters) {
|
||||
parameter.type.accept(typeParametersVisitor);
|
||||
}
|
||||
typeParams = new ArrayList<PsiTypeParameter>(typeParamSet);
|
||||
@@ -265,7 +262,7 @@ public class IntroduceParameterObjectProcessor extends FixableUsagesRefactoringP
|
||||
beanClassBuilder.setClassName(className);
|
||||
beanClassBuilder.setPackageName(packageName);
|
||||
for (ParameterChunk parameterChunk : parameters) {
|
||||
final ParameterTablePanel.VariableData parameter = parameterChunk.parameter;
|
||||
final VariableData parameter = parameterChunk.parameter;
|
||||
final boolean setterRequired = paramsNeedingSetters.contains(parameter.variable);
|
||||
beanClassBuilder.addField((PsiParameter)parameter.variable, parameter.name, parameter.type, setterRequired);
|
||||
}
|
||||
@@ -438,12 +435,12 @@ public class IntroduceParameterObjectProcessor extends FixableUsagesRefactoringP
|
||||
}
|
||||
|
||||
public static class ParameterChunk {
|
||||
private final ParameterTablePanel.VariableData parameter;
|
||||
private final VariableData parameter;
|
||||
private PsiField field;
|
||||
private String getter;
|
||||
private String setter;
|
||||
|
||||
public ParameterChunk(ParameterTablePanel.VariableData parameter) {
|
||||
public ParameterChunk(VariableData parameter) {
|
||||
this.parameter = parameter;
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -19,7 +19,7 @@
|
||||
* User: dsl
|
||||
* Date: 04.07.2002
|
||||
* Time: 13:14:49
|
||||
* To change template for new class use
|
||||
* To change template for new class use
|
||||
* Code Style | Class Templates options (Tools | IDE Options).
|
||||
*/
|
||||
package com.intellij.refactoring.makeStatic;
|
||||
@@ -30,7 +30,7 @@ import com.intellij.psi.PsiMethod;
|
||||
import com.intellij.psi.PsiTypeParameterListOwner;
|
||||
import com.intellij.refactoring.RefactoringBundle;
|
||||
import com.intellij.refactoring.ui.RefactoringDialog;
|
||||
import com.intellij.refactoring.util.ParameterTablePanel;
|
||||
import com.intellij.refactoring.util.VariableData;
|
||||
import com.intellij.usageView.UsageViewUtil;
|
||||
|
||||
import javax.swing.*;
|
||||
@@ -68,7 +68,7 @@ public abstract class AbstractMakeStaticDialog extends RefactoringDialog {
|
||||
|
||||
public abstract String getClassParameterName();
|
||||
|
||||
public abstract ParameterTablePanel.VariableData[] getVariableData();
|
||||
public abstract VariableData[] getVariableData();
|
||||
|
||||
public abstract boolean isReplaceUsages();
|
||||
|
||||
|
||||
+5
-4
@@ -34,6 +34,7 @@ import com.intellij.psi.*;
|
||||
import com.intellij.refactoring.HelpID;
|
||||
import com.intellij.refactoring.RefactoringBundle;
|
||||
import com.intellij.refactoring.util.ParameterTablePanel;
|
||||
import com.intellij.refactoring.util.VariableData;
|
||||
import com.intellij.ui.DocumentAdapter;
|
||||
import com.intellij.usageView.UsageViewUtil;
|
||||
|
||||
@@ -52,7 +53,7 @@ public class MakeParameterizedStaticDialog extends AbstractMakeStaticDialog {
|
||||
private final JCheckBox myMakeFieldParameters = new JCheckBox();
|
||||
|
||||
private ParameterTablePanel myParameterPanel;
|
||||
private ParameterTablePanel.VariableData[] myVariableData;
|
||||
private VariableData[] myVariableData;
|
||||
private final boolean myAnyNonFieldMembersUsed;
|
||||
|
||||
|
||||
@@ -71,10 +72,10 @@ public class MakeParameterizedStaticDialog extends AbstractMakeStaticDialog {
|
||||
}
|
||||
|
||||
private boolean buildVariableData(InternalUsageInfo[] internalUsages) {
|
||||
ArrayList<ParameterTablePanel.VariableData> variableDatum = new ArrayList<ParameterTablePanel.VariableData>();
|
||||
ArrayList<VariableData> variableDatum = new ArrayList<VariableData>();
|
||||
boolean nonFieldUsages = MakeStaticUtil.collectVariableData(myMember, internalUsages, variableDatum);
|
||||
|
||||
myVariableData = variableDatum.toArray(new ParameterTablePanel.VariableData[0]);
|
||||
myVariableData = variableDatum.toArray(new VariableData[0]);
|
||||
return nonFieldUsages;
|
||||
}
|
||||
|
||||
@@ -109,7 +110,7 @@ public class MakeParameterizedStaticDialog extends AbstractMakeStaticDialog {
|
||||
*
|
||||
* @return null if field parameters are not selected
|
||||
*/
|
||||
public ParameterTablePanel.VariableData[] getVariableData() {
|
||||
public VariableData[] getVariableData() {
|
||||
if(myMakeFieldParameters != null && myMakeFieldParameters.isSelected()) {
|
||||
return myVariableData;
|
||||
}
|
||||
|
||||
@@ -29,8 +29,8 @@ import com.intellij.psi.codeStyle.JavaCodeStyleManager;
|
||||
import com.intellij.psi.codeStyle.VariableKind;
|
||||
import com.intellij.psi.util.InheritanceUtil;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.refactoring.util.ParameterTablePanel;
|
||||
import com.intellij.refactoring.util.RefactoringUtil;
|
||||
import com.intellij.refactoring.util.VariableData;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
@@ -132,13 +132,13 @@ public class MakeStaticUtil {
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean buildVariableData(PsiTypeParameterListOwner member, ArrayList<ParameterTablePanel.VariableData> result) {
|
||||
public static boolean buildVariableData(PsiTypeParameterListOwner member, ArrayList<VariableData> result) {
|
||||
final InternalUsageInfo[] classRefsInMethod = findClassRefsInMember(member, false);
|
||||
return collectVariableData(member, classRefsInMethod, result);
|
||||
}
|
||||
|
||||
public static boolean collectVariableData(PsiMember member, InternalUsageInfo[] internalUsages,
|
||||
ArrayList<ParameterTablePanel.VariableData> variableDatum) {
|
||||
ArrayList<VariableData> variableDatum) {
|
||||
HashSet<PsiField> reported = new HashSet<PsiField>();
|
||||
HashSet<PsiField> accessedForWriting = new HashSet<PsiField>();
|
||||
boolean needClassParameter = false;
|
||||
@@ -165,7 +165,7 @@ public class MakeStaticUtil {
|
||||
});
|
||||
for (final PsiField field : psiFields) {
|
||||
if (accessedForWriting.contains(field)) continue;
|
||||
ParameterTablePanel.VariableData data = new ParameterTablePanel.VariableData(field);
|
||||
VariableData data = new VariableData(field);
|
||||
JavaCodeStyleManager codeStyleManager = JavaCodeStyleManager.getInstance(member.getProject());
|
||||
String name = field.getName();
|
||||
name = codeStyleManager.variableNameToPropertyName(name, VariableKind.FIELD);
|
||||
|
||||
@@ -19,14 +19,14 @@
|
||||
* User: dsl
|
||||
* Date: 01.07.2002
|
||||
* Time: 15:48:33
|
||||
* To change template for new class use
|
||||
* To change template for new class use
|
||||
* Code Style | Class Templates options (Tools | IDE Options).
|
||||
*/
|
||||
package com.intellij.refactoring.makeStatic;
|
||||
|
||||
import com.intellij.psi.PsiField;
|
||||
import com.intellij.psi.PsiType;
|
||||
import com.intellij.refactoring.util.ParameterTablePanel;
|
||||
import com.intellij.refactoring.util.VariableData;
|
||||
import com.intellij.util.containers.HashMap;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -56,7 +56,7 @@ public final class Settings {
|
||||
|
||||
|
||||
public Settings(boolean replaceUsages, String classParameterName,
|
||||
ParameterTablePanel.VariableData[] variableDatum) {
|
||||
VariableData[] variableDatum) {
|
||||
myReplaceUsages = replaceUsages;
|
||||
myMakeClassParameter = classParameterName != null;
|
||||
myClassParameterName = classParameterName;
|
||||
@@ -64,7 +64,7 @@ public final class Settings {
|
||||
myFieldToNameList = new ArrayList<FieldParameter>();
|
||||
if(myMakeFieldParameters) {
|
||||
myFieldToNameMapping = new com.intellij.util.containers.HashMap<PsiField, String>();
|
||||
for (ParameterTablePanel.VariableData data : variableDatum) {
|
||||
for (VariableData data : variableDatum) {
|
||||
if (data.passAsParameter) {
|
||||
myFieldToNameMapping.put((PsiField)data.variable, data.name);
|
||||
myFieldToNameList.add(new FieldParameter((PsiField)data.variable, data.name, data.type));
|
||||
@@ -76,7 +76,7 @@ public final class Settings {
|
||||
}
|
||||
}
|
||||
|
||||
public Settings(boolean replaceUsages, String classParameterName,
|
||||
public Settings(boolean replaceUsages, String classParameterName,
|
||||
PsiField[] fields, String[] names) {
|
||||
myReplaceUsages = replaceUsages;
|
||||
myMakeClassParameter = classParameterName != null;
|
||||
@@ -96,7 +96,7 @@ public final class Settings {
|
||||
myFieldToNameMapping = null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public boolean isReplaceUsages() {
|
||||
return myReplaceUsages;
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
* User: dsl
|
||||
* Date: 04.07.2002
|
||||
* Time: 13:54:39
|
||||
* To change template for new class use
|
||||
* To change template for new class use
|
||||
* Code Style | Class Templates options (Tools | IDE Options).
|
||||
*/
|
||||
package com.intellij.refactoring.makeStatic;
|
||||
@@ -30,8 +30,7 @@ import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.PsiTypeParameterListOwner;
|
||||
import com.intellij.refactoring.HelpID;
|
||||
import com.intellij.refactoring.RefactoringBundle;
|
||||
import com.intellij.refactoring.util.ParameterTablePanel;
|
||||
import com.intellij.ui.IdeBorderFactory;
|
||||
import com.intellij.refactoring.util.VariableData;
|
||||
import com.intellij.usageView.UsageViewUtil;
|
||||
|
||||
import javax.swing.*;
|
||||
@@ -59,7 +58,7 @@ public class SimpleMakeStaticDialog extends AbstractMakeStaticDialog {
|
||||
return null;
|
||||
}
|
||||
|
||||
public ParameterTablePanel.VariableData[] getVariableData() {
|
||||
public VariableData[] getVariableData() {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -59,23 +59,6 @@ public abstract class ParameterTablePanel extends JPanel {
|
||||
return myVariableData;
|
||||
}
|
||||
|
||||
public static class VariableData {
|
||||
public final PsiVariable variable;
|
||||
public PsiType type;
|
||||
public String name;
|
||||
public boolean passAsParameter;
|
||||
|
||||
public VariableData(PsiVariable var) {
|
||||
variable = var;
|
||||
type = var.getType();
|
||||
}
|
||||
|
||||
public VariableData(PsiVariable var, PsiType type) {
|
||||
variable = var;
|
||||
this.type = SmartTypePointerManager.getInstance(var.getProject()).createSmartTypePointer(type).getType();
|
||||
}
|
||||
}
|
||||
|
||||
protected abstract void updateSignature();
|
||||
|
||||
protected abstract void doEnterAction();
|
||||
|
||||
@@ -0,0 +1,116 @@
|
||||
/*
|
||||
* Copyright 2000-2013 JetBrains s.r.o.
|
||||
*
|
||||
* 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.refactoring.util.duplicates;
|
||||
|
||||
import com.intellij.codeInsight.PsiEquivalenceUtil;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.PsiFormatUtil;
|
||||
import com.intellij.refactoring.changeSignature.ChangeSignatureProcessor;
|
||||
import com.intellij.refactoring.changeSignature.ParameterInfoImpl;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class MatchUtil {
|
||||
@Nullable
|
||||
public static String getChangedSignature(Match match, final PsiMethod method, final boolean shouldBeStatic, String visibility) {
|
||||
final PsiType returnType = match.getChangedReturnType(method);
|
||||
if (!match.myChangedParams.isEmpty() || returnType != null) {
|
||||
@NonNls StringBuilder buffer = new StringBuilder();
|
||||
buffer.append(visibility);
|
||||
if (buffer.length() > 0) {
|
||||
buffer.append(" ");
|
||||
}
|
||||
if (shouldBeStatic) {
|
||||
buffer.append("static ");
|
||||
}
|
||||
final PsiTypeParameterList typeParameterList = method.getTypeParameterList();
|
||||
if (typeParameterList != null) {
|
||||
buffer.append(typeParameterList.getText());
|
||||
buffer.append(" ");
|
||||
}
|
||||
|
||||
buffer.append(PsiFormatUtil.formatType(returnType != null ? returnType : method.getReturnType(), 0, PsiSubstitutor.EMPTY));
|
||||
buffer.append(" ");
|
||||
buffer.append(method.getName());
|
||||
buffer.append("(");
|
||||
int count = 0;
|
||||
final String INDENT = " ";
|
||||
final List<ParameterInfoImpl> params = patchParams(match.myChangedParams, method);
|
||||
for (ParameterInfoImpl param : params) {
|
||||
String typeText = param.getTypeText();
|
||||
if (count > 0) {
|
||||
buffer.append(",");
|
||||
}
|
||||
buffer.append("\n");
|
||||
buffer.append(INDENT);
|
||||
buffer.append(typeText);
|
||||
buffer.append(" ");
|
||||
buffer.append(param.getName());
|
||||
count++;
|
||||
}
|
||||
|
||||
if (count > 0) {
|
||||
buffer.append("\n");
|
||||
}
|
||||
buffer.append(")");
|
||||
final PsiClassType[] exceptions = method.getThrowsList().getReferencedTypes();
|
||||
if (exceptions.length > 0) {
|
||||
buffer.append("\n");
|
||||
buffer.append("throws\n");
|
||||
for (PsiType exception : exceptions) {
|
||||
buffer.append(INDENT);
|
||||
buffer.append(PsiFormatUtil.formatType(exception, 0, PsiSubstitutor.EMPTY));
|
||||
buffer.append("\n");
|
||||
}
|
||||
}
|
||||
return buffer.toString();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static void changeSignature(@NotNull Match match, @NotNull PsiMethod psiMethod) {
|
||||
final PsiType expressionType = match.getChangedReturnType(psiMethod);
|
||||
if (expressionType == null && match.myChangedParams.isEmpty()) return;
|
||||
final List<ParameterInfoImpl> newParameters = patchParams(match.myChangedParams, psiMethod);
|
||||
final ChangeSignatureProcessor csp = new ChangeSignatureProcessor(psiMethod.getProject(), psiMethod, false, null, psiMethod.getName(),
|
||||
expressionType != null ? expressionType : psiMethod.getReturnType(),
|
||||
newParameters.toArray(new ParameterInfoImpl[newParameters.size()]));
|
||||
|
||||
csp.run();
|
||||
}
|
||||
|
||||
public static List<ParameterInfoImpl> patchParams(Map<PsiVariable, PsiType> changedParams, final PsiMethod psiMethod) {
|
||||
final ArrayList<ParameterInfoImpl> newParameters = new ArrayList<ParameterInfoImpl>();
|
||||
final PsiParameter[] oldParameters = psiMethod.getParameterList().getParameters();
|
||||
for (int i = 0; i < oldParameters.length; i++) {
|
||||
final PsiParameter oldParameter = oldParameters[i];
|
||||
PsiType type = oldParameter.getType();
|
||||
for (PsiVariable variable : changedParams.keySet()) {
|
||||
if (PsiEquivalenceUtil.areElementsEquivalent(variable, oldParameter)) {
|
||||
type = changedParams.get(variable);
|
||||
break;
|
||||
}
|
||||
}
|
||||
newParameters.add(new ParameterInfoImpl(i, oldParameter.getName(), type));
|
||||
}
|
||||
return newParameters;
|
||||
}
|
||||
}
|
||||
+3
-2
@@ -48,7 +48,7 @@ class MethodDuplicatesMatchProvider implements MatchProvider {
|
||||
|
||||
@Override
|
||||
public PsiElement processMatch(Match match) throws IncorrectOperationException {
|
||||
match.changeSignature(myMethod);
|
||||
MatchUtil.changeSignature(match, myMethod);
|
||||
final PsiClass containingClass = myMethod.getContainingClass();
|
||||
if (isEssentialStaticContextAbsent(match)) {
|
||||
PsiUtil.setModifierProperty(myMethod, PsiModifier.STATIC, true);
|
||||
@@ -159,7 +159,8 @@ class MethodDuplicatesMatchProvider implements MatchProvider {
|
||||
final PsiElement matchStart = match.getMatchStart();
|
||||
String visibility = VisibilityUtil.getPossibleVisibility(myMethod, matchStart);
|
||||
final boolean shouldBeStatic = isEssentialStaticContextAbsent(match);
|
||||
final String signature = match.getChangedSignature(myMethod, myMethod.hasModifierProperty(PsiModifier.STATIC) || shouldBeStatic, visibility);
|
||||
final String signature = MatchUtil
|
||||
.getChangedSignature(match, myMethod, myMethod.hasModifierProperty(PsiModifier.STATIC) || shouldBeStatic, visibility);
|
||||
if (signature != null) {
|
||||
return RefactoringBundle.message("replace.this.code.fragment.and.change.signature", signature);
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
<orderEntry type="module" module-name="core-impl" exported="" />
|
||||
<orderEntry type="module" module-name="resources-en" />
|
||||
<orderEntry type="library" name="asm4" level="project" />
|
||||
<orderEntry type="module" module-name="indexing-api" />
|
||||
</component>
|
||||
</module>
|
||||
|
||||
|
||||
+18
-18
@@ -30,7 +30,7 @@ import com.intellij.psi.search.LocalSearchScope;
|
||||
import com.intellij.psi.search.searches.ReferencesSearch;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.TypeConversionUtil;
|
||||
import com.intellij.refactoring.util.ParameterTablePanel;
|
||||
import com.intellij.refactoring.util.VariableData;
|
||||
import com.intellij.refactoring.util.duplicates.DuplicatesFinder;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -38,7 +38,7 @@ import org.jetbrains.annotations.Nullable;
|
||||
import java.util.*;
|
||||
|
||||
public class InputVariables {
|
||||
private final List<ParameterTablePanel.VariableData> myInputVariables;
|
||||
private final List<VariableData> myInputVariables;
|
||||
|
||||
private List<? extends PsiVariable> myInitialParameters;
|
||||
private final Project myProject;
|
||||
@@ -62,20 +62,20 @@ public class InputVariables {
|
||||
/**
|
||||
* copy use only
|
||||
*/
|
||||
public InputVariables(List<ParameterTablePanel.VariableData> inputVariables,
|
||||
public InputVariables(List<VariableData> inputVariables,
|
||||
Project project,
|
||||
LocalSearchScope scope) {
|
||||
myProject = project;
|
||||
myScope = scope;
|
||||
myInputVariables = new ArrayList<ParameterTablePanel.VariableData>(inputVariables);
|
||||
myInputVariables = new ArrayList<VariableData>(inputVariables);
|
||||
}
|
||||
|
||||
public boolean isFoldable() {
|
||||
return myFolding.isFoldable();
|
||||
}
|
||||
|
||||
public ArrayList<ParameterTablePanel.VariableData> wrapInputVariables(final List<? extends PsiVariable> inputVariables) {
|
||||
final ArrayList<ParameterTablePanel.VariableData> inputData = new ArrayList<ParameterTablePanel.VariableData>(inputVariables.size());
|
||||
public ArrayList<VariableData> wrapInputVariables(final List<? extends PsiVariable> inputVariables) {
|
||||
final ArrayList<VariableData> inputData = new ArrayList<VariableData>(inputVariables.size());
|
||||
for (PsiVariable var : inputVariables) {
|
||||
String name = var.getName();
|
||||
if (!(var instanceof PsiParameter)) {
|
||||
@@ -117,7 +117,7 @@ public class InputVariables {
|
||||
}
|
||||
}
|
||||
|
||||
ParameterTablePanel.VariableData data = new ParameterTablePanel.VariableData(var, type);
|
||||
VariableData data = new VariableData(var, type);
|
||||
data.name = name;
|
||||
data.passAsParameter = true;
|
||||
inputData.add(data);
|
||||
@@ -127,9 +127,9 @@ public class InputVariables {
|
||||
|
||||
|
||||
if (myFoldingAvailable) {
|
||||
final Set<ParameterTablePanel.VariableData> toDelete = new HashSet<ParameterTablePanel.VariableData>();
|
||||
final Set<VariableData> toDelete = new HashSet<VariableData>();
|
||||
for (int i = inputData.size() - 1; i >=0; i--) {
|
||||
final ParameterTablePanel.VariableData data = inputData.get(i);
|
||||
final VariableData data = inputData.get(i);
|
||||
if (myFolding.isParameterSafeToDelete(data, myScope)) {
|
||||
toDelete.add(data);
|
||||
}
|
||||
@@ -189,7 +189,7 @@ public class InputVariables {
|
||||
return currentType;
|
||||
}
|
||||
|
||||
public List<ParameterTablePanel.VariableData> getInputVariables() {
|
||||
public List<VariableData> getInputVariables() {
|
||||
return myInputVariables;
|
||||
}
|
||||
|
||||
@@ -197,15 +197,15 @@ public class InputVariables {
|
||||
if (!myFoldingAvailable) return expression;
|
||||
|
||||
boolean update = elements[0] == expression;
|
||||
for (ParameterTablePanel.VariableData inputVariable : myInputVariables) {
|
||||
for (VariableData inputVariable : myInputVariables) {
|
||||
myFolding.foldParameterUsagesInBody(inputVariable, elements, myScope);
|
||||
}
|
||||
return update ? (PsiExpression)elements[0] : expression;
|
||||
}
|
||||
|
||||
public boolean toDeclareInsideBody(PsiVariable variable) {
|
||||
final ArrayList<ParameterTablePanel.VariableData> knownVars = new ArrayList<ParameterTablePanel.VariableData>(myInputVariables);
|
||||
for (ParameterTablePanel.VariableData data : knownVars) {
|
||||
final ArrayList<VariableData> knownVars = new ArrayList<VariableData>(myInputVariables);
|
||||
for (VariableData data : knownVars) {
|
||||
if (data.variable.equals(variable)) {
|
||||
return false;
|
||||
}
|
||||
@@ -214,7 +214,7 @@ public class InputVariables {
|
||||
}
|
||||
|
||||
public boolean contains(PsiVariable variable) {
|
||||
for (ParameterTablePanel.VariableData data : myInputVariables) {
|
||||
for (VariableData data : myInputVariables) {
|
||||
if (data.variable.equals(variable)) return true;
|
||||
}
|
||||
return false;
|
||||
@@ -227,8 +227,8 @@ public class InputVariables {
|
||||
int endOffset) {
|
||||
final LocalSearchScope scope = new LocalSearchScope(codeFragment);
|
||||
Variables:
|
||||
for (Iterator<ParameterTablePanel.VariableData> iterator = myInputVariables.iterator(); iterator.hasNext();) {
|
||||
final ParameterTablePanel.VariableData data = iterator.next();
|
||||
for (Iterator<VariableData> iterator = myInputVariables.iterator(); iterator.hasNext();) {
|
||||
final VariableData data = iterator.next();
|
||||
for (PsiReference ref : ReferencesSearch.search(data.variable, scope)) {
|
||||
PsiElement element = ref.getElement();
|
||||
int elementOffset = controlFlow.getStartOffset(element);
|
||||
@@ -257,7 +257,7 @@ public class InputVariables {
|
||||
}
|
||||
|
||||
|
||||
public void appendCallArguments(ParameterTablePanel.VariableData data, StringBuilder buffer) {
|
||||
public void appendCallArguments(VariableData data, StringBuilder buffer) {
|
||||
if (myFoldingAvailable) {
|
||||
buffer.append(myFolding.getGeneratedCallArgument(data));
|
||||
} else {
|
||||
@@ -277,7 +277,7 @@ public class InputVariables {
|
||||
}
|
||||
|
||||
public void annotateWithParameter(PsiJavaCodeReferenceElement reference) {
|
||||
for (ParameterTablePanel.VariableData data : myInputVariables) {
|
||||
for (VariableData data : myInputVariables) {
|
||||
final PsiElement element = reference.resolve();
|
||||
if (data.variable.equals(element)) {
|
||||
PsiType type = data.variable.getType();
|
||||
+9
-9
@@ -31,7 +31,7 @@ import com.intellij.psi.search.SearchScope;
|
||||
import com.intellij.psi.search.searches.ReferencesSearch;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.refactoring.util.ParameterTablePanel;
|
||||
import com.intellij.refactoring.util.VariableData;
|
||||
import com.intellij.refactoring.util.duplicates.DuplicatesFinder;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -54,7 +54,7 @@ public class ParametersFolder {
|
||||
myDeleted.clear();
|
||||
}
|
||||
|
||||
public boolean isParameterSafeToDelete(@NotNull ParameterTablePanel.VariableData data, @NotNull LocalSearchScope scope) {
|
||||
public boolean isParameterSafeToDelete(@NotNull VariableData data, @NotNull LocalSearchScope scope) {
|
||||
Next:
|
||||
for (PsiReference reference : ReferencesSearch.search(data.variable, scope)) {
|
||||
PsiElement expression = reference.getElement();
|
||||
@@ -82,7 +82,7 @@ public class ParametersFolder {
|
||||
return false;
|
||||
}
|
||||
|
||||
public void foldParameterUsagesInBody(@NotNull ParameterTablePanel.VariableData data, PsiElement[] elements, SearchScope scope) {
|
||||
public void foldParameterUsagesInBody(@NotNull VariableData data, PsiElement[] elements, SearchScope scope) {
|
||||
if (myDeleted.contains(data.variable)) return;
|
||||
final PsiExpression psiExpression = myExpressions.get(data.variable);
|
||||
if (psiExpression == null) return;
|
||||
@@ -108,7 +108,7 @@ public class ParametersFolder {
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isParameterFoldable(@NotNull ParameterTablePanel.VariableData data,
|
||||
public boolean isParameterFoldable(@NotNull VariableData data,
|
||||
@NotNull LocalSearchScope scope,
|
||||
@NotNull final List<? extends PsiVariable> inputVariables) {
|
||||
final List<PsiExpression> mentionedInExpressions = getMentionedExpressions(data.variable, scope, inputVariables);
|
||||
@@ -164,8 +164,8 @@ public class ParametersFolder {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void setUniqueName(ParameterTablePanel.VariableData data) {
|
||||
|
||||
private void setUniqueName(VariableData data) {
|
||||
int idx = 1;
|
||||
while (myUsedNames.contains(data.name)) {
|
||||
data.name += idx;
|
||||
@@ -173,7 +173,7 @@ public class ParametersFolder {
|
||||
myUsedNames.add(data.name);
|
||||
}
|
||||
|
||||
private static Set<PsiVariable> findUsedVariables(ParameterTablePanel.VariableData data, final List<? extends PsiVariable> inputVariables,
|
||||
private static Set<PsiVariable> findUsedVariables(VariableData data, final List<? extends PsiVariable> inputVariables,
|
||||
PsiExpression expression) {
|
||||
final Set<PsiVariable> found = new HashSet<PsiVariable>();
|
||||
expression.accept(new JavaRecursiveElementVisitor() {
|
||||
@@ -275,11 +275,11 @@ public class ParametersFolder {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public String getGeneratedCallArgument(@NotNull ParameterTablePanel.VariableData data) {
|
||||
public String getGeneratedCallArgument(@NotNull VariableData data) {
|
||||
return myExpressions.containsKey(data.variable) ? myExpressions.get(data.variable).getText() : data.variable.getName();
|
||||
}
|
||||
|
||||
public boolean annotateWithParameter(@NotNull ParameterTablePanel.VariableData data, @NotNull PsiElement element) {
|
||||
public boolean annotateWithParameter(@NotNull VariableData data, @NotNull PsiElement element) {
|
||||
final PsiExpression psiExpression = myExpressions.get(data.variable);
|
||||
if (psiExpression != null) {
|
||||
final PsiExpression expression = findEquivalent(psiExpression, element);
|
||||
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
* Copyright 2000-2013 JetBrains s.r.o.
|
||||
*
|
||||
* 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.refactoring.util;
|
||||
|
||||
import com.intellij.psi.PsiType;
|
||||
import com.intellij.psi.PsiVariable;
|
||||
import com.intellij.psi.SmartTypePointerManager;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class VariableData {
|
||||
public final PsiVariable variable;
|
||||
public PsiType type;
|
||||
public String name;
|
||||
public boolean passAsParameter;
|
||||
|
||||
public VariableData(@NotNull PsiVariable var) {
|
||||
variable = var;
|
||||
type = var.getType();
|
||||
}
|
||||
|
||||
public VariableData(@NotNull PsiVariable var, @NotNull PsiType type) {
|
||||
variable = var;
|
||||
this.type = SmartTypePointerManager.getInstance(var.getProject()).createSmartTypePointer(type).getType();
|
||||
}
|
||||
}
|
||||
+6
-91
@@ -26,13 +26,13 @@ import com.intellij.psi.*;
|
||||
import com.intellij.psi.codeStyle.CodeStyleManager;
|
||||
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
|
||||
import com.intellij.psi.controlFlow.*;
|
||||
import com.intellij.psi.util.*;
|
||||
import com.intellij.refactoring.changeSignature.ChangeSignatureProcessor;
|
||||
import com.intellij.refactoring.changeSignature.ParameterInfoImpl;
|
||||
import com.intellij.psi.util.InheritanceUtil;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.psi.util.TypeConversionUtil;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.containers.HashMap;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -53,7 +53,7 @@ public final class Match {
|
||||
private final Map<PsiElement, PsiElement> myDeclarationCorrespondence = new HashMap<PsiElement, PsiElement>();
|
||||
private ReturnValue myReturnValue = null;
|
||||
private Ref<PsiExpression> myInstanceExpression = null;
|
||||
private final Map<PsiVariable, PsiType> myChangedParams = new HashMap<PsiVariable, PsiType>();
|
||||
final Map<PsiVariable, PsiType> myChangedParams = new HashMap<PsiVariable, PsiType>();
|
||||
private final boolean myIgnoreParameterTypes;
|
||||
|
||||
Match(PsiElement start, PsiElement end, boolean ignoreParameterTypes) {
|
||||
@@ -339,75 +339,7 @@ public final class Match {
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public String getChangedSignature(final PsiMethod method, final boolean shouldBeStatic, String visibility) {
|
||||
final PsiType returnType = getChangedReturnType(method);
|
||||
if (!myChangedParams.isEmpty() || returnType != null) {
|
||||
@NonNls StringBuilder buffer = new StringBuilder();
|
||||
buffer.append(visibility);
|
||||
if (buffer.length() > 0) {
|
||||
buffer.append(" ");
|
||||
}
|
||||
if (shouldBeStatic) {
|
||||
buffer.append("static ");
|
||||
}
|
||||
final PsiTypeParameterList typeParameterList = method.getTypeParameterList();
|
||||
if (typeParameterList != null) {
|
||||
buffer.append(typeParameterList.getText());
|
||||
buffer.append(" ");
|
||||
}
|
||||
|
||||
buffer.append(PsiFormatUtil.formatType(returnType != null ? returnType : method.getReturnType(), 0, PsiSubstitutor.EMPTY));
|
||||
buffer.append(" ");
|
||||
buffer.append(method.getName());
|
||||
buffer.append("(");
|
||||
int count = 0;
|
||||
final String INDENT = " ";
|
||||
final ArrayList<ParameterInfoImpl> params = patchParams(method);
|
||||
for (ParameterInfoImpl param : params) {
|
||||
String typeText = param.getTypeText();
|
||||
if (count > 0) {
|
||||
buffer.append(",");
|
||||
}
|
||||
buffer.append("\n");
|
||||
buffer.append(INDENT);
|
||||
buffer.append(typeText);
|
||||
buffer.append(" ");
|
||||
buffer.append(param.getName());
|
||||
count++;
|
||||
}
|
||||
|
||||
if (count > 0) {
|
||||
buffer.append("\n");
|
||||
}
|
||||
buffer.append(")");
|
||||
final PsiClassType[] exceptions = method.getThrowsList().getReferencedTypes();
|
||||
if (exceptions.length > 0) {
|
||||
buffer.append("\n");
|
||||
buffer.append("throws\n");
|
||||
for (PsiType exception : exceptions) {
|
||||
buffer.append(INDENT);
|
||||
buffer.append(PsiFormatUtil.formatType(exception, 0, PsiSubstitutor.EMPTY));
|
||||
buffer.append("\n");
|
||||
}
|
||||
}
|
||||
return buffer.toString();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public void changeSignature(final PsiMethod psiMethod) {
|
||||
final PsiType expressionType = getChangedReturnType(psiMethod);
|
||||
if (expressionType == null && myChangedParams.isEmpty()) return;
|
||||
final ArrayList<ParameterInfoImpl> newParameters = patchParams(psiMethod);
|
||||
final ChangeSignatureProcessor csp = new ChangeSignatureProcessor(psiMethod.getProject(), psiMethod, false, null, psiMethod.getName(),
|
||||
expressionType != null ? expressionType : psiMethod.getReturnType(),
|
||||
newParameters.toArray(new ParameterInfoImpl[newParameters.size()]));
|
||||
|
||||
csp.run();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private PsiType getChangedReturnType(final PsiMethod psiMethod) {
|
||||
public PsiType getChangedReturnType(final PsiMethod psiMethod) {
|
||||
final PsiType returnType = psiMethod.getReturnType();
|
||||
if (returnType != null) {
|
||||
PsiElement parent = getMatchEnd().getParent();
|
||||
@@ -487,23 +419,6 @@ public final class Match {
|
||||
return !TypeConversionUtil.isAssignable(currentType, substitutor.substitute(returnType));
|
||||
}
|
||||
|
||||
private ArrayList<ParameterInfoImpl> patchParams(final PsiMethod psiMethod) {
|
||||
final ArrayList<ParameterInfoImpl> newParameters = new ArrayList<ParameterInfoImpl>();
|
||||
final PsiParameter[] oldParameters = psiMethod.getParameterList().getParameters();
|
||||
for (int i = 0; i < oldParameters.length; i++) {
|
||||
final PsiParameter oldParameter = oldParameters[i];
|
||||
PsiType type = oldParameter.getType();
|
||||
for (PsiVariable variable : myChangedParams.keySet()) {
|
||||
if (PsiEquivalenceUtil.areElementsEquivalent(variable, oldParameter)) {
|
||||
type = myChangedParams.get(variable);
|
||||
break;
|
||||
}
|
||||
}
|
||||
newParameters.add(new ParameterInfoImpl(i, oldParameter.getName(), type));
|
||||
}
|
||||
return newParameters;
|
||||
}
|
||||
|
||||
public PsiFile getFile() {
|
||||
return getMatchStart().getContainingFile();
|
||||
}
|
||||
+17
-17
@@ -27,7 +27,7 @@ import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.refactoring.introduceparameterobject.IntroduceParameterObjectProcessor;
|
||||
import com.intellij.refactoring.util.ParameterTablePanel;
|
||||
import com.intellij.refactoring.util.VariableData;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.VisibilityUtil;
|
||||
|
||||
@@ -46,9 +46,9 @@ public class IntroduceParameterObjectTest extends MultiFileTestCase{
|
||||
}
|
||||
|
||||
private void doTest(final boolean delegate, final boolean createInner) throws Exception {
|
||||
doTest(delegate, createInner, new Function<PsiMethod, ParameterTablePanel.VariableData[]>() {
|
||||
doTest(delegate, createInner, new Function<PsiMethod, VariableData[]>() {
|
||||
@Override
|
||||
public ParameterTablePanel.VariableData[] fun(PsiMethod psiMethod) {
|
||||
public VariableData[] fun(PsiMethod psiMethod) {
|
||||
return generateParams(psiMethod);
|
||||
}
|
||||
});
|
||||
@@ -56,7 +56,7 @@ public class IntroduceParameterObjectTest extends MultiFileTestCase{
|
||||
|
||||
private void doTest(final boolean delegate,
|
||||
final boolean createInner,
|
||||
final Function<PsiMethod, ParameterTablePanel.VariableData[]> function) throws Exception {
|
||||
final Function<PsiMethod, VariableData[]> function) throws Exception {
|
||||
doTest(new PerformAction() {
|
||||
@Override
|
||||
public void performAction(final VirtualFile rootDir, final VirtualFile rootAfter) throws Exception {
|
||||
@@ -65,7 +65,7 @@ public class IntroduceParameterObjectTest extends MultiFileTestCase{
|
||||
assertNotNull("Class Test not found", aClass);
|
||||
|
||||
final PsiMethod method = aClass.findMethodsByName("foo", false)[0];
|
||||
final ParameterTablePanel.VariableData[] datas = function.fun(method);
|
||||
final VariableData[] datas = function.fun(method);
|
||||
|
||||
IntroduceParameterObjectProcessor processor = new IntroduceParameterObjectProcessor("Param", "", null, method, datas, delegate, false,
|
||||
createInner, null, false);
|
||||
@@ -74,13 +74,13 @@ public class IntroduceParameterObjectTest extends MultiFileTestCase{
|
||||
});
|
||||
}
|
||||
|
||||
private static ParameterTablePanel.VariableData[] generateParams(final PsiMethod method) {
|
||||
private static VariableData[] generateParams(final PsiMethod method) {
|
||||
final PsiParameter[] parameters = method.getParameterList().getParameters();
|
||||
|
||||
final ParameterTablePanel.VariableData[] datas = new ParameterTablePanel.VariableData[parameters.length];
|
||||
final VariableData[] datas = new VariableData[parameters.length];
|
||||
for (int i = 0; i < parameters.length; i++) {
|
||||
PsiParameter parameter = parameters[i];
|
||||
datas[i] = new ParameterTablePanel.VariableData(parameter);
|
||||
datas[i] = new VariableData(parameter);
|
||||
datas[i].name = parameter.getName();
|
||||
datas[i].passAsParameter = true;
|
||||
}
|
||||
@@ -132,15 +132,15 @@ public class IntroduceParameterObjectTest extends MultiFileTestCase{
|
||||
}
|
||||
|
||||
public void testSameTypeAndVarargs() throws Exception {
|
||||
doTest(false, false, new Function<PsiMethod, ParameterTablePanel.VariableData[]>() {
|
||||
doTest(false, false, new Function<PsiMethod, VariableData[]>() {
|
||||
@Override
|
||||
public ParameterTablePanel.VariableData[] fun(PsiMethod method) {
|
||||
public VariableData[] fun(PsiMethod method) {
|
||||
final PsiParameter[] parameters = method.getParameterList().getParameters();
|
||||
|
||||
final ParameterTablePanel.VariableData[] datas = new ParameterTablePanel.VariableData[parameters.length - 1];
|
||||
final VariableData[] datas = new VariableData[parameters.length - 1];
|
||||
for (int i = 0; i < parameters.length - 1; i++) {
|
||||
PsiParameter parameter = parameters[i];
|
||||
datas[i] = new ParameterTablePanel.VariableData(parameter);
|
||||
datas[i] = new VariableData(parameter);
|
||||
datas[i].name = parameter.getName();
|
||||
datas[i].passAsParameter = true;
|
||||
}
|
||||
@@ -150,16 +150,16 @@ public class IntroduceParameterObjectTest extends MultiFileTestCase{
|
||||
}
|
||||
|
||||
public void testTypeParametersWithChosenSubtype() throws Exception {
|
||||
doTest(false, true, new Function<PsiMethod, ParameterTablePanel.VariableData[]>() {
|
||||
doTest(false, true, new Function<PsiMethod, VariableData[]>() {
|
||||
@Override
|
||||
public ParameterTablePanel.VariableData[] fun(PsiMethod psiMethod) {
|
||||
public VariableData[] fun(PsiMethod psiMethod) {
|
||||
final PsiParameter parameter = psiMethod.getParameterList().getParameters()[0];
|
||||
final PsiClass collectionClass = getJavaFacade().findClass(CommonClassNames.JAVA_UTIL_COLLECTION);
|
||||
final ParameterTablePanel.VariableData variableData =
|
||||
new ParameterTablePanel.VariableData(parameter, JavaPsiFacade.getElementFactory(getProject()).createType(collectionClass));
|
||||
final VariableData variableData =
|
||||
new VariableData(parameter, JavaPsiFacade.getElementFactory(getProject()).createType(collectionClass));
|
||||
variableData.name = parameter.getName();
|
||||
variableData.passAsParameter = true;
|
||||
return new ParameterTablePanel.VariableData[]{variableData};
|
||||
return new VariableData[]{variableData};
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
|
||||
import com.intellij.refactoring.makeStatic.MakeClassStaticProcessor;
|
||||
import com.intellij.refactoring.makeStatic.MakeStaticUtil;
|
||||
import com.intellij.refactoring.makeStatic.Settings;
|
||||
import com.intellij.refactoring.util.ParameterTablePanel;
|
||||
import com.intellij.refactoring.util.VariableData;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -83,7 +83,7 @@ public class MakeClassStaticTest extends LightRefactoringTestCase {
|
||||
PsiElement element = TargetElementUtilBase.findTargetElement(myEditor, TargetElementUtilBase.ELEMENT_NAME_ACCEPTED);
|
||||
assertTrue(element instanceof PsiClass);
|
||||
PsiClass aClass = (PsiClass)element;
|
||||
final ArrayList<ParameterTablePanel.VariableData> parametersForFields = new ArrayList<ParameterTablePanel.VariableData>();
|
||||
final ArrayList<VariableData> parametersForFields = new ArrayList<VariableData>();
|
||||
final boolean addClassParameter = MakeStaticUtil.buildVariableData(aClass, parametersForFields);
|
||||
|
||||
new MakeClassStaticProcessor(
|
||||
@@ -91,7 +91,7 @@ public class MakeClassStaticTest extends LightRefactoringTestCase {
|
||||
aClass,
|
||||
new Settings(true, addClassParameter ? "anObject" : null,
|
||||
parametersForFields.toArray(
|
||||
new ParameterTablePanel.VariableData[parametersForFields.size()]))).run();
|
||||
new VariableData[parametersForFields.size()]))).run();
|
||||
checkResultByFile(TEST_ROOT + getTestName(false) + "_after.java");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ import com.intellij.psi.PsiMethod;
|
||||
import com.intellij.refactoring.makeStatic.MakeMethodStaticProcessor;
|
||||
import com.intellij.refactoring.makeStatic.MakeStaticUtil;
|
||||
import com.intellij.refactoring.makeStatic.Settings;
|
||||
import com.intellij.refactoring.util.ParameterTablePanel;
|
||||
import com.intellij.refactoring.util.VariableData;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -176,7 +176,7 @@ public class MakeMethodStaticTest extends LightRefactoringTestCase {
|
||||
configureByFile("/refactoring/makeMethodStatic/beforePreserveTypeParams.java");
|
||||
performWithFields();
|
||||
checkResultByFile("/refactoring/makeMethodStatic/afterPreserveTypeParams.java");
|
||||
}
|
||||
}
|
||||
|
||||
public void testInnerStaticClassUsed() throws Exception {
|
||||
configureByFile("/refactoring/makeMethodStatic/beforeInnerStaticClassUsed.java");
|
||||
@@ -218,7 +218,7 @@ public class MakeMethodStaticTest extends LightRefactoringTestCase {
|
||||
PsiElement element = TargetElementUtilBase.findTargetElement(myEditor, TargetElementUtilBase.ELEMENT_NAME_ACCEPTED);
|
||||
assertTrue(element instanceof PsiMethod);
|
||||
PsiMethod method = (PsiMethod) element;
|
||||
final ArrayList<ParameterTablePanel.VariableData> parametersForFields = new ArrayList<ParameterTablePanel.VariableData>();
|
||||
final ArrayList<VariableData> parametersForFields = new ArrayList<VariableData>();
|
||||
final boolean addClassParameter = MakeStaticUtil.buildVariableData(method, parametersForFields);
|
||||
|
||||
new MakeMethodStaticProcessor(
|
||||
@@ -226,6 +226,6 @@ public class MakeMethodStaticTest extends LightRefactoringTestCase {
|
||||
method,
|
||||
new Settings(true, addClassParameter ? "anObject" : null,
|
||||
parametersForFields.toArray(
|
||||
new ParameterTablePanel.VariableData[parametersForFields.size()]))).run();
|
||||
new VariableData[parametersForFields.size()]))).run();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@ import com.intellij.refactoring.extractMethod.ExtractMethodProcessor;
|
||||
import com.intellij.refactoring.ui.TypeSelectorManager;
|
||||
import com.intellij.refactoring.ui.TypeSelectorManagerImpl;
|
||||
import com.intellij.refactoring.util.ParameterTablePanel;
|
||||
import com.intellij.refactoring.util.VariableData;
|
||||
import com.intellij.testFramework.LightCodeInsightTestCase;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -110,7 +111,7 @@ public class SuggestedParamTypesTest extends LightCodeInsightTestCase {
|
||||
|
||||
processor.prepare();
|
||||
|
||||
for (final ParameterTablePanel.VariableData data : processor.getInputVariables().getInputVariables()) {
|
||||
for (final VariableData data : processor.getInputVariables().getInputVariables()) {
|
||||
final PsiExpression[] occurrences = ParameterTablePanel.findVariableOccurrences(elements, data.variable);
|
||||
final TypeSelectorManager manager = new TypeSelectorManagerImpl(project, data.type, occurrences, true) {
|
||||
@Override
|
||||
|
||||
@@ -66,7 +66,7 @@ import org.jetbrains.annotations.Nullable;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.*;
|
||||
|
||||
public abstract class BaseRefactoringProcessor {
|
||||
public abstract class BaseRefactoringProcessor implements Runnable {
|
||||
private static final Logger LOG = Logger.getInstance("#com.intellij.refactoring.BaseRefactoringProcessor");
|
||||
|
||||
protected final Project myProject;
|
||||
|
||||
Reference in New Issue
Block a user