fix validation for Introduce parameter dialog

This commit is contained in:
Maxim.Medvedev
2012-02-14 11:29:00 +04:00
parent 76872b97db
commit 0f23362c6e
2 changed files with 35 additions and 21 deletions
@@ -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
@@ -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<GrIntroduceParameterSettings> {
public class GrIntroduceParameterDialog extends DialogWrapper implements GrIntroduceDialog<GrIntroduceParameterSettings> {
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<GrParameter> parametersToRemove = GroovyIntroduceParameterUtil.findParametersToRemove(info);
toRemoveCBs = new TObjectIntHashMap<JCheckBox>(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;