JComponent () { JPanel panel = new JPanel(new GridBagLayout()); GridBagConstraints gbConstraints = new GridBagConstraints(); gbConstraints.insets = JBUI.insets(4); gbConstraints.weighty = 0; gbConstraints.gridwidth = GridBagConstraints.RELATIVE; gbConstraints.fill = GridBagConstraints.BOTH; gbConstraints.weightx = 0; myRbPackage = new JRadioButton(JavaRefactoringBundle.message("migration.entry.package")); panel.add(myRbPackage, gbConstraints); gbConstraints.gridwidth = GridBagConstraints.RELATIVE; gbConstraints.fill = GridBagConstraints.BOTH; gbConstraints.weightx = 0; myRbClass = new JRadioButton(JavaRefactoringBundle.message("migration.entry.class")); panel.add(myRbClass, gbConstraints); gbConstraints.gridwidth = GridBagConstraints.REMAINDER; gbConstraints.fill = GridBagConstraints.BOTH; gbConstraints.weightx = 1; panel.add(new JPanel(), gbConstraints); ButtonGroup buttonGroup = new ButtonGroup(); buttonGroup.add(myRbPackage); buttonGroup.add(myRbClass); gbConstraints.weightx = 0; gbConstraints.gridwidth = GridBagConstraints.RELATIVE; gbConstraints.fill = GridBagConstraints.NONE; JLabel oldNamePrompt = new JLabel(JavaRefactoringBundle.message("migration.entry.old.name")); panel.add(oldNamePrompt, gbConstraints); gbConstraints.gridwidth = GridBagConstraints.REMAINDER; gbConstraints.fill = GridBagConstraints.HORIZONTAL; gbConstraints.weightx = 1; final LanguageTextField.DocumentCreator documentCreator = new LanguageTextField.DocumentCreator() { @Override public Document createDocument(String value, @Nullable Language language, Project project) { PsiPackage defaultPackage = JavaPsiFacade.getInstance(project).findPackage(""); final JavaCodeFragment fragment = JavaCodeFragmentFactory.getInstance(project).createReferenceCodeFragment("", defaultPackage, true, true); return PsiDocumentManager.getInstance(project).getDocument(fragment); } }; myOldNameField = new LanguageTextField(JavaLanguage.INSTANCE, myProject, "", documentCreator); FontMetrics metrics = myOldNameField.getFontMetrics(myOldNameField.getFont()); int columnWidth = metrics.charWidth('m'); myOldNameField.setPreferredWidth(25 * columnWidth); panel.add(myOldNameField, gbConstraints); gbConstraints.weightx = 0; gbConstraints.gridwidth = GridBagConstraints.RELATIVE; gbConstraints.fill = GridBagConstraints.NONE; JLabel newNamePrompt = new JLabel(JavaRefactoringBundle.message("migration.entry.new.name")); panel.add(newNamePrompt, gbConstraints); gbConstraints.gridwidth = GridBagConstraints.REMAINDER; gbConstraints.fill = GridBagConstraints.HORIZONTAL; gbConstraints.weightx = 1; myNewNameField = new LanguageTextField(JavaLanguage.INSTANCE, myProject, "", documentCreator); panel.add(myNewNameField, gbConstraints); final DocumentListener documentAdapter = new DocumentListener() { @Override public void documentChanged(@NotNull DocumentEvent e) { validateOKButton(); } }; myOldNameField.getDocument().addDocumentListener(documentAdapter); myNewNameField.getDocument().addDocumentListener(documentAdapter); return panel; }