private void onStopProcess(@NotNull ProcessTreeNode node) {
    String processId = node.getId();
    ProcessTreeNode parentNode = node.getParent();

    int processIndex = view.getNodeIndex(processId);
    if (processIndex < 0) {
      return;
    }

    int countWidgets = terminals.size() + consoles.size();
    if (countWidgets == 1) {
      view.hideProcessOutput(processId);
      removeChildFromMachineNode(node, parentNode);
      return;
    }

    int neighborIndex = processIndex > 0 ? processIndex - 1 : processIndex + 1;
    ProcessTreeNode neighborNode = view.getNodeByIndex(neighborIndex);
    String neighborNodeId = neighborNode.getId();

    removeChildFromMachineNode(node, parentNode);
    view.selectNode(neighborNode);
    resfreshStopButtonState(neighborNodeId);
    view.showProcessOutput(neighborNodeId);
    view.hideProcessOutput(processId);
  }
  @Override
  public void onWorkspaceStopped(WorkspaceStoppedEvent event) {
    for (ProcessTreeNode processTreeNode : rootNode.getChildren()) {
      if (processTreeNode.getType() == MACHINE_NODE) {
        onCloseTerminal(processTreeNode);
        processTreeNode.setRunning(false);
        if (processTreeNode.getChildren() != null) {
          processTreeNode.getChildren().clear();
        }
      }
    }

    rootNode.getChildren().clear();
    rootChildren.clear();

    view.clear();
    view.selectNode(null);
    view.setProcessesData(rootNode);
  }
 private void addChildToMachineNode(ProcessTreeNode childNode, ProcessTreeNode machineTreeNode) {
   machineTreeNode.getChildren().add(childNode);
   view.setProcessesData(rootNode);
   view.selectNode(childNode);
 }