Sit the info panel's link in the viewport's corner
It overlapped the scroll bar; the viewport is what the scroll bars have already been taken out of. The layered pane also has to report a size now, or the split pane above it has nothing to size the panel from. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -16,7 +16,7 @@ import javax.swing.JScrollPane;
|
|||||||
import java.awt.BorderLayout;
|
import java.awt.BorderLayout;
|
||||||
import java.awt.Cursor;
|
import java.awt.Cursor;
|
||||||
import java.awt.Dimension;
|
import java.awt.Dimension;
|
||||||
import java.awt.Insets;
|
import java.awt.Rectangle;
|
||||||
import java.awt.event.MouseAdapter;
|
import java.awt.event.MouseAdapter;
|
||||||
import java.awt.event.MouseEvent;
|
import java.awt.event.MouseEvent;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@@ -41,9 +41,6 @@ public final class InfoPanel extends JPanel {
|
|||||||
void setPanelHidden(boolean hidden);
|
void setPanelHidden(boolean hidden);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Gap between the floating link and the panel's edges. */
|
|
||||||
private static final int TOGGLE_MARGIN = 6;
|
|
||||||
|
|
||||||
private final JEditorPane pane = HtmlStyles.pane("font-family:sans-serif; font-size:11px;");
|
private final JEditorPane pane = HtmlStyles.pane("font-family:sans-serif; font-size:11px;");
|
||||||
private final JScrollPane scroll = new JScrollPane(pane);
|
private final JScrollPane scroll = new JScrollPane(pane);
|
||||||
/** Floats over the bottom-right corner of the details, out of the text's way. */
|
/** Floats over the bottom-right corner of the details, out of the text's way. */
|
||||||
@@ -83,10 +80,25 @@ public final class InfoPanel extends JPanel {
|
|||||||
@Override
|
@Override
|
||||||
public void doLayout() {
|
public void doLayout() {
|
||||||
scroll.setBounds(0, 0, getWidth(), getHeight());
|
scroll.setBounds(0, 0, getWidth(), getHeight());
|
||||||
Insets in = scroll.getInsets();
|
// Lay the scroll pane out first: the link goes in the corner of the
|
||||||
|
// viewport, which is where the scroll bars have already been taken out.
|
||||||
|
scroll.doLayout();
|
||||||
|
Rectangle view = scroll.getViewport().getBounds();
|
||||||
Dimension d = toggle.getPreferredSize();
|
Dimension d = toggle.getPreferredSize();
|
||||||
toggle.setBounds(getWidth() - in.right - TOGGLE_MARGIN - d.width,
|
toggle.setBounds(view.x + view.width - d.width, view.y + view.height - d.height,
|
||||||
getHeight() - in.bottom - TOGGLE_MARGIN - d.height, d.width, d.height);
|
d.width, d.height);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Without a layout manager we have no size of our own, and the split pane
|
||||||
|
// above us sizes the panel from it.
|
||||||
|
@Override
|
||||||
|
public Dimension getPreferredSize() {
|
||||||
|
return scroll.getPreferredSize();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Dimension getMinimumSize() {
|
||||||
|
return scroll.getMinimumSize();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
layers.add(scroll, JLayeredPane.DEFAULT_LAYER);
|
layers.add(scroll, JLayeredPane.DEFAULT_LAYER);
|
||||||
|
|||||||
Reference in New Issue
Block a user