GrChangeSignature parameterTableModel
authorMaxim Medvedev <maxim.medvedev@jetbrains.com>
Wed, 17 Mar 2010 10:20:16 +0000 (13:20 +0300)
committerMaxim Medvedev <maxim.medvedev@jetbrains.com>
Wed, 17 Mar 2010 10:20:16 +0000 (13:20 +0300)
plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/changeSignature/GrChangeSignatureDialog.java
plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/changeSignature/GrChangeSignatureProcessor.java
plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/changeSignature/GrParameterInfo.java
plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/changeSignature/GrParameterTableModel.java

index 22cf9c2333ebbe92de37cc2805de603c790425da..220d82b3140a42bb1a9681410fb15f81bb3f3d0a 100644 (file)
@@ -226,7 +226,7 @@ public class GrChangeSignatureDialog extends RefactoringDialog {
 
 
   private static void generateParameterText(GrParameterInfo info, StringBuilder builder) {
-    final PsiTypeCodeFragment typeFragment = info.getType();
+    final PsiTypeCodeFragment typeFragment = info.getTypeFragment();
     builder.append(typeFragment != null ? typeFragment.getText().trim() : GrModifier.DEF).append(' ');
     final GroovyCodeFragment nameFragment = info.getNameFragment();
     builder.append(nameFragment != null ? nameFragment.getText().trim() : "");
@@ -291,7 +291,7 @@ public class GrChangeSignatureDialog extends RefactoringDialog {
     }
 
     for (GrParameterInfo info : myParameterModel.getParameterInfos()) {
-      if (!checkType(info.getType())) {
+      if (!checkType(info.getTypeFragment())) {
         CommonRefactoringUtil
           .showErrorHint(myProject, null, "Type for parameter " + info.getName() + " is wrong", "Incorrect data", HelpID.CHANGE_SIGNATURE);
         return false;
@@ -308,7 +308,7 @@ public class GrChangeSignatureDialog extends RefactoringDialog {
       return false;
     }
     catch (PsiTypeCodeFragment.NoTypeException e) {
-      return true;
+      return true; //Groovy accepts methods and parameters without explicit type
     }
     return true;
   }
index 0826dcf688e4f577abcb034cb2a73f6838c073b7..6fd842d9081fd9ba355ee64cd008eff4869f77e1 100644 (file)
@@ -19,6 +19,8 @@ import com.intellij.openapi.project.Project;
 import com.intellij.openapi.util.Ref;
 import com.intellij.psi.PsiElement;
 import com.intellij.psi.PsiMethod;
+import com.intellij.psi.PsiReference;
+import com.intellij.psi.search.searches.MethodReferencesSearch;
 import com.intellij.refactoring.BaseRefactoringProcessor;
 import com.intellij.refactoring.changeSignature.ChangeInfo;
 import com.intellij.refactoring.changeSignature.ChangeSignatureViewDescriptor;
@@ -30,6 +32,7 @@ import com.intellij.util.containers.MultiMap;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrMethod;
 
+import java.util.Collection;
 import java.util.List;
 
 /**
@@ -53,6 +56,7 @@ public class GrChangeSignatureProcessor extends BaseRefactoringProcessor {
   @NotNull
   @Override
   protected UsageInfo[] findUsages() {
+    final Collection<PsiReference> collection = MethodReferencesSearch.search(myInfo.getMethod()).findAll();
     return new UsageInfo[0];  //To change body of implemented methods use File | Settings | File Templates.
   }
 
index 127fea01d7ee478e513352b752234cd6a8ebd631..781a625495dafc5d4439e07a08131770be4e6993 100644 (file)
@@ -28,7 +28,7 @@ import org.jetbrains.plugins.groovy.lang.psi.api.statements.params.GrParameter;
 /**
  * @author Maxim.Medvedev
  */
-public class GrParameterInfo implements ParameterInfo{
+public class GrParameterInfo implements ParameterInfo {
   private GroovyCodeFragment myName;
   private GroovyCodeFragment myDefaultValue;
   private PsiTypeCodeFragment myType;
@@ -43,10 +43,17 @@ public class GrParameterInfo implements ParameterInfo{
     if (type != null) {
       myType = JavaPsiFacade.getElementFactory(project).createTypeCodeFragment(type.getCanonicalText(), parameter, true, true);
     }
+    else {
+      myType = JavaPsiFacade.getElementFactory(project).createTypeCodeFragment("", parameter, true, true);
+    }
     final GrExpression defaultInitializer = parameter.getDefaultInitializer();
     if (defaultInitializer != null) {
       myDefaultInitializer = new GroovyCodeFragment(project, defaultInitializer.getText());
     }
+    else {
+      myDefaultInitializer = new GroovyCodeFragment(project, "");
+    }
+    myDefaultValue = new GroovyCodeFragment(project, "");
   }
 
   public GrParameterInfo(Project project, PsiElement context) {
@@ -65,7 +72,7 @@ public class GrParameterInfo implements ParameterInfo{
     return myDefaultValue;
   }
 
-  public PsiTypeCodeFragment getType() {
+  public PsiTypeCodeFragment getTypeFragment() {
     return myType;
   }
 
index 821c2c9ae415743c7ce33212b430159c5712d3af..14086babd7587acb3a79113a063f2d044c8aaca0 100644 (file)
@@ -46,7 +46,7 @@ public class GrParameterTableModel extends AbstractTableModel implements RowEdit
       GrParameter parameter = parameters[i];
       infos.add(new GrParameterInfo(parameter, i));
     }
-    myProject=project;
+    myProject = project;
   }
 
   public void addRow() {
@@ -82,13 +82,13 @@ public class GrParameterTableModel extends AbstractTableModel implements RowEdit
     final GrParameterInfo info = infos.get(rowIndex);
     switch (columnIndex) {
       case 0:
-        return info.getType();
+        return info.getTypeFragment();
       case 1:
-        return info.getName();
+        return info.getNameFragment();
       case 2:
         return info.getDefaultInitializer();
       case 3:
-        return info.getDefaultValue();
+        return info.getDefaultValueFragment();
       default:
         throw new IllegalArgumentException();
     }
@@ -98,7 +98,6 @@ public class GrParameterTableModel extends AbstractTableModel implements RowEdit
   public void setValueAt(Object value, int rowIndex, int columnIndex) {
     if (rowIndex < 0 || rowIndex >= infos.size()) return;
     if (columnIndex < 0 || columnIndex > 3) return;
-
     /*String s = value instanceof String ? (String)value : "";
     s = s.trim();
     final GrParameterInfo info = infos.get(rowIndex);
@@ -142,7 +141,7 @@ public class GrParameterTableModel extends AbstractTableModel implements RowEdit
       case 3:
         return GroovyCodeFragment.class;
       default:
-        throw  new IllegalArgumentException();
+        throw new IllegalArgumentException();
     }
   }