[ui] Update UI for the change signature dialog

#IJPL-157817

GitOrigin-RevId: 7d37adfc97449591d15445910e93595c22239c99
This commit is contained in:
Louis Vignier
2024-07-04 16:36:27 +02:00
committed by intellij-monorepo-bot
parent 6bb8dcbbe5
commit f8b5cf39df
4 changed files with 45 additions and 18 deletions

View File

@@ -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,

View File

@@ -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()
}
}

View File

@@ -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 <code>{0}</code>.
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

View File

@@ -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