From 26b587d674a84c323e5ae9d3abb771bd38316828 Mon Sep 17 00:00:00 2001 From: anna Date: Tue, 24 Aug 2010 18:58:28 +0400 Subject: [PATCH] restore preferred width (IDEA-57876) --- .../ProjectNameWithTypeStep.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/ProjectNameWithTypeStep.java b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/ProjectNameWithTypeStep.java index 4ce598cc5afe..89a8e94e8c3e 100644 --- a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/ProjectNameWithTypeStep.java +++ b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/ProjectNameWithTypeStep.java @@ -37,6 +37,8 @@ import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.ui.DocumentAdapter; +import com.intellij.ui.components.JBScrollPane; +import com.intellij.util.IJSwingUtilities; import com.intellij.util.ui.UIUtil; import javax.swing.*; @@ -47,6 +49,7 @@ import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.io.File; +import java.util.List; public class ProjectNameWithTypeStep extends ProjectNameStep { private JEditorPane myModuleDescriptionPane; @@ -145,6 +148,11 @@ public class ProjectNameWithTypeStep extends ProjectNameStep { } }); + final Dimension preferredSize = calcTypeListPreferredSize(ModuleBuilder.getAllBuilders()); + final JBScrollPane pane = IJSwingUtilities.findParentOfType(myTypesList, JBScrollPane.class); + pane.setPreferredSize(preferredSize); + pane.setMinimumSize(preferredSize); + myNamePathComponent.getNameComponent().getDocument().addDocumentListener(new DocumentAdapter() { protected void textChanged(final DocumentEvent e) { if (!myModuleNameChangedByUser) { @@ -244,6 +252,21 @@ public class ProjectNameWithTypeStep extends ProjectNameStep { } } + private Dimension calcTypeListPreferredSize(final List allModuleTypes) { + int width = 0; + int height = 0; + final FontMetrics fontMetrics = myTypesList.getFontMetrics(myTypesList.getFont()); + final int fontHeight = fontMetrics.getMaxAscent() + fontMetrics.getMaxDescent(); + for (final ModuleBuilder type : allModuleTypes) { + final Icon icon = type.getBigIcon(); + final int iconHeight = icon != null ? icon.getIconHeight() : 0; + final int iconWidth = icon != null ? icon.getIconWidth() : 0; + height += Math.max(iconHeight, fontHeight) + 6; + width = Math.max(width, iconWidth + fontMetrics.stringWidth(type.getPresentableName()) + 10); + } + return new Dimension(width, height); + } + private String getDefaultBaseDir(WizardContext wizardContext) { if (wizardContext.isCreatingNewProject()) { return myNamePathComponent.getPath();