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}