private void setStatusLabel(TrainModel trainModel) {
    if (trainModel == null) {
      statusJLabel.setIcon((Icon) null);
      statusJLabel.setToolTipText("");
      return;
    }

    switch (trainModel.getState()) {
      case TrainModel.STATE_RUNNABLE:
        if (trainModel.isBlocked()) {
          statusJLabel.setIcon(blockedIcon);
          statusJLabel.setToolTipText(Resources.get("Track blocked"));
        } else if (trainModel.getTrainMotionModel().isLost()) {
          statusJLabel.setIcon(noRouteIcon);
          statusJLabel.setToolTipText(Resources.get("No route to destination"));
        } else if (trainModel.getTrainMotionModel().isOutOfWater()) {
          statusJLabel.setIcon(outOfWaterIcon);
          statusJLabel.setToolTipText(Resources.get("No water"));
        } else {
          statusJLabel.setIcon((Icon) null);
          statusJLabel.setToolTipText("");
        }
        break;
      case TrainModel.STATE_LOADING:
        statusJLabel.setIcon(loadingIcon);
        statusJLabel.setToolTipText(Resources.get("Loading"));
        break;
      case TrainModel.STATE_UNLOADING:
        statusJLabel.setIcon(unloadingIcon);
        statusJLabel.setToolTipText(Resources.get("Unloading"));
        break;
      default:
        statusJLabel.setIcon((Icon) null);
        statusJLabel.setToolTipText("");
        break;
    }
  }