Beginnings of a collapsible list class. Presently it doesn't provide UI
elements to collapse and expand. git-svn-id: https://samskivert.googlecode.com/svn/trunk@648 6335cc39-0255-0410-8fd6-9bcaacd3b74c
This commit is contained in:
@@ -0,0 +1,82 @@
|
|||||||
|
//
|
||||||
|
// $Id: CollapsibleList.java,v 1.1 2002/03/12 17:17:38 mdb Exp $
|
||||||
|
|
||||||
|
package com.samskivert.swing;
|
||||||
|
|
||||||
|
import javax.swing.JLabel;
|
||||||
|
import javax.swing.JList;
|
||||||
|
import javax.swing.JPanel;
|
||||||
|
import javax.swing.ListModel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Displays a list of components in sections (with section headers) that
|
||||||
|
* can be collapsed. Each section of a list uses a {@link JList} instance
|
||||||
|
* to render the section elements.
|
||||||
|
*/
|
||||||
|
public class CollapsibleList extends JPanel
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Constructs an empty collapsible list.
|
||||||
|
*/
|
||||||
|
public CollapsibleList ()
|
||||||
|
{
|
||||||
|
// set up our layout manager
|
||||||
|
VGroupLayout gl = new VGroupLayout(VGroupLayout.NONE);
|
||||||
|
gl.setJustification(VGroupLayout.TOP);
|
||||||
|
gl.setOffAxisJustification(VGroupLayout.LEFT);
|
||||||
|
setLayout(gl);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs a collapsible list with the supplied section labels and
|
||||||
|
* models.
|
||||||
|
*/
|
||||||
|
public CollapsibleList (String[] sections, ListModel[] models)
|
||||||
|
{
|
||||||
|
this(); // set up our layout manager
|
||||||
|
|
||||||
|
for (int i = 0; i < sections.length; i++) {
|
||||||
|
addSection(sections[i], models[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the number of sections.
|
||||||
|
*/
|
||||||
|
public int getSectionCount ()
|
||||||
|
{
|
||||||
|
return getComponentCount()/2;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a section to this collapsible list.
|
||||||
|
*
|
||||||
|
* @param label the title of the section.
|
||||||
|
* @param model the list model to use for the new section.
|
||||||
|
*
|
||||||
|
* @return the index of the newly added section.
|
||||||
|
*/
|
||||||
|
public int addSection (String label, ListModel model)
|
||||||
|
{
|
||||||
|
add(new JLabel(label));
|
||||||
|
add(new JList(model));
|
||||||
|
return getSectionCount()-1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the list object associated with the specified section.
|
||||||
|
*/
|
||||||
|
public JList getSectionList (int index)
|
||||||
|
{
|
||||||
|
return (JList)getComponent(index*2+1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Toggles the collapsed state of the specified section.
|
||||||
|
*/
|
||||||
|
public void toggleCollapsed (int index)
|
||||||
|
{
|
||||||
|
JList list = getSectionList(index);
|
||||||
|
list.setVisible(!list.isVisible());
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user