001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.gui.widgets;
003
004import java.awt.Dimension;
005import java.awt.LayoutManager;
006import java.awt.Rectangle;
007
008import javax.swing.JPanel;
009import javax.swing.JScrollPane;
010import javax.swing.Scrollable;
011
012import org.openstreetmap.josm.gui.util.GuiHelper;
013
014public class VerticallyScrollablePanel extends JPanel implements Scrollable {
015
016    /**
017     * Constructs a new {@code VerticallyScrollablePanel}.
018     */
019    public VerticallyScrollablePanel() {
020        super();
021    }
022
023    public VerticallyScrollablePanel(boolean isDoubleBuffered) {
024        super(isDoubleBuffered);
025    }
026
027    public VerticallyScrollablePanel(LayoutManager layout, boolean isDoubleBuffered) {
028        super(layout, isDoubleBuffered);
029    }
030
031    public VerticallyScrollablePanel(LayoutManager layout) {
032        super(layout);
033    }
034
035    /**
036     * Returns a vertical scrollable {@code JScrollPane} containing this panel.
037     * @return the vertical scrollable {@code JScrollPane}
038     * @since 6666
039     */
040    public final JScrollPane getVerticalScrollPane() {
041        return GuiHelper.embedInVerticalScrollPane(this);
042    }
043
044    @Override
045    public Dimension getPreferredScrollableViewportSize() {
046        return getPreferredSize();
047    }
048
049    @Override
050    public int getScrollableBlockIncrement(Rectangle arg0, int arg1, int arg2) {
051        return 20;
052    }
053
054    @Override
055    public boolean getScrollableTracksViewportHeight() {
056        return false;
057    }
058
059    @Override
060    public boolean getScrollableTracksViewportWidth() {
061        return true;
062    }
063
064    @Override
065    public int getScrollableUnitIncrement(Rectangle arg0, int arg1, int arg2) {
066        return 10;
067    }
068}