@Override
  public void actionPerformed(ActionEvent ae) {
    String command = ae.getActionCommand();
    switch (command) {
      case VistaGrupos.CREARGRUPO:
        Grupo g;
        try {
          g =
              GrupoService.crearGrupo(
                  Coordinador.getInstance().getSeleccionada(),
                  vista.getNombreGrupo(),
                  vista.getSubgrupoDeComboBox().getSelectedItem().toString());
          // Actualizamos la vista
          vista.añadirGrupoATabla(
              new Object[] {
                g.getId(), g.getNombre(), g.getGrupoId() != null ? g.getGrupoId().getNombre() : null
              });
          Coordinador.getInstance().getControladorPrincipal().cargarSubGruposComboBox();
          vista.limpiarFormularioGrupo();
          Coordinador.getInstance().setEstadoLabel("Grupo creado correctamente", Color.BLUE);
        } catch (InputException ex) {
          Coordinador.getInstance().setEstadoLabel(ex.getMessage(), Color.RED);
        }
        break;
      case VistaGrupos.MODIFICARGRUPO:
        try {
          g =
              GrupoService.modificarGrupo(
                  Coordinador.getInstance().getSeleccionada(),
                  vista.getGrupoSelected(),
                  vista.getNombreGrupo(),
                  vista.getSubgrupoDeComboBox().getSelectedItem().toString());
          // Actualizamos la vista
          vista.añadirGrupoATabla(
              new Object[] {
                g.getId(), g.getNombre(), g.getGrupoId() != null ? g.getGrupoId().getNombre() : ""
              });
          Coordinador.getInstance().getControladorPrincipal().cargarTablaGrupos();
          Coordinador.getInstance().getControladorPrincipal().cargarSubGruposComboBox();
          Coordinador.getInstance().setEstadoLabel("Grupo modificado correctamente", Color.BLUE);
        } catch (InputException ex) {
          Coordinador.getInstance().setEstadoLabel(ex.getMessage(), Color.RED);
        }

        break;
      case VistaGrupos.ELIMINARGRUPO:
        if (vista.getGrupoSelected() != -1) {
          int confirmDialog =
              JOptionPane.showConfirmDialog(
                  null,
                  "¿Está seguro de que desea eliminar el grupo seleccionado?",
                  "Aviso",
                  JOptionPane.YES_NO_OPTION);
          if (confirmDialog == JOptionPane.YES_OPTION) {
            try {
              GrupoService.eliminarGrupo(
                  Coordinador.getInstance().getSeleccionada(), vista.getGrupoSelected());
              // Actualizamos la vista
              vista.limpiarFormularioGrupo();
              Coordinador.getInstance().getControladorPrincipal().cargarSubGruposComboBox();
              Coordinador.getInstance().getControladorPrincipal().cargarTablaGrupos();
              Coordinador.getInstance().setEstadoLabel("Grupo eliminado correctamente", Color.BLUE);
            } catch (InputException ex) {
              Coordinador.getInstance().setEstadoLabel(ex.getMessage(), Color.RED);
            }
          }
        }
        break;
      case VistaGrupos.LIMPIAR:
        vista.limpiarFormularioGrupo();
        break;
    }
  }