ParamInfo
authorMaxim.Medvedev <maxim.medvedev@jetbrains.com>
Tue, 31 Jan 2012 16:56:33 +0000 (20:56 +0400)
committerMaxim.Medvedev <maxim.medvedev@jetbrains.com>
Wed, 1 Feb 2012 12:00:23 +0000 (16:00 +0400)
plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/QuickfixUtil.java
plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/dynamic/DynamicManager.java
plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/dynamic/DynamicManagerImpl.java
plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/dynamic/DynamicToolWindowWrapper.java
plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/dynamic/ParamInfo.java [moved from plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/dynamic/MyPair.java with 62% similarity]
plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/dynamic/elements/DClassElement.java
plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/dynamic/elements/DMethodElement.java
plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/dynamic/ui/DynamicDialog.java
plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/dynamic/ui/DynamicElementSettings.java
plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/dynamic/ui/DynamicMethodDialog.java
plugins/groovy/test/org/jetbrains/plugins/groovy/lang/dynamic/DynamicTest.java

index 3d2a137bbd8386831e22922e22fc0b5e62d3ae0f..0bdf81f41459a86fab2844fd6a7a3d05b5b3bd84 100644 (file)
@@ -32,7 +32,7 @@ import com.intellij.util.ArrayUtil;
 import gnu.trove.THashSet;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
-import org.jetbrains.plugins.groovy.annotator.intentions.dynamic.MyPair;
+import org.jetbrains.plugins.groovy.annotator.intentions.dynamic.ParamInfo;
 import org.jetbrains.plugins.groovy.annotator.intentions.dynamic.ui.DynamicElementSettings;
 import org.jetbrains.plugins.groovy.lang.psi.GroovyFileBase;
 import org.jetbrains.plugins.groovy.lang.psi.GroovyPsiElement;
@@ -132,8 +132,8 @@ public class QuickfixUtil {
     return result;
   }
 
-  public static List<MyPair> swapArgumentsAndTypes(String[] names, PsiType[] types) {
-    List<MyPair> result = new ArrayList<MyPair>();
+  public static List<ParamInfo> swapArgumentsAndTypes(String[] names, PsiType[] types) {
+    List<ParamInfo> result = new ArrayList<ParamInfo>();
 
     if (names.length != types.length) return Collections.emptyList();
 
@@ -141,7 +141,7 @@ public class QuickfixUtil {
       String name = names[i];
       final PsiType type = types[i];
 
-      result.add(new MyPair(name, type.getCanonicalText()));
+      result.add(new ParamInfo(name, type.getCanonicalText()));
     }
 
     return result;
@@ -151,22 +151,22 @@ public class QuickfixUtil {
     return referenceExpression.getParent() instanceof GrCall;
   }
 
-  public static String[] getArgumentsTypes(List<MyPair> listOfPairs) {
+  public static String[] getArgumentsTypes(List<ParamInfo> listOfPairs) {
     final List<String> result = new ArrayList<String>();
 
     if (listOfPairs == null) return ArrayUtil.EMPTY_STRING_ARRAY;
-    for (MyPair listOfPair : listOfPairs) {
-      String type = PsiTypesUtil.unboxIfPossible(listOfPair.second);
+    for (ParamInfo listOfPair : listOfPairs) {
+      String type = PsiTypesUtil.unboxIfPossible(listOfPair.type);
       result.add(type);
     }
 
     return ArrayUtil.toStringArray(result);
   }
 
-  public static String[] getArgumentsNames(List<MyPair> listOfPairs) {
+  public static String[] getArgumentsNames(List<ParamInfo> listOfPairs) {
     final ArrayList<String> result = new ArrayList<String>();
-    for (MyPair listOfPair : listOfPairs) {
-      String name = listOfPair.first;
+    for (ParamInfo listOfPair : listOfPairs) {
+      String name = listOfPair.name;
       result.add(name);
     }
 
@@ -204,10 +204,10 @@ public class QuickfixUtil {
       }
       final PsiType[] types = unboxedTypes.toArray(new PsiType[unboxedTypes.size()]);
       final String[] names = getMethodArgumentsNames(referenceExpression.getProject(), types);
-      final List<MyPair> pairs = swapArgumentsAndTypes(names, types);
+      final List<ParamInfo> infos = swapArgumentsAndTypes(names, types);
 
       settings.setMethod(true);
-      settings.setPairs(pairs);
+      settings.setParams(infos);
     } else {
       settings.setMethod(false);
     }
index 885efe18347e6c580b1d03d9229028d7ef85ece2..2ef0d7425ed2c0fd9d5872e775ca5aa2b750c9b7 100644 (file)
@@ -89,7 +89,7 @@ public abstract class DynamicManager implements ProjectComponent, PersistentStat
 
   public abstract void removeItemElement(DItemElement element);
 
-  public abstract void replaceDynamicMethodType(String className, String name, List<MyPair> myPairList, String oldType, String newType);
+  public abstract void replaceDynamicMethodType(String className, String name, List<ParamInfo> myPairList, String oldType, String newType);
 
   @NotNull
   public abstract DClassElement getOrCreateClassElement(Project project, String className);
index 81a6c6e6af241a08607328e435dcb3b55e2b3cbd..6117e7c5d6ba6b184273a6e5539feede37104b1a 100644 (file)
@@ -306,7 +306,7 @@ public class DynamicManagerImpl extends DynamicManager {
     removeItemFromTree(element, classElement);
   }
 
-  public void replaceDynamicMethodType(String className, String name, List<MyPair> myPairList, String oldType, String newType) {
+  public void replaceDynamicMethodType(String className, String name, List<ParamInfo> myPairList, String oldType, String newType) {
     final DMethodElement method = findConcreteDynamicMethod(className, name, QuickfixUtil.getArgumentsTypes(myPairList));
 
     if (method == null) return;
@@ -441,7 +441,7 @@ public class DynamicManagerImpl extends DynamicManager {
   public DItemElement createDynamicElement(DynamicElementSettings settings) {
     DItemElement itemElement;
     if (settings.isMethod()) {
-      itemElement = new DMethodElement(settings.isStatic(), settings.getName(), settings.getType(), settings.getPairs());
+      itemElement = new DMethodElement(settings.isStatic(), settings.getName(), settings.getType(), settings.getParams());
     } else {
       itemElement = new DPropertyElement(settings.isStatic(), settings.getName(), settings.getType());
     }
index 29d5ef151c1677282ca344ab07dc076b9922cf59..e32bf6e9fc6b2e37049a8ff6fc54ce3215ab4f35 100644 (file)
@@ -306,7 +306,7 @@ public class DynamicToolWindowWrapper {
           DynamicManager.getInstance(myProject).replaceDynamicPropertyType(className, name, (String)oldTypeValue, newTypeValue);
 
         } else if (dynamicElement instanceof DMethodElement) {
-          final List<MyPair> myPairList = ((DMethodElement)dynamicElement).getPairs();
+          final List<ParamInfo> myPairList = ((DMethodElement)dynamicElement).getPairs();
           DynamicManager.getInstance(myProject).replaceDynamicMethodType(className, name, myPairList, (String)oldTypeValue, newTypeValue);
         }
       }
similarity index 62%
rename from plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/dynamic/MyPair.java
rename to plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/dynamic/ParamInfo.java
index 6b6a81a8e846e0ae55f8a1b9d8dd3c67f85bc3c7..9da03701b5a926f94b25bdac321f76e235e3ddd3 100644 (file)
@@ -19,37 +19,29 @@ package org.jetbrains.plugins.groovy.annotator.intentions.dynamic;
  * User: Dmitry.Krasilschikov
  * Date: 29.02.2008
  */
-public class MyPair {
-  public String first = null;
-  public String second = null;
+public class ParamInfo {
+  public String name = null;
+  public String type = null;
 
-  public MyPair() {}
+  public ParamInfo() {}
 
-  public MyPair(String first, String second) {
-    this.first = first;
-    this.second = second;
-  }
-
-  public void setFirst(String first) {
-    this.first = first;
-  }
-
-  public void setSecond(String second) {
-    this.second = second;
+  public ParamInfo(String name, String type) {
+    this.name = name;
+    this.type = type;
   }
 
   public final int hashCode() {
     int hashCode = 0;
-    if (first != null) {
-      hashCode += first.hashCode();
+    if (name != null) {
+      hashCode += name.hashCode();
     }
-    if (second != null) {
-      hashCode += second.hashCode();
+    if (type != null) {
+      hashCode += type.hashCode();
     }
     return hashCode;
   }
 
   public String toString() {
-    return "<" + first + "," + second + ">";
+    return "<" + name + "," + type + ">";
   }
 }
index 11674b169d07aeb844bf1e8a9a0f9c293ad5d956..3a33d5083a397c620e6c5b0578aa4a0f9390636e 100644 (file)
@@ -19,7 +19,7 @@ import com.intellij.openapi.project.Project;
 import org.jetbrains.annotations.Nullable;
 import org.jetbrains.plugins.groovy.annotator.intentions.QuickfixUtil;
 import org.jetbrains.plugins.groovy.annotator.intentions.dynamic.DynamicManager;
-import org.jetbrains.plugins.groovy.annotator.intentions.dynamic.MyPair;
+import org.jetbrains.plugins.groovy.annotator.intentions.dynamic.ParamInfo;
 
 import java.util.*;
 
@@ -111,7 +111,7 @@ public class DClassElement implements DNamedElement {
   @Nullable
   public DMethodElement getMethod(String methodName, String[] parametersTypes) {
     for (DMethodElement method : myMethods) {
-      final List<MyPair> myPairList = method.getPairs();
+      final List<ParamInfo> myPairList = method.getPairs();
       if (method.getName().equals(methodName)
           && Arrays.equals(QuickfixUtil.getArgumentsTypes(myPairList), parametersTypes)) return method;
     }
index 1b69996d5746ee3eead134378c972a1d82d25c72..e6c36263f45ecd2e64a5bf07ca66cf69d3f66e51 100644 (file)
@@ -23,7 +23,7 @@ import com.intellij.util.IncorrectOperationException;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.plugins.groovy.annotator.intentions.QuickfixUtil;
 import org.jetbrains.plugins.groovy.annotator.intentions.dynamic.DynamicManager;
-import org.jetbrains.plugins.groovy.annotator.intentions.dynamic.MyPair;
+import org.jetbrains.plugins.groovy.annotator.intentions.dynamic.ParamInfo;
 import org.jetbrains.plugins.groovy.lang.psi.GroovyPsiElementFactory;
 import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrMethod;
 import org.jetbrains.plugins.groovy.lang.psi.impl.synthetic.GrDynamicImplicitMethod;
@@ -36,7 +36,7 @@ import java.util.List;
  * Date: 12.02.2008
  */
 public class DMethodElement extends DItemElement {
-  public List<MyPair> myPairs = new ArrayList<MyPair>();
+  public List<ParamInfo> myPairs = new ArrayList<ParamInfo>();
   private PsiMethod myImplicitMethod;
 
   @SuppressWarnings("UnusedDeclaration") //for serialization
@@ -44,13 +44,13 @@ public class DMethodElement extends DItemElement {
     super(null, null, null);
   }
 
-  public DMethodElement(Boolean isStatic, String name, String returnType, List<MyPair> pairs) {
+  public DMethodElement(Boolean isStatic, String name, String returnType, List<ParamInfo> pairs) {
     super(isStatic, name, returnType);
 
     myPairs = pairs;
   }
 
-  public List<MyPair> getPairs() {
+  public List<ParamInfo> getPairs() {
     return myPairs;
   }
 
index 0b652fa9d229f89195186e5fa820b1c0e4159a4a..5acbfde4ca479bc046d77569be30c74a6a79ce80 100644 (file)
@@ -37,7 +37,7 @@ import org.jetbrains.plugins.groovy.GroovyBundle;
 import org.jetbrains.plugins.groovy.GroovyFileType;
 import org.jetbrains.plugins.groovy.annotator.intentions.QuickfixUtil;
 import org.jetbrains.plugins.groovy.annotator.intentions.dynamic.DynamicManager;
-import org.jetbrains.plugins.groovy.annotator.intentions.dynamic.MyPair;
+import org.jetbrains.plugins.groovy.annotator.intentions.dynamic.ParamInfo;
 import org.jetbrains.plugins.groovy.annotator.intentions.dynamic.elements.DClassElement;
 import org.jetbrains.plugins.groovy.annotator.intentions.dynamic.elements.DItemElement;
 import org.jetbrains.plugins.groovy.codeInspection.GroovyInspectionBundle;
@@ -218,7 +218,7 @@ public abstract class DynamicDialog extends DialogWrapper {
 
             final DItemElement itemElement;
             if (mySettings.isMethod()) {
-              final List<MyPair> myPairList = mySettings.getPairs();
+              final List<ParamInfo> myPairList = mySettings.getParams();
               final String[] argumentsTypes = QuickfixUtil.getArgumentsTypes(myPairList);
               itemElement =
                 myDynamicManager.findConcreteDynamicMethod(mySettings.getContainingClassName(), mySettings.getName(), argumentsTypes);
index 9ade862e937219d1caab05ecccf689e1cb573006..bd63d74d11f47fe9cda259415326c549ce41ceb6 100644 (file)
@@ -15,7 +15,7 @@
  */
 package org.jetbrains.plugins.groovy.annotator.intentions.dynamic.ui;
 
-import org.jetbrains.plugins.groovy.annotator.intentions.dynamic.MyPair;
+import org.jetbrains.plugins.groovy.annotator.intentions.dynamic.ParamInfo;
 
 import java.util.List;
 
@@ -28,7 +28,7 @@ public class DynamicElementSettings {
   private String myContainingClassName;
   private String myType;
   private boolean isMethod;
-  private List<MyPair> myPairs;
+  private List<ParamInfo> myParams;
   private boolean isStatic;
 
   public void setContainingClassName(String newName) {
@@ -55,12 +55,12 @@ public class DynamicElementSettings {
     isMethod = method;
   }
 
-  public List<MyPair> getPairs() {
-    return myPairs;
+  public List<ParamInfo> getParams() {
+    return myParams;
   }
 
-  public void setPairs(List<MyPair> pairs) {
-    myPairs = pairs;
+  public void setParams(List<ParamInfo> pairs) {
+    myParams = pairs;
   }
 
   public String getName() {
index 498920707874381bcc972599ac809f45c4610767..62dc06428fae1270ecff094a80a80ed6b442ebb7 100644 (file)
@@ -22,7 +22,7 @@ import com.intellij.util.ui.ColumnInfo;
 import com.intellij.util.ui.ListTableModel;
 import org.jetbrains.plugins.groovy.GroovyBundle;
 import org.jetbrains.plugins.groovy.annotator.intentions.QuickfixUtil;
-import org.jetbrains.plugins.groovy.annotator.intentions.dynamic.MyPair;
+import org.jetbrains.plugins.groovy.annotator.intentions.dynamic.ParamInfo;
 import org.jetbrains.plugins.groovy.lang.psi.GroovyPsiElementFactory;
 import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrExpression;
 import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrReferenceExpression;
@@ -47,14 +47,14 @@ public class DynamicMethodDialog extends DynamicDialog {
           GroovyExpectedTypesProvider.calculateTypeConstraints((GrExpression)referenceExpression.getParent()), true);
     assert getSettings().isMethod();
 
-    final List<MyPair> pairs = getSettings().getPairs();
+    final List<ParamInfo> pairs = getSettings().getParams();
     setupParameterTable(pairs);
     setupParameterList(pairs);
     setTitle(GroovyBundle.message("add.dynamic.method"));
     setUpTypeLabel(GroovyBundle.message("dynamic.method.return.type"));
   }
 
-  private void setupParameterTable(final List<MyPair> pairs) {
+  private void setupParameterTable(final List<ParamInfo> pairs) {
 
     MySuggestedNameCellEditor suggestedNameCellEditor = new MySuggestedNameCellEditor(QuickfixUtil.getArgumentsNames(pairs));
     myParametersTable.setDefaultEditor(String.class, suggestedNameCellEditor);
@@ -69,8 +69,8 @@ public class DynamicMethodDialog extends DynamicDialog {
 
         String newNameValue = ((MySuggestedNameCellEditor)e.getSource()).getCellEditorValue();
 
-        final MyPair editingPair = pairs.get(editingRow);
-        editingPair.setFirst(newNameValue);
+        final ParamInfo editingPair = pairs.get(editingRow);
+        editingPair.name = newNameValue;
       }
 
       public void editingCanceled(ChangeEvent e) {
@@ -78,18 +78,18 @@ public class DynamicMethodDialog extends DynamicDialog {
     });
   }
 
-  private void setupParameterList(List<MyPair> arguments) {
-    final ListTableModel<MyPair> dataModel = new ListTableModel<MyPair>(new NameColumnInfo(), new TypeColumnInfo());
+  private void setupParameterList(List<ParamInfo> arguments) {
+    final ListTableModel<ParamInfo> dataModel = new ListTableModel<ParamInfo>(new NameColumnInfo(), new TypeColumnInfo());
     dataModel.setItems(arguments);
     myParametersTable.setModel(dataModel);
 
     if (arguments.isEmpty()) return;
 
-    String max0 = arguments.get(0).first;
-    String max1 = arguments.get(0).second;
-    for (MyPair argument : arguments) {
-      if (argument.first.length() > max0.length()) max0 = argument.first;
-      if (argument.second.length() > max1.length()) max1 = argument.second;
+    String max0 = arguments.get(0).name;
+    String max1 = arguments.get(0).type;
+    for (ParamInfo argument : arguments) {
+      if (argument.name.length() > max0.length()) max0 = argument.name;
+      if (argument.type.length() > max1.length()) max1 = argument.type;
     }
 
     final FontMetrics metrics = myParametersTable.getFontMetrics(myParametersTable.getFont());
@@ -101,20 +101,20 @@ public class DynamicMethodDialog extends DynamicDialog {
   }
 
 
-  private class TypeColumnInfo extends ColumnInfo<MyPair, String> {
+  private class TypeColumnInfo extends ColumnInfo<ParamInfo, String> {
     public TypeColumnInfo() {
       super(GroovyBundle.message("dynamic.name"));
     }
 
-    public String valueOf(MyPair pair) {
-      return pair.second;
+    public String valueOf(ParamInfo pair) {
+      return pair.type;
     }
 
-    public boolean isCellEditable(MyPair stringPsiTypeMyPair) {
+    public boolean isCellEditable(ParamInfo stringPsiTypeMyPair) {
       return false;
     }
 
-    public void setValue(MyPair pair, String value) {
+    public void setValue(ParamInfo pair, String value) {
       PsiType type;
       try {
         type = GroovyPsiElementFactory.getInstance(myProject).createTypeElement(value).getType();
@@ -124,21 +124,21 @@ public class DynamicMethodDialog extends DynamicDialog {
       }
 
       if (type == null) return;
-      pair.setSecond(type.getCanonicalText());
+      pair.type =type.getCanonicalText();
     }
   }
 
-  private static class NameColumnInfo extends ColumnInfo<MyPair, String> {
+  private static class NameColumnInfo extends ColumnInfo<ParamInfo, String> {
     public NameColumnInfo() {
       super(GroovyBundle.message("dynamic.type"));
     }
 
-    public boolean isCellEditable(MyPair myPair) {
+    public boolean isCellEditable(ParamInfo myPair) {
       return true;
     }
 
-    public String valueOf(MyPair pair) {
-      return pair.first;
+    public String valueOf(ParamInfo pair) {
+      return pair.name;
     }
   }
 
index e055c1e9abadee26f82ea57d2b7709b2f92b7de8..1169f935d44e6ad00a32a2282f26c28550bf8ab1 100644 (file)
@@ -9,7 +9,7 @@ import org.jetbrains.plugins.groovy.annotator.intentions.QuickfixUtil;
 import org.jetbrains.plugins.groovy.annotator.intentions.dynamic.DynamicManager;
 import org.jetbrains.plugins.groovy.annotator.intentions.dynamic.DynamicMethodFix;
 import org.jetbrains.plugins.groovy.annotator.intentions.dynamic.DynamicPropertyFix;
-import org.jetbrains.plugins.groovy.annotator.intentions.dynamic.MyPair;
+import org.jetbrains.plugins.groovy.annotator.intentions.dynamic.ParamInfo;
 import org.jetbrains.plugins.groovy.annotator.intentions.dynamic.elements.DClassElement;
 import org.jetbrains.plugins.groovy.annotator.intentions.dynamic.elements.DRootElement;
 import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrReferenceExpression;
@@ -34,7 +34,7 @@ public class DynamicTest extends JavaCodeInsightFixtureTestCase {
 
     final PsiType[] psiTypes = PsiUtil.getArgumentTypes(referenceExpression, false);
     final String[] methodArgumentsNames = QuickfixUtil.getMethodArgumentsNames(getProject(), psiTypes);
-    final List<MyPair> pairs = QuickfixUtil.swapArgumentsAndTypes(methodArgumentsNames, psiTypes);
+    final List<ParamInfo> pairs = QuickfixUtil.swapArgumentsAndTypes(methodArgumentsNames, psiTypes);
 
     assertNotNull(getDClassElement().getMethod(referenceExpression.getName(), QuickfixUtil.getArgumentsTypes(pairs)));
   }