+++ /dev/null
-package tim.prune.gui;
-
-import java.awt.Component;
-
-import javax.swing.JSplitPane;
-import javax.swing.SwingUtilities;
-
-/**
- * Class to control the showing and hiding of the sidebars
- * (left panel, right panel and profile display)
- */
-public class SidebarController
-{
- /** array of hideable components */
- private Component[] _components = null;
- /** array of splitter panes */
- private JSplitPane[] _splitters = null;
- /** array of splitter positions */
- private int[] _positions = null;
-
-
- /**
- * Constructor
- * @param inComponents array of components to hide/show
- * @param inSplitters array of splitter panes
- */
- public SidebarController(Component[] inComponents, JSplitPane[] inSplitters)
- {
- _components = inComponents;
- _splitters = inSplitters;
- _positions = new int[inSplitters.length];
- }
-
- /**
- * Toggle full screen mode on or off
- */
- public void toggle()
- {
- if (_components != null && _components.length > 0)
- {
- boolean visible = _components[0].isVisible();
- if (visible) {
- // Store divider locations
- for (int i=0; i<_components.length; i++) {
- _positions[i] = _splitters[i].getDividerLocation();
- }
- }
- // Set visibility of components
- for (int i=0; i<_components.length; i++) {
- _components[i].setVisible(!visible);
- }
- // Restore divider locations
- for (int i=0; i<_components.length; i++) {
- if (!visible) {
- _splitters[i].setDividerLocation(_positions[i]);
- }
- }
- // Hiding of panels has to occur in separate thread to update properly
- if (visible) SwingUtilities.invokeLater(new Runnable() {
- public void run() {
- for (int i=0; i<_components.length; i++) {
- _splitters[i].setDividerLocation(i==0?0.0:1.0);
- _splitters[i].invalidate();
- }
- }
- });
- }
- }
-}