From 0f23362c6ea66e23f0b83eba77978ea6975ddf6a Mon Sep 17 00:00:00 2001 From: "Maxim.Medvedev" Date: Tue, 14 Feb 2012 11:11:11 +0400 Subject: [PATCH] fix validation for Introduce parameter dialog --- .../method/GroovyExtractMethodDialog.java | 24 +++++++------- .../parameter/GrIntroduceParameterDialog.java | 32 +++++++++++++------ 2 files changed, 35 insertions(+), 21 deletions(-) diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/extract/method/GroovyExtractMethodDialog.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/extract/method/GroovyExtractMethodDialog.java index a7caac287805..1e1de99713b5 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/extract/method/GroovyExtractMethodDialog.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/extract/method/GroovyExtractMethodDialog.java @@ -22,6 +22,7 @@ import com.intellij.openapi.help.HelpManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.Splitter; +import com.intellij.openapi.ui.ValidationInfo; import com.intellij.psi.*; import com.intellij.refactoring.HelpID; import com.intellij.refactoring.ui.ComboBoxVisibilityPanel; @@ -55,9 +56,6 @@ import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import javax.swing.event.EventListenerList; import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import java.util.ArrayList; import java.util.EventListener; @@ -88,12 +86,12 @@ public class GroovyExtractMethodDialog extends DialogWrapper { myProject = info.getProject(); myHelper = new ExtractMethodInfoHelper(info, "", owner, false); - setUpNameField(); myParameterTablePanel.init(myHelper); setModal(true); setTitle(GroovyExtractMethodHandler.REFACTORING_NAME); init(); + setUpNameField(); setUpDialog(); update(); } @@ -156,13 +154,7 @@ public class GroovyExtractMethodDialog extends DialogWrapper { } private void setUpNameField() { - - contentPane.registerKeyboardAction(new ActionListener() { - public void actionPerformed(ActionEvent e) { - myNameField.requestFocus(); - } - }, KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.ALT_MASK), JComponent.WHEN_IN_FOCUSED_WINDOW); - + myNameLabel.setLabelFor(myNameField); myNameField.addDocumentListener(new DocumentListener() { public void beforeDocumentChange(DocumentEvent event) { } @@ -193,7 +185,15 @@ public class GroovyExtractMethodDialog extends DialogWrapper { String text = getEnteredName(); myHelper.setName(text); updateSignature(); - setOKActionEnabled(GroovyNamesUtil.isIdentifier(text)); + } + + @Override + protected ValidationInfo doValidate() { + final String text = getEnteredName(); + if (!GroovyNamesUtil.isIdentifier(text)) { + return new ValidationInfo(GroovyRefactoringBundle.message("name.is.wrong", text), myNameField); + } + return null; } @Nullable diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/introduce/parameter/GrIntroduceParameterDialog.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/introduce/parameter/GrIntroduceParameterDialog.java index fb17ccbd5271..058949c6d8c4 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/introduce/parameter/GrIntroduceParameterDialog.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/introduce/parameter/GrIntroduceParameterDialog.java @@ -17,21 +17,22 @@ package org.jetbrains.plugins.groovy.refactoring.introduce.parameter; import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.WriteAction; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.Splitter; import com.intellij.openapi.ui.ValidationInfo; import com.intellij.openapi.ui.VerticalFlowLayout; import com.intellij.openapi.util.Ref; -import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiField; import com.intellij.psi.PsiType; import com.intellij.psi.codeStyle.CodeStyleSettingsManager; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.refactoring.BaseRefactoringProcessor; import com.intellij.refactoring.JavaRefactoringSettings; import com.intellij.refactoring.RefactoringBundle; import com.intellij.refactoring.ui.NameSuggestionsField; -import com.intellij.refactoring.ui.RefactoringDialog; import com.intellij.ui.IdeBorderFactory; import com.intellij.ui.components.JBRadioButton; import com.intellij.util.ui.GridBag; @@ -47,10 +48,7 @@ import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrVariable; import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrExpression; import org.jetbrains.plugins.groovy.lang.psi.api.statements.params.GrParameter; import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrMethod; -import org.jetbrains.plugins.groovy.refactoring.GrRefactoringError; -import org.jetbrains.plugins.groovy.refactoring.GroovyNameSuggestionUtil; -import org.jetbrains.plugins.groovy.refactoring.GroovyRefactoringBundle; -import org.jetbrains.plugins.groovy.refactoring.HelpID; +import org.jetbrains.plugins.groovy.refactoring.*; import org.jetbrains.plugins.groovy.refactoring.extract.ExtractUtil; import org.jetbrains.plugins.groovy.refactoring.extract.ParameterInfo; import org.jetbrains.plugins.groovy.refactoring.extract.ParameterTablePanel; @@ -73,7 +71,7 @@ import java.awt.event.ItemListener; import static com.intellij.refactoring.IntroduceParameterRefactoring.*; -public class GrIntroduceParameterDialog extends RefactoringDialog implements GrIntroduceDialog { +public class GrIntroduceParameterDialog extends DialogWrapper implements GrIntroduceDialog { private GrTypeComboBox myTypeComboBox; private NameSuggestionsField myNameSuggestionsField; private JCheckBox myDeclareFinalCheckBox; @@ -89,10 +87,12 @@ public class GrIntroduceParameterDialog extends RefactoringDialog implements GrI private ParameterTablePanel myTable; private JPanel mySignaturePanel; private JCheckBox myForceReturnCheckBox; + private Project myProject; public GrIntroduceParameterDialog(IntroduceParameterInfo info) { super(info.getProject(), true); myInfo = info; + myProject = info.getProject(); TObjectIntHashMap parametersToRemove = GroovyIntroduceParameterUtil.findParametersToRemove(info); toRemoveCBs = new TObjectIntHashMap(parametersToRemove.size()); @@ -386,7 +386,7 @@ public class GrIntroduceParameterDialog extends RefactoringDialog implements GrI @Override protected ValidationInfo doValidate() { final String text = myNameSuggestionsField.getEnteredName(); - if (!StringUtil.isJavaIdentifier(text)) { + if (!GroovyNamesUtil.isIdentifier(text)) { return new ValidationInfo(GroovyRefactoringBundle.message("name.is.wrong", text), myNameSuggestionsField); } @@ -433,8 +433,11 @@ public class GrIntroduceParameterDialog extends RefactoringDialog implements GrI } @Override - protected void doAction() { + public void doOKAction() { saveSettings(); + + super.doOKAction(); + final GrParametersOwner toReplaceIn = myInfo.getToReplaceIn(); final GrExpression expr = findExpr(); @@ -482,6 +485,17 @@ public class GrIntroduceParameterDialog extends RefactoringDialog implements GrI } } + protected void invokeRefactoring(BaseRefactoringProcessor processor) { + final Runnable prepareSuccessfulCallback = new Runnable() { + public void run() { + close(DialogWrapper.OK_EXIT_CODE); + } + }; + processor.setPrepareSuccessfulSwingThreadCallback(prepareSuccessfulCallback); + processor.setPreviewUsages(false); + processor.run(); + } + @Override public GrIntroduceParameterSettings getSettings() { return null;