code: void setWorkbenchLayout(Layout layout) {
  		validateNotNull(layout, "layout");
  
  		if (this.layout == layout) {
  			return;
  		}
  
  		requestTabIndex = getCurrentRequestTabIndex();
  
  		Layout previousLayout = this.layout;
  		this.layout = layout;
  
  		componentMaximiser.unmaximiseComponent();
  		removeAll();
  
  		List<AbstractPanel> visiblePanels;
  		switch (layout) {
  		case FULL:
  			visiblePanels = getTabbedStatus().getVisiblePanels();
  			getTabbedStatus().hideAllTabs();
  			visiblePanels.addAll(getTabbedWork().getVisiblePanels());
  			getTabbedWork().hideAllTabs();
  			visiblePanels.addAll(getTabbedSelect().getVisiblePanels());
  			getTabbedSelect().hideAllTabs();
  			getTabbedFull().setVisiblePanels(visiblePanels);
  			updateFullLayout();
  			this.add(getFullLayoutPanel());
  			break;
  		case EXPAND_SELECT:
  		case EXPAND_STATUS:
  		default:
  			this.add(layout == Layout.EXPAND_STATUS ? createStatusPanelsSplit() : createSelectPanelsSplit());
  
  			if (previousLayout == Layout.FULL) {
  				visiblePanels = getTabbedFull().getVisiblePanels();
  				getTabbedFull().hideAllTabs();
  				getTabbedStatus().setVisiblePanels(visiblePanels);
  				getTabbedWork().setVisiblePanels(visiblePanels);
  				getTabbedSelect().setVisiblePanels(visiblePanels);
  
  				setResponsePanelPosition(responsePanelPosition);
  			}
  			break;
  		}
  
  		this.validate();
  		this.repaint();
  	}
docs: Sets the layout of the workbench panel.
  
  @param layout the layout to set
  @throws IllegalArgumentException if the given parameter is {@code null}.
  @since 2.5.0