001    // License: GPL. For details, see LICENSE file.
002    package org.openstreetmap.josm.gui.widgets;
003    
004    import java.awt.Dimension;
005    import java.awt.LayoutManager;
006    import java.awt.Rectangle;
007    
008    import javax.swing.JPanel;
009    import javax.swing.JScrollPane;
010    import javax.swing.Scrollable;
011    
012    public 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        public Dimension getPreferredScrollableViewportSize() {
038            return getPreferredSize();
039        }
040    
041        public int getScrollableBlockIncrement(Rectangle arg0, int arg1, int arg2) {
042            return 20;
043        }
044    
045        public boolean getScrollableTracksViewportHeight() {
046            return false;
047        }
048    
049        public boolean getScrollableTracksViewportWidth() {
050            return true;
051        }
052    
053        public int getScrollableUnitIncrement(Rectangle arg0, int arg1, int arg2) {
054            return 10;
055        }
056    }