package uva.qls.interpreter.gui.elements; import java.awt.Component; import java.awt.Dimension; import java.awt.GridLayout; import javax.swing.BorderFactory; import javax.swing.JPanel; import javax.swing.JScrollPane; public class UIScrollView extends JPanel{ static final long serialVersionUID = 42L; private UIContainer scrollViewContainer; private JScrollPane scrollView; private GridLayout scrollLayout; public UIScrollView(Size frameSize){ this.scrollViewContainer = new UIContainer(frameSize); this.scrollView = new JScrollPane(this.scrollViewContainer); this.initSelf(frameSize); } private void initSelf(Size frameSize){ this.setSize(frameSize.getHeight(), frameSize.getWidth()); this.setBorder(BorderFactory.createEmptyBorder()); this.initScrollView(frameSize); this.add(this.scrollView); } private void initScrollView(Size frameSize){ this.scrollView.setPreferredSize(new Dimension(frameSize.getWidth() , frameSize.getHeight()+25)); this.scrollView.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); this.scrollView.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); this.scrollView.setBorder(BorderFactory.createEmptyBorder()); this.scrollLayout = new GridLayout(0,1); } public void addComponent(Component obj){ this.scrollLayout.setVgap(1); this.scrollLayout = new GridLayout(this.scrollLayout.getRows()+1, 1); this.scrollViewContainer.setLayout(this.scrollLayout); this.scrollViewContainer.add(obj); } public JPanel getPanel(){ return this.scrollViewContainer; } public JScrollPane getScrollView(){ return this.scrollView; } @Override public void revalidate(){ if (this.scrollViewContainer != null) this.scrollViewContainer.setLayout(this.scrollLayout); } }