package com.jetbrains.lang.dart.ide.refactoring.extract; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.ValidationInfo; import com.intellij.openapi.util.text.StringUtil; import com.jetbrains.lang.dart.DartBundle; import com.jetbrains.lang.dart.util.DartControlFlow; import org.jetbrains.annotations.Nullable; import javax.swing.*; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; public class DartExtractDialog extends DialogWrapper { private final DartControlFlow myScope; private JLabel mySignatureLabel; private JPanel myMainPanel; private JTextField myFunctionNameField; protected DartExtractDialog(@Nullable Project project, String functionName, DartControlFlow scope) { super(project); myScope = scope; myFunctionNameField.addKeyListener(new KeyListener() { @Override public void keyTyped(KeyEvent e) { mySignatureLabel.setText(myScope.getSignature(getFunctionName())); } @Override public void keyPressed(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_ENTER) { doOKAction(); } } @Override public void keyReleased(KeyEvent e) { } }); setTitle(DartBundle.message("dart.extract.method")); init(); mySignatureLabel.setText(myScope.getSignature(functionName)); myFunctionNameField.setText(functionName); } @Nullable @Override protected JComponent createCenterPanel() { return myMainPanel; } @Nullable @Override public JComponent getPreferredFocusedComponent() { return myFunctionNameField; } public String getFunctionName() { return myFunctionNameField.getText(); } @Nullable @Override protected ValidationInfo doValidate() { if (!StringUtil.isJavaIdentifier(getFunctionName())) { return new ValidationInfo("Not a valid name!", myFunctionNameField); } return super.doValidate(); } }