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}