/** {@inheritDoc} */
  @Override
  public void onProjectClosed(@NotNull ProjectActionEvent projectActionEvent) {
    partStack.hidePart(this);

    selectionManager.setRunner(null);

    templateContainer.setVisible(false);

    view.setEnableRunButton(false);
    view.setEnableReRunButton(false);
    view.setEnableStopButton(false);
    view.setEnableLogsButton(false);

    view.setApplicationURl(null);
    view.setDebugPort(null);
    view.setTimeout(TIMER_STUB);

    history.clear();
    runnerActions.clear();

    runnerCounter.reset();
    terminalContainer.reset();
    consoleContainer.reset();
    propertiesContainer.reset();

    getRunningProcessAction.stop();
    propertiesContainer.show((Runner) null);
  }
  private void runnerSelected() {
    selectedRunner = selectionManager.getRunner();
    if (selectedRunner == null) {
      showNoRunnerMessage(true);

      propertiesContainer.reset();
      return;
    }

    showNoRunnerMessage(false);

    if (SPLITTER_OFF.equals(panelState.getSplitterState())) {
      rightPropertiesContainer.showTab(selectedRunner.getActiveTab());
    }

    history.selectRunner(selectedRunner);

    if (locale.runnerTabTerminal().equals(selectedRunner.getActiveTab())
        || SPLITTER_ON.equals(panelState.getSplitterState())) {
      terminalContainer.update(selectedRunner);
    }

    update(selectedRunner);

    updateRunnerTimer();
  }
  /** {@inheritDoc} */
  @Override
  public void onStopButtonClicked() {
    terminalContainer.removeTerminalUrl(selectedRunner);

    stopRunner(selectedRunner);

    view.updateMoreInfoPopup(selectedRunner);
  }
 private void showNoRunnerMessage(boolean isVisible) {
   terminalContainer.setVisibleNoRunnerLabel(isVisible);
   consoleContainer.setVisibleNoRunnerLabel(isVisible);
   propertiesContainer.setVisibleNoRunnerLabel(isVisible);
 }