diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/CommitPanel.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/CommitPanel.java index debddae6233f..281b2898ed9c 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/CommitPanel.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/CommitPanel.java @@ -26,6 +26,7 @@ import com.intellij.ui.ColorUtil; import com.intellij.ui.UI; import com.intellij.ui.components.JBLabel; import com.intellij.ui.components.JBPanel; +import com.intellij.ui.components.JBScrollPane; import com.intellij.ui.components.panels.Wrapper; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.text.DateFormatUtil; @@ -87,17 +88,7 @@ class CommitPanel extends JBPanel { myDataPanel = new DataPanel(myLogData.getProject()); myBranchesPanel = new BranchesPanel(); - JBPanel rootPanel = new JBPanel(new FlowLayout(FlowLayout.RIGHT, 0, 0)) { - @Override - public Color getBackground() { - return getCommitDetailsBackground(); - } - }; - rootPanel.setOpaque(false); - rootPanel.setBorder(JBUI.Borders.emptyRight(5)); - rootPanel.add(myRootPanel); - - add(rootPanel); + add(myRootPanel); add(myDataPanel); add(myReferencesPanel); add(myBranchesPanel); @@ -582,6 +573,7 @@ class CommitPanel extends JBPanel { } private static class RootPanel extends JPanel { + private static final int RIGHT_BORDER = 5; @NotNull private final TextLabelPainter myLabelPainter; @NotNull private String myText = ""; @NotNull private Color myColor = getCommitDetailsBackground(); @@ -620,7 +612,22 @@ class CommitPanel extends JBPanel { @Override protected void paintComponent(Graphics g) { if (!myText.isEmpty()) { - myLabelPainter.paint((Graphics2D)g, myText, 0, 0, myColor); + Dimension painterSize = myLabelPainter.calculateSize(myText, getFontMetrics(getLabelFont())); + JBScrollPane scrollPane = UIUtil.getParentOfType(JBScrollPane.class, this); + int width; + if (scrollPane == null) { + width = getWidth(); + } + else { + Rectangle rect = scrollPane.getViewport().getViewRect(); + JScrollBar verticalScrollBar = scrollPane.getVerticalScrollBar(); + width = rect.x + rect.width; + if (verticalScrollBar.isVisible()) { + width -= verticalScrollBar.getWidth(); + } + } + getWidth(); + myLabelPainter.paint((Graphics2D)g, myText, width - painterSize.width - JBUI.scale(RIGHT_BORDER), 0, myColor); } } @@ -629,10 +636,16 @@ class CommitPanel extends JBPanel { return getCommitDetailsBackground(); } + @Override + public Dimension getMinimumSize() { + return getPreferredSize(); + } + @Override public Dimension getPreferredSize() { if (myText.isEmpty()) return new JBDimension(0, TOP_BORDER); - return myLabelPainter.calculateSize(myText, getFontMetrics(getLabelFont())); + Dimension size = myLabelPainter.calculateSize(myText, getFontMetrics(getLabelFont())); + return new Dimension(size.width + JBUI.scale(RIGHT_BORDER), size.height); } @Override diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/DetailsPanel.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/DetailsPanel.java index 86e85d9734d9..5e03b226c547 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/DetailsPanel.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/DetailsPanel.java @@ -23,6 +23,7 @@ import com.intellij.openapi.editor.colors.EditorColorsScheme; import com.intellij.openapi.progress.util.ProgressWindow; import com.intellij.openapi.roots.ui.componentsList.components.ScrollablePanel; import com.intellij.openapi.ui.OnePixelDivider; +import com.intellij.openapi.ui.VerticalFlowLayout; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vcs.history.VcsHistoryUtil; import com.intellij.ui.IdeBorderFactory; @@ -33,10 +34,10 @@ import com.intellij.ui.components.JBScrollPane; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.ui.JBUI; import com.intellij.util.ui.StatusText; +import com.intellij.util.ui.UIUtil; import com.intellij.vcs.log.VcsFullCommitDetails; import com.intellij.vcs.log.VcsRef; import com.intellij.vcs.log.data.VcsLogData; -import com.intellij.vcs.log.data.VisiblePack; import com.intellij.vcs.log.ui.VcsLogColorManager; import org.jetbrains.annotations.NotNull; @@ -88,7 +89,14 @@ class DetailsPanel extends JPanel implements EditorColorsListener { @Override public Dimension getPreferredSize() { Dimension preferredSize = super.getPreferredSize(); - return new Dimension(preferredSize.width, Math.max(preferredSize.height, myScrollPane.getViewport().getHeight())); + int height = Math.max(preferredSize.height, myScrollPane.getViewport().getHeight()); + JBScrollPane scrollPane = UIUtil.getParentOfType(JBScrollPane.class, this); + if (scrollPane == null || getScrollableTracksViewportWidth()) { + return new Dimension(preferredSize.width, height); + } + else { + return new Dimension(Math.max(preferredSize.width, scrollPane.getViewport().getWidth()), height); + } } @Override @@ -112,7 +120,7 @@ class DetailsPanel extends JPanel implements EditorColorsListener { return StringUtil.isNotEmpty(getText()); } }; - myMainContentPanel.setLayout(new BoxLayout(myMainContentPanel, BoxLayout.Y_AXIS)); + myMainContentPanel.setLayout(new VerticalFlowLayout(VerticalFlowLayout.TOP, 0, 0, true, false)); myMainContentPanel.setOpaque(false); myScrollPane.setViewportView(myMainContentPanel);