diff --git a/java/java-impl/src/com/intellij/refactoring/changeClassSignature/ChangeClassSignatureDialog.java b/java/java-impl/src/com/intellij/refactoring/changeClassSignature/ChangeClassSignatureDialog.java index 77b5863c3911..8f41d32e9fce 100644 --- a/java/java-impl/src/com/intellij/refactoring/changeClassSignature/ChangeClassSignatureDialog.java +++ b/java/java-impl/src/com/intellij/refactoring/changeClassSignature/ChangeClassSignatureDialog.java @@ -3,8 +3,8 @@ package com.intellij.refactoring.changeClassSignature; import com.intellij.codeInsight.daemon.impl.quickfix.ChangeClassSignatureFromUsageFix; import com.intellij.java.refactoring.JavaRefactoringBundle; -import com.intellij.lang.findUsages.DescriptiveNameUtil; import com.intellij.openapi.diagnostic.Logger; +import com.intellij.openapi.editor.ex.util.EditorUtil; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.NlsContexts; import com.intellij.psi.*; @@ -16,7 +16,10 @@ import com.intellij.refactoring.ui.JavaCodeFragmentTableCellEditor; import com.intellij.refactoring.ui.RefactoringDialog; import com.intellij.refactoring.ui.StringTableCellEditor; import com.intellij.refactoring.util.CommonRefactoringUtil; -import com.intellij.ui.*; +import com.intellij.ui.ColoredTableCellRenderer; +import com.intellij.ui.TableColumnAnimator; +import com.intellij.ui.TableUtil; +import com.intellij.ui.ToolbarDecorator; import com.intellij.ui.table.JBTable; import com.intellij.util.CommonJavaRefactoringUtil; import com.intellij.util.containers.ContainerUtil; @@ -94,11 +97,6 @@ public class ChangeClassSignatureDialog extends RefactoringDialog { init(); } - @Override - protected JComponent createNorthPanel() { - return new JLabel(JavaRefactoringBundle.message("changeClassSignature.class.label.text", DescriptiveNameUtil.getDescriptiveName(myClass))); - } - @Override protected String getHelpId() { return HelpID.CHANGE_CLASS_SIGNATURE; @@ -118,13 +116,13 @@ public class ChangeClassSignatureDialog extends RefactoringDialog { TableColumn valueColumn = myTable.getColumnModel().getColumn(DEFAULT_VALUE_COLUMN); Project project = myClass.getProject(); nameColumn.setCellRenderer(new MyCellRenderer()); - nameColumn.setCellEditor(new StringTableCellEditor(project)); + nameColumn.setCellEditor(new StringTableCellEditor(project, true)); boundColumn.setCellRenderer(new CodeFragmentTableCellRenderer(project)); boundColumn.setCellEditor(new JavaCodeFragmentTableCellEditor(project)); valueColumn.setCellRenderer(new CodeFragmentTableCellRenderer(project)); valueColumn.setCellEditor(new JavaCodeFragmentTableCellEditor(project)); - myTable.setPreferredScrollableViewportSize(JBUI.size(210, -1)); + myTable.setPreferredScrollableViewportSize(JBUI.size(440, -1)); myTable.setVisibleRowCount(4); myTable.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION); myTable.getSelectionModel().setSelectionInterval(0, 0); @@ -141,6 +139,7 @@ public class ChangeClassSignatureDialog extends RefactoringDialog { if (e.getType() == TableModelEvent.INSERT) { myTable.getModel().removeTableModelListener(this); final TableColumnAnimator animator = new TableColumnAnimator(myTable); + animator.setDelay(0); animator.setStep(20); animator.addColumn(defaultValue, myTable.getWidth() / 2); animator.startAndDoWhenDone(() -> myTable.editCellAt(myTable.getRowCount() - 1, 0)); @@ -150,10 +149,7 @@ public class ChangeClassSignatureDialog extends RefactoringDialog { }); } - final JPanel panel = new JPanel(new BorderLayout()); - panel.add(SeparatorFactory.createSeparator(JavaRefactoringBundle.message("changeClassSignature.parameters.panel.border.title"), myTable), BorderLayout.NORTH); - panel.add(ToolbarDecorator.createDecorator(myTable).createPanel(), BorderLayout.CENTER); - return panel; + return new ChangeClassSignatureDialogUI(myClass, ToolbarDecorator.createDecorator(myTable).createPanel()).getPanel(); } @Override @@ -309,6 +305,10 @@ public class ChangeClassSignatureDialog extends RefactoringDialog { } private static class MyCellRenderer extends ColoredTableCellRenderer { + @Override + protected @NotNull Font getBaseFont() { + return EditorUtil.getEditorFont(); + } @Override public void customizeCellRenderer(@NotNull JTable table, Object value, diff --git a/java/java-impl/src/com/intellij/refactoring/changeClassSignature/ChangeClassSignatureDialogUI.kt b/java/java-impl/src/com/intellij/refactoring/changeClassSignature/ChangeClassSignatureDialogUI.kt new file mode 100644 index 000000000000..03f5dffa3ba9 --- /dev/null +++ b/java/java-impl/src/com/intellij/refactoring/changeClassSignature/ChangeClassSignatureDialogUI.kt @@ -0,0 +1,27 @@ +// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package com.intellij.refactoring.changeClassSignature + +import com.intellij.java.refactoring.JavaRefactoringBundle +import com.intellij.lang.findUsages.DescriptiveNameUtil +import com.intellij.psi.PsiElement +import com.intellij.ui.dsl.builder.Align +import com.intellij.ui.dsl.builder.LabelPosition +import com.intellij.ui.dsl.builder.panel +import java.awt.Dimension +import javax.swing.JComponent + +class ChangeClassSignatureDialogUI(val classElement: PsiElement, val table: JComponent) { + val panel = panel { + row { + text(JavaRefactoringBundle.message("changeClassSignature.class.label.text", DescriptiveNameUtil.getDescriptiveName(classElement))) + } + row { + cell(table) + .resizableColumn() + .applyToComponent { minimumSize = Dimension(210, 100) } + .align(Align.FILL) + .label(JavaRefactoringBundle.message("changeClassSignature.parameters.panel.border.title"), LabelPosition.TOP) + } + .resizableRow() + } +} \ No newline at end of file diff --git a/java/openapi/resources/messages/JavaRefactoringBundle.properties b/java/openapi/resources/messages/JavaRefactoringBundle.properties index b339358dd97b..4d7295ced412 100644 --- a/java/openapi/resources/messages/JavaRefactoringBundle.properties +++ b/java/openapi/resources/messages/JavaRefactoringBundle.properties @@ -69,17 +69,17 @@ change.method.signature.action.name=Change Method Signature change.signature.default.value.missing.warning.message=Default value is missing. Method calls will contain blanks instead of the new parameter value. change.signature.use.any.checkbox=&Use Any Var changeClassSignature.bad.value=Wrong {0} value: ''{1}'' for parameter ''{2}'' -changeClassSignature.class.label.text=Change signature of {0} +changeClassSignature.class.label.text=Change signature of {0}. changeClassSignature.no.type.parameters=Class cannot have type parameters -changeClassSignature.parameters.panel.border.title=Parameters +changeClassSignature.parameters.panel.border.title=Parameters: changeClassSignature.refactoring.name=Change Class Signature changeClassSignature.already.contains.type.parameter=''{0}'' already contains type parameter ''{1}'' changeClassSignature.Type.parameter.can.not.be.primitive=Type parameter can't be primitive changeSignature.validating.title=Validating\u2026 changeSignature.processing.changes.title=Processing changes\u2026 -changeSignature.bound.value.column=Bound Value: +changeSignature.bound.value.column=Bound Value changeSignature.cannot.resolve.return.type=Return type ''{0}'' cannot be resolved.\nContinue? -changeSignature.default.value.column=Default Value: +changeSignature.default.value.column=Default Value changeSignature.exception.caller.chooser=Select Methods To Propagate New Exceptions changeSignature.exceptions.panel.border.title=Exceptions changeSignature.exceptions.wont.propagate=Recursive propagation of exception changes won't be performed diff --git a/platform/refactoring/resources/messages/RefactoringBundle.properties b/platform/refactoring/resources/messages/RefactoringBundle.properties index 5e54fa686838..51a4b89c6565 100644 --- a/platform/refactoring/resources/messages/RefactoringBundle.properties +++ b/platform/refactoring/resources/messages/RefactoringBundle.properties @@ -21,7 +21,7 @@ error.in.injected.lang.prefix.suffix=Selected {0} is located in the read-only pa error.cannot.be.renamed=This element cannot be renamed to.refactor=to refactor changeSignature.refactoring.name=Change Signature -column.name.name=Name: +column.name.name=Name changeSignature.default.value.label=Default value: parameters.border.title=Parameters changeSignature.propagate.parameters.title=Propa&gate Parameters\u2026