public void setCurrentPanel(Object wizardPanelControllerId) {
    WizardPanelController controller = _panelControllersById.get(wizardPanelControllerId);
    if (controller == null)
      throw new IllegalStateException("unknown WizardPanelController id: "
          + wizardPanelControllerId);
    if (controller == _currentController)
      return;
    WizardPanelController oldController = _currentController;
    if (oldController != null) {
      oldController.willSetVisible(this, false);
    }
    if (controller != null) {
      controller.willSetVisible(this, true);
    }
    _currentController = controller;
    _changes.firePropertyChange(PROPERTY_CURRENT_PANEL, oldController,
        _currentController);
    if (oldController != null) {
      oldController.didSetVisible(this, false);
    }
    if (_currentController != null) {
      setBackButtonEnabled(_currentController.getBackPanelId() != null);
      setNextButtonEnabled(_currentController.getNextPanelId() != null);
      _currentController.didSetVisible(this, true);
    }
  }