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
012public class VerticallyScrollablePanel extends JPanel implements Scrollable {
013
014    static public JScrollPane embed(VerticallyScrollablePanel panel) {
015        JScrollPane sp = new JScrollPane(panel);
016        sp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
017        sp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
018        return sp;
019    }
020
021    public VerticallyScrollablePanel() {
022        super();
023    }
024
025    public VerticallyScrollablePanel(boolean isDoubleBuffered) {
026        super(isDoubleBuffered);
027    }
028
029    public VerticallyScrollablePanel(LayoutManager layout, boolean isDoubleBuffered) {
030        super(layout, isDoubleBuffered);
031    }
032
033    public VerticallyScrollablePanel(LayoutManager layout) {
034        super(layout);
035    }
036
037    @Override
038    public Dimension getPreferredScrollableViewportSize() {
039        return getPreferredSize();
040    }
041
042    @Override
043    public int getScrollableBlockIncrement(Rectangle arg0, int arg1, int arg2) {
044        return 20;
045    }
046
047    @Override
048    public boolean getScrollableTracksViewportHeight() {
049        return false;
050    }
051
052    @Override
053    public boolean getScrollableTracksViewportWidth() {
054        return true;
055    }
056
057    @Override
058    public int getScrollableUnitIncrement(Rectangle arg0, int arg1, int arg2) {
059        return 10;
060    }
061}