public static void main(String[] args) { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception e) { // e.printStackTrace(); } CollapsibleItemsPanel collapsibleItemsPanel = new CollapsibleItemsPanel(createTableItem("Time", 2, 2), createTableItem("Position", 6, 2), createTableItem("Bands", 18, 3)); JFrame frame = new JFrame(CollapsiblePane.class.getSimpleName()); frame.getContentPane().add(new JScrollPane(collapsibleItemsPanel, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER)); frame.pack(); frame.setVisible(true); }
@Override public void doLayout() { int y = 0; int width = getWidth(); Component[] components = getComponents(); for (Component component : components) { Dimension preferredSize = component.getPreferredSize(); component.setBounds(0, y, width, preferredSize.height); y += preferredSize.height; } }
boolean isCollapsiblePaneVisible(int index) { return !collapsibleItemsPanel.isCollapsed(index); }
CollapsibleItemsPanel.Item<JTable> positionItem = CollapsibleItemsPanel.createTableItem("Position", 6, 3); positionItem.getComponent().setModel(positionTableModel); positionItem.getComponent().getColumnModel().getColumn(1).setCellRenderer(pixelValueRenderer); CollapsibleItemsPanel.Item<JTable> timeItem = CollapsibleItemsPanel.createTableItem("Time", 2, 3); timeItem.getComponent().setModel(timeTableModel); timeItem.getComponent().getColumnModel().getColumn(1).setCellRenderer(pixelValueRenderer); CollapsibleItemsPanel.Item<JTable> tiePointGridsItem = CollapsibleItemsPanel.createTableItem("Tie-Point Grids", 0, 3); tiePointGridsItem.getComponent().setModel(tiePointGridsTableModel); tiePointGridsItem.getComponent().getColumnModel().getColumn(1).setCellRenderer(pixelValueRenderer); CollapsibleItemsPanel.Item<JTable> bandsItem = CollapsibleItemsPanel.createTableItem("Bands", 18, 3); bandsItem.getComponent().setModel(bandsTableModel); bandsItem.getComponent().getColumnModel().getColumn(1).setCellRenderer(pixelValueRenderer); CollapsibleItemsPanel.Item<JTable> flagsItem = CollapsibleItemsPanel.createTableItem("Flags", 0, 2); flagsItem.getComponent().setModel(flagsTableModel); flagsItem.getComponent().getColumnModel().getColumn(1).setCellRenderer(flagCellRenderer); collapsibleItemsPanel = new CollapsibleItemsPanel( collapsibleItemsPanel.setCollapsed(POSITION_INDEX, false); collapsibleItemsPanel.setCollapsed(TIME_INDEX, true); collapsibleItemsPanel.setCollapsed(BANDS_INDEX, false); collapsibleItemsPanel.setCollapsed(TIE_POINT_GRIDS_INDEX, true); collapsibleItemsPanel.setCollapsed(FLAGS_INDEX, true); collapsibleItemsPanel.addCollapseListener(new CollapsibleItemsPanel.CollapseListener() { @Override
public CollapsibleItemsPanel(Item... items) { this.items = items; this.toggleButtons = new JToggleButton[items.length]; setLayout(null); collapseListenerList = new ArrayList<>(); for (int i = 0; i < items.length; i++) { button.setIcon(!expand ? COL_ICON : EXP_ICON); if (expand) { notifyExpand(index); } else { notifyCollapse(index); add(panel);
@Override public Dimension getPreferredSize() { int width = 0; int height = 0; Component[] components = getComponents(); for (Component component : components) { Dimension preferredSize = component.getPreferredSize(); width = Math.max(width, preferredSize.width); height += preferredSize.height; } return new Dimension(width, height); }
void clearSelectionInRasterTables() { final JTable bandsTable = (JTable) collapsibleItemsPanel.getItem(BANDS_INDEX).getComponent(); final JTable tiePointGridsTable = (JTable) collapsibleItemsPanel.getItem(TIE_POINT_GRIDS_INDEX).getComponent(); bandsTable.clearSelection(); tiePointGridsTable.clearSelection(); final RasterDataNode raster = modelUpdater.getCurrentRaster(); if (raster != null) { final String rasterName = raster.getName(); if (!selectCurrentRaster(rasterName, bandsTable)) { selectCurrentRaster(rasterName, tiePointGridsTable); } } }