diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/BranchesPanel.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/BranchesPanel.java index a9a4dcc03827..92eadfd6f128 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/BranchesPanel.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/BranchesPanel.java @@ -72,7 +72,7 @@ public class BranchesPanel extends JPanel { @Override protected void paintComponent(Graphics g) { - myRefPositions = myRefPainter.draw((Graphics2D)g, myRefs, 0); + myRefPositions = myRefPainter.draw((Graphics2D)g, myRefs, 0, getWidth()); } public void rebuild() { 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 e235b95ce5c9..c35459c4f457 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 @@ -182,7 +182,8 @@ class DetailsPanel extends JPanel implements ListSelectionListener { @Override protected void paintComponent(Graphics g) { - myRefPainter.draw((Graphics2D)g, myRefs, 0); + // TODO when the right margin reaches, draw on the second line + myRefPainter.draw((Graphics2D)g, myRefs, 0, getWidth()); } void setRefs(@NotNull List refs) { diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/render/GraphCommitCellRender.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/render/GraphCommitCellRender.java index 798ff9f1437f..200063f6ac86 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/render/GraphCommitCellRender.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/render/GraphCommitCellRender.java @@ -90,7 +90,7 @@ public class GraphCommitCellRender implements TableCellRenderer { VirtualFile root = refs.iterator().next().getRoot(); // all refs are from the same commit => they have the same root refs = myDataHolder.getLogProvider(root).getReferenceManager().sort(refs); } - refPainter.draw(g2, refs, padding); + refPainter.draw(g2, refs, padding, -1); // TODO think how to behave if there are too many refs here (even if tags are collapsed) g.drawImage(image, 0, 0, null); } diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/render/RefPainter.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/render/RefPainter.java index 7fbe3041e3c3..759f568793a7 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/render/RefPainter.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/render/RefPainter.java @@ -103,7 +103,7 @@ public class RefPainter { return Math.round(p); } - public Map draw(@NotNull Graphics2D g2, @NotNull List refs, int startPadding) { + public Map draw(@NotNull Graphics2D g2, @NotNull List refs, int startPadding, int maxWidth) { float currentPadding = startPadding; g2.setFont(DEFAULT_FONT); g2.setStroke(new BasicStroke(1.5f)); @@ -114,6 +114,9 @@ public class RefPainter { int x = draw(g2, ref, (int)currentPadding); positions.put(x, ref); currentPadding += paddingStr(ref.getName(), renderContext); + if (maxWidth > 0 && x >= maxWidth) { + break; + } } return positions; }