sclass CollapsibleLeftPanel is Swingable { S sidePanelName; JComponent sideComponent; JSplitPane splitPane; bool collapsed; SingleComponentPanel spcSide = singleComponentPanel(); *(S *sidePanelName, JComponent *sideComponent, JComponent mainComponent, bool *collapsed) { updateScpSide(); splitPane = jhsplit(0.25, scpSide, mainComponent); } void setCollapsed(bool collapsed) { if (this.collapsed != collapsed) { this.collapsed = collapsed; updateScpSide(); } } void updateScpSide { scpSide.set(collapsed ? collapsedComponent() : wrappedSideComponent()); } visual splitPane; }