/* Copyright (C) 2003-2011 JabRef contributors. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ package net.sf.jabref; import java.awt.*; import java.util.Collection; import javax.swing.Box; import javax.swing.JPanel; import javax.swing.JScrollPane; /** * The side pane is displayed at the right side of JabRef and shows instances of * SidePaneComponents, for instance the GroupSelector, or the SearchManager2. * * @version $Revision$ ($Date$) * */ public class SidePane extends JPanel { final Dimension PREFERRED_SIZE = new Dimension(GUIGlobals.SPLIT_PANE_DIVIDER_LOCATION, 100); GridBagLayout gridBagLayout = new GridBagLayout(); GridBagConstraints constraint = new GridBagConstraints(); JPanel mainPanel = new JPanel(); public SidePane() { // For debugging the border: // setBorder(BorderFactory.createLineBorder(Color.BLUE)); setLayout(new BorderLayout()); mainPanel.setLayout(gridBagLayout); // Initialize constraint constraint.anchor = GridBagConstraints.NORTH; constraint.fill = GridBagConstraints.BOTH; constraint.gridwidth = GridBagConstraints.REMAINDER; constraint.insets = new Insets(1, 1, 1, 1); constraint.gridheight = 1; constraint.weightx = 1; /* * Added Scrollpane to fix: */ JScrollPane sp = new JScrollPane(mainPanel, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); sp.setBorder(null); // To remove the scroll panel just change sp to mainPanel and comment // the JScrollPane declaration super.add(sp); } public void setComponents(Collection<SidePaneComponent> comps) { mainPanel.removeAll(); constraint.weighty = 0; for (Component c : comps){ gridBagLayout.setConstraints(c, constraint); mainPanel.add(c); } constraint.weighty = 1; Component bx = Box.createVerticalGlue(); gridBagLayout.setConstraints(bx, constraint); mainPanel.add(bx); revalidate(); repaint(); } public void remove(Component c) { mainPanel.remove(c); } public Dimension getMaximumSize() { return getPreferredSize(); } public Dimension getPreferredSize() { return PREFERRED_SIZE; } }