From 17c439cff08386f345c94f77b5b446fbcdd936e4 Mon Sep 17 00:00:00 2001 From: Alexey Pegov Date: Mon, 5 Dec 2011 18:33:18 +0400 Subject: [PATCH] ui: fix editor border for tabless mode --- .../openapi/editor/impl/EditorImpl.java | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java index 0378c3835c03..238cc7a0472e 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java @@ -53,6 +53,7 @@ import com.intellij.openapi.editor.impl.softwrap.SoftWrapHelper; import com.intellij.openapi.editor.markup.*; import com.intellij.openapi.fileEditor.FileDocumentManager; import com.intellij.openapi.fileEditor.ex.IdeDocumentHistory; +import com.intellij.openapi.fileEditor.impl.EditorsSplitters; import com.intellij.openapi.options.FontSize; import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.project.Project; @@ -65,6 +66,7 @@ import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.openapi.wm.IdeGlassPane; import com.intellij.ui.GuiUtils; import com.intellij.ui.LightweightHint; +import com.intellij.ui.SideBorder; import com.intellij.ui.components.JBScrollBar; import com.intellij.ui.components.JBScrollPane; import com.intellij.util.Alarm; @@ -6119,6 +6121,9 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi @Override public void setupCorners() { super.setupCorners(); + + setBorder(new TablessBorder()); + setCorner(getVerticalScrollbarOrientation() == EditorEx.VERTICAL_SCROLLBAR_LEFT ? LOWER_RIGHT_CORNER : LOWER_LEFT_CORNER, new JPanel() { @@ -6146,6 +6151,38 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi }); } } + + private static class TablessBorder extends SideBorder { + private TablessBorder() { + super(UIUtil.getBorderColor(), SideBorder.ALL); + } + + @Override + public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) { + if (c instanceof JComponent) { + Insets insets = ((JComponent)c).getInsets(); + if (insets.left > 0) { + super.paintBorder(c, g, x, y, width, height); + } else { + g.setColor(UIUtil.getPanelBackground()); + g.drawLine(x, y, x + width, y); + g.setColor(new Color(0, 0, 0, 90)); + g.drawLine(x, y, x + width, y); + } + } + } + + @Override + public Insets getBorderInsets(Component c) { + Container splitters = SwingUtilities.getAncestorOfClass(EditorsSplitters.class, c); + return splitters == null ? super.getBorderInsets(c) : new Insets(1, 0, 0, 0); + } + + @Override + public boolean isBorderOpaque() { + return true; + } + } private class MyHeaderPanel extends JPanel { private int myOldHeight = 0;