[java] Fix PackagePanel UI

#IDEA-359163

GitOrigin-RevId: 6d8ebadc2c2cf33e7fe3fef097bfa65e2d7b1ec6
This commit is contained in:
Louis Vignier
2024-09-26 14:25:55 +02:00
committed by intellij-monorepo-bot
parent a2383b8fc8
commit 7167a30f5a
4 changed files with 42 additions and 28 deletions

View File

@@ -38,7 +38,6 @@ public abstract class ImportLayoutPanel extends JPanel {
private final JBCheckBox myCbLayoutStaticImportsSeparately =
new JBCheckBox(JavaBundle.message("import.layout.static.imports.separately"));
private final JBTable myImportLayoutTable;
private final ImportLayoutPanelUI myUI;
private final PackageEntryTable myImportLayoutList = new PackageEntryTable();
@@ -87,7 +86,7 @@ public abstract class ImportLayoutPanel extends JPanel {
});
ActionGroup addGroup = new DefaultActionGroup(new AddPackageAction(), new AddBlankLineAction());
addGroup.getTemplatePresentation().setIcon(LayeredIcon.ADD_WITH_DROPDOWN);
addGroup.getTemplatePresentation().setIcon(AllIcons.General.Add);
addGroup.getTemplatePresentation().setText(JavaBundle.messagePointer("button.add"));
addGroup.getTemplatePresentation().setPopupGroup(true);
addGroup.registerCustomShortcutSet(CommonShortcuts.getNewForDialogs(), null);
@@ -109,8 +108,8 @@ public abstract class ImportLayoutPanel extends JPanel {
.setPreferredSize(new Dimension(-1, JBUI.scale(180)))
.createPanel();
myUI = new ImportLayoutPanelUI(myCbLayoutStaticImportsSeparately, importLayoutPanel);
add(myUI.getPanel(), BorderLayout.CENTER);
final ImportLayoutPanelUI UI = new ImportLayoutPanelUI(myCbLayoutStaticImportsSeparately, importLayoutPanel);
add(UI.getPanel(), BorderLayout.CENTER);
}
private class AddPackageAction extends DumbAwareAction {

View File

@@ -1,24 +1,22 @@
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.intellij.application.options;
import com.intellij.java.JavaBundle;
import com.intellij.psi.codeStyle.PackageEntry;
import com.intellij.psi.codeStyle.PackageEntryTable;
import com.intellij.ui.*;
import com.intellij.ui.TableUtil;
import com.intellij.ui.table.JBTable;
import com.intellij.util.ui.JBUI;
import com.intellij.util.ui.UIUtil;
import javax.swing.*;
import javax.swing.table.AbstractTableModel;
import java.awt.*;
import static com.intellij.application.options.PackagePanelUIKt.doCreatePackagesPanel;
/**
* @author Max Medvedev
*/
public final class PackagePanel {
private static void addPackageToPackages(JBTable table, PackageEntryTable list) {
static void addPackageToPackages(JBTable table, PackageEntryTable list) {
int selected = table.getSelectedRow() + 1;
if (selected < 0) {
selected = list.getEntryCount();
@@ -28,7 +26,7 @@ public final class PackagePanel {
ImportLayoutPanel.refreshTableModel(selected, table);
}
private static void removeEntryFromPackages(JBTable table, PackageEntryTable list) {
static void removeEntryFromPackages(JBTable table, PackageEntryTable list) {
int selected = table.getSelectedRow();
if (selected < 0) return;
TableUtil.stopEditing(table);
@@ -44,21 +42,6 @@ public final class PackagePanel {
}
public static JPanel createPackagesPanel(final JBTable packageTable, final PackageEntryTable packageList) {
JPanel panel = ToolbarDecorator.createDecorator(packageTable)
.setAddAction(new AnActionButtonRunnable() {
@Override
public void run(AnActionButton button) {
addPackageToPackages(packageTable, packageList);
}
}).setRemoveAction(new AnActionButtonRunnable() {
@Override
public void run(AnActionButton button) {
removeEntryFromPackages(packageTable, packageList);
}
}).disableUpDownActions().setPreferredSize(new Dimension(-1, JBUI.scale(180))).createPanel();
UIUtil.addBorder(panel, IdeBorderFactory.createTitledBorder(JavaBundle.message("title.packages.to.use.import.with"), false));
return panel;
return doCreatePackagesPanel(packageTable, packageList);
}
}

View File

@@ -0,0 +1,32 @@
// 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.application.options
import com.intellij.java.JavaBundle
import com.intellij.psi.codeStyle.PackageEntryTable
import com.intellij.ui.ToolbarDecorator
import com.intellij.ui.dsl.builder.Align
import com.intellij.ui.dsl.builder.LabelPosition
import com.intellij.ui.dsl.builder.panel
import com.intellij.ui.table.JBTable
import com.intellij.util.ui.JBUI
import java.awt.Dimension
internal fun doCreatePackagesPanel(packageTable: JBTable, packageList: PackageEntryTable) = panel {
val panel = ToolbarDecorator.createDecorator(packageTable)
.setAddAction {
PackagePanel.addPackageToPackages(packageTable, packageList)
}
.setRemoveAction {
PackagePanel.removeEntryFromPackages(packageTable, packageList)
}
.disableUpDownActions()
.setPreferredSize(Dimension(-1, JBUI.scale(180)))
.createPanel()
row {
cell(panel)
.align(Align.FILL)
.label(JavaBundle.message("title.packages.to.use.import.with"), LabelPosition.TOP)
}
.resizableRow()
}

View File

@@ -1327,7 +1327,7 @@ title.naming.variable=Variable
title.naming.functional.expressions=Lambda Body
title.package.not.found=Package Not Found
title.packages=Packages
title.packages.to.use.import.with=Packages to Use Import with '*'
title.packages.to.use.import.with=Packages to Use Import with '*':
to.import.a.method.statically.press.0=To import a method statically, press {0}
unscramble.detect.analyze.threaddump.from.clipboard.item=Automatically detect and analyze thread dumps copied to the clipboard outside of IntelliJ IDEA
unscramble.log.path.label=&Log file: