diff --git a/platform/ide-core/api-dump-unreviewed.txt b/platform/ide-core/api-dump-unreviewed.txt index fbc6336550be..aa9804abb087 100644 --- a/platform/ide-core/api-dump-unreviewed.txt +++ b/platform/ide-core/api-dump-unreviewed.txt @@ -1555,6 +1555,8 @@ com.intellij.openapi.options.Configurable$NoMargin com.intellij.openapi.options.Configurable$NoScroll com.intellij.openapi.options.Configurable$Promo - a:getPromoIcon():javax.swing.Icon +com.intellij.openapi.options.Configurable$SingleEditorConfiguration +- a:getDialogInitialSize():java.awt.Dimension com.intellij.openapi.options.Configurable$TopComponentController - sf:EMPTY:com.intellij.openapi.options.Configurable$TopComponentController - a:setLeftComponent(java.awt.Component):V diff --git a/platform/ide-core/src/com/intellij/openapi/options/Configurable.java b/platform/ide-core/src/com/intellij/openapi/options/Configurable.java index 7293485fa740..9bd5540f7467 100644 --- a/platform/ide-core/src/com/intellij/openapi/options/Configurable.java +++ b/platform/ide-core/src/com/intellij/openapi/options/Configurable.java @@ -232,6 +232,18 @@ public interface Configurable extends UnnamedConfigurable { @NotNull java.util.List getModifiableParents(); } + /** + * The interface is used when configuration opens as single configuration in dialog. + */ + interface SingleEditorConfiguration { + /** + * Override to set default initial size of the window. + * + * @return initial window size + */ + @NotNull Dimension getDialogInitialSize(); + } + /** * Ask opened configurable to focus on a control with a specified label. * It could be a tab name, name of the tree item, checkbox label, etc. diff --git a/platform/platform-impl/api-dump-unreviewed.txt b/platform/platform-impl/api-dump-unreviewed.txt index 540529e6b17d..ffbbe8a2d528 100644 --- a/platform/platform-impl/api-dump-unreviewed.txt +++ b/platform/platform-impl/api-dump-unreviewed.txt @@ -3597,10 +3597,12 @@ e:com.intellij.ide.plugins.PluginEnabledState f:com.intellij.ide.plugins.PluginHostsConfigurable - com.intellij.openapi.options.Configurable - com.intellij.openapi.options.Configurable$NoScroll +- com.intellij.openapi.options.Configurable$SingleEditorConfiguration - ():V - apply():V - createComponent():javax.swing.JComponent - disposeUIResources():V +- getDialogInitialSize():java.awt.Dimension - getDisplayName():java.lang.String - isModified():Z - reset():V @@ -9744,6 +9746,7 @@ c:com.intellij.openapi.options.newEditor.SettingsDialog - p:getDimensionServiceKey():java.lang.String - f:getEditor():com.intellij.openapi.options.newEditor.AbstractEditor - p:getHelpId():java.lang.String +- getInitialSize():java.awt.Dimension - getPreferredFocusedComponent():javax.swing.JComponent - p:getStyle():com.intellij.openapi.ui.DialogWrapper$DialogStyle - p:setHelpTooltip(javax.swing.JButton):V diff --git a/platform/platform-impl/src/com/intellij/ide/plugins/PluginHostsConfigurable.java b/platform/platform-impl/src/com/intellij/ide/plugins/PluginHostsConfigurable.java index a94cce5a8fa4..57fa2ee62f63 100644 --- a/platform/platform-impl/src/com/intellij/ide/plugins/PluginHostsConfigurable.java +++ b/platform/platform-impl/src/com/intellij/ide/plugins/PluginHostsConfigurable.java @@ -38,7 +38,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -public final class PluginHostsConfigurable implements Configurable.NoScroll, Configurable { +public final class PluginHostsConfigurable implements Configurable.NoScroll, Configurable, Configurable.SingleEditorConfiguration { private final ListTableModel myModel = new ListTableModel<>() { @Override public void addRow() { @@ -173,7 +173,7 @@ public final class PluginHostsConfigurable implements Configurable.NoScroll, Con withCellComponentProvider(CellComponentProvider.forTable(myTable)). installOn(myTable); - return ToolbarDecorator.createDecorator(myTable).disableUpDownActions().setMinimumSize(JBUI.size(470, 220)).createPanel(); + return ToolbarDecorator.createDecorator(myTable).disableUpDownActions().createPanel(); } @Override @@ -275,6 +275,11 @@ public final class PluginHostsConfigurable implements Configurable.NoScroll, Con } } + @Override + public @NotNull Dimension getDialogInitialSize() { + return JBUI.DialogSizes.medium(); + } + private static @NotNull String correctRepositoryRule(@NotNull String input) { if (VirtualFileManager.extractProtocol(input) == null) { return VirtualFileManager.constructUrl(URLUtil.HTTP_PROTOCOL, input); diff --git a/platform/platform-impl/src/com/intellij/ide/plugins/certificates/PluginCertificateManager.kt b/platform/platform-impl/src/com/intellij/ide/plugins/certificates/PluginCertificateManager.kt index 895a4fefaf5f..add83db6eb95 100644 --- a/platform/platform-impl/src/com/intellij/ide/plugins/certificates/PluginCertificateManager.kt +++ b/platform/platform-impl/src/com/intellij/ide/plugins/certificates/PluginCertificateManager.kt @@ -5,6 +5,7 @@ import com.intellij.ide.IdeBundle import com.intellij.openapi.fileChooser.FileChooser import com.intellij.openapi.options.BoundConfigurable import com.intellij.openapi.options.Configurable +import com.intellij.openapi.options.Configurable.SingleEditorConfiguration import com.intellij.openapi.options.ConfigurationException import com.intellij.openapi.ui.DialogPanel import com.intellij.openapi.ui.Messages @@ -22,6 +23,7 @@ import com.intellij.util.ui.JBDimension import com.intellij.util.ui.JBUI import com.intellij.util.ui.UIUtil import java.awt.CardLayout +import java.awt.Dimension import java.security.cert.X509Certificate import javax.swing.JPanel import javax.swing.tree.TreeSelectionModel @@ -30,7 +32,7 @@ class PluginCertificateManager : BoundConfigurable( IdeBundle.message("plugin.manager.custom.certificates"), "plugin.certificates" - ), Configurable.NoScroll, CertificateListener { + ), Configurable.NoScroll, CertificateListener, SingleEditorConfiguration { private val myTree: Tree = Tree() @@ -154,7 +156,6 @@ class PluginCertificateManager : showCard(getCardName(certificate)) } } - myRootPanel.minimumSize = JBUI.size(500, 260) } private fun chooseFileAndAdd() { @@ -216,4 +217,5 @@ class PluginCertificateManager : myDetailsPanel.add(scrollPane, uniqueName) } + override fun getDialogInitialSize(): Dimension = JBUI.DialogSizes.medium() } diff --git a/platform/platform-impl/src/com/intellij/openapi/options/newEditor/AbstractEditor.kt b/platform/platform-impl/src/com/intellij/openapi/options/newEditor/AbstractEditor.kt index aef9d56a6f74..f63bdb1b2d63 100644 --- a/platform/platform-impl/src/com/intellij/openapi/options/newEditor/AbstractEditor.kt +++ b/platform/platform-impl/src/com/intellij/openapi/options/newEditor/AbstractEditor.kt @@ -12,6 +12,7 @@ import org.jetbrains.annotations.ApiStatus import org.jetbrains.annotations.NonNls import java.awt.AWTEvent import java.awt.BorderLayout +import java.awt.Dimension import javax.swing.Action import javax.swing.JComponent import javax.swing.JPanel @@ -51,4 +52,6 @@ abstract class AbstractEditor internal constructor(parent: Disposable) : JPanel( protected open fun cancel(source: AWTEvent?): Boolean = true protected abstract fun getPreferredFocusedComponent(): JComponent? + + open fun getDialogInitialSize(): Dimension? = null } diff --git a/platform/platform-impl/src/com/intellij/openapi/options/newEditor/SettingsDialog.java b/platform/platform-impl/src/com/intellij/openapi/options/newEditor/SettingsDialog.java index 6fe9542f842b..8dce9a836ceb 100644 --- a/platform/platform-impl/src/com/intellij/openapi/options/newEditor/SettingsDialog.java +++ b/platform/platform-impl/src/com/intellij/openapi/options/newEditor/SettingsDialog.java @@ -180,6 +180,11 @@ public class SettingsDialog extends DialogWrapper implements UiCompatibleDataPro return dimensionServiceKey; } + @Override + public @Nullable Dimension getInitialSize() { + return editor.getDialogInitialSize(); + } + @Override public JComponent getPreferredFocusedComponent() { return editor.getPreferredFocusedComponent(); diff --git a/platform/platform-impl/src/com/intellij/openapi/options/newEditor/SingleSettingEditor.java b/platform/platform-impl/src/com/intellij/openapi/options/newEditor/SingleSettingEditor.java index 129af031488e..2c00c04ecf48 100644 --- a/platform/platform-impl/src/com/intellij/openapi/options/newEditor/SingleSettingEditor.java +++ b/platform/platform-impl/src/com/intellij/openapi/options/newEditor/SingleSettingEditor.java @@ -5,6 +5,7 @@ import com.intellij.openapi.Disposable; import com.intellij.openapi.options.Configurable; import com.intellij.ui.scale.JBUIScale; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.Nullable; import java.awt.*; import java.util.HashMap; @@ -23,12 +24,17 @@ public final class SingleSettingEditor extends ConfigurableEditor { }; private final Map myControllers = new HashMap<>(); private ConfigurableController myLastController; + private Dimension myDialogInitSize; SingleSettingEditor(Disposable parent, Configurable configurable) { super(parent); add(myBanner, BorderLayout.NORTH); myBanner.setVisible(false); init(configurable, false); + + if (configurable instanceof Configurable.SingleEditorConfiguration singleEditorConfiguration) { + myDialogInitSize = singleEditorConfiguration.getDialogInitialSize(); + } } @Override @@ -46,4 +52,9 @@ public final class SingleSettingEditor extends ConfigurableEditor { myBanner.setVisible(myBanner.canShow()); } + + @Override + public @Nullable Dimension getDialogInitialSize() { + return myDialogInitSize; + } } \ No newline at end of file