/**
   * Método que se ejecuta cuando el usuario selecciona la opción de guardar con versación del
   * formulario apropiado. Intenta guardar la conversación en cola boración con el controlador de
   * las conversaciones.
   *
   * @param e El evento que produce la ejecución del método.
   */
  @Override
  public void actionPerformed(ActionEvent e) {

    // Recuperar los campos introducidos en el formulario
    String[] campos = gcf.getCampos();
    String ruta = campos[0];
    String nombre = campos[1];

    // Comprobar si los campos son correctos
    if (ruta.compareTo("") == 0 || nombre.compareTo("") == 0) {
      new MensajeError(gcf, "campos_invalidos_error", MensajeError.WARNING);
      return;
    }

    // Recuperar el texto de la conversación
    String texto = vc.getConversacion();

    // Llamar al controlador para que realice la operación
    try {
      cvc.guardarConversacion(nombre, ruta, texto);
      // Cerrar el formulario
      gcf.dispose();
    } catch (FicheroNoEncontradoException fnee) {
      new MensajeError(gcf, "fichero_no_encontrado_error", MensajeError.ERR);
    } catch (ImposibleGuardarConversacionException igce) {
      new MensajeError(gcf, "imposible_guardar_conversacion_error", MensajeError.ERR);
    }
  }
  /**
   * Constructor de la clase. Inicializa las variables necesarias. Crea la inter faz de usuario.
   *
   * <p>
   *
   * @param vc La ventana de la conversación.
   */
  public GuardarConversacionFormulario(VentanaConversacion vc) {

    // Inicialización de variables
    super(vc, true);

    // Creación de la interfaz
    Container cp = this.getContentPane();

    // Añadir etiqueta principal
    principal = new JLabel(cadenaPrincipal);
    principal.setHorizontalAlignment(JLabel.CENTER);
    principal.setBorder(BorderFactory.createEmptyBorder(15, 10, 15, 10));
    cp.add(BorderLayout.NORTH, principal);

    // Añadir el panel del formulario
    JPanel panelFormulario = new JPanel(new GridLayout(etiquetas.length, 2, 5, 10));
    panelFormulario.setBorder(BorderFactory.createEmptyBorder(0, 10, 15, 10));
    for (int i = 0; i < etiquetas.length; i++) {
      cadenasEtiquetas[i] = new JLabel(etiquetas[i]);
      panelFormulario.add(cadenasEtiquetas[i]);
      if (i == 0) {
        JPanel textoYBoton = new JPanel(new BorderLayout());
        camposDeTexto[i] = new JTextField();
        botonRuta = new JButton(new ImageIcon(ClassLoader.getSystemResource("icons/ruta.png")));
        botonRuta.setActionCommand("ruta");
        botonRuta.addActionListener(this);
        textoYBoton.add(BorderLayout.CENTER, camposDeTexto[i]);
        textoYBoton.add(BorderLayout.EAST, botonRuta);
        panelFormulario.add(textoYBoton);
      } else {
        camposDeTexto[i] = new JTextField();
        panelFormulario.add(camposDeTexto[i]);
      }
    }
    cp.add(BorderLayout.CENTER, panelFormulario);

    // Añadir los botones
    JPanel botones = new JPanel();
    botones.setLayout(new FlowLayout(FlowLayout.RIGHT));
    botones.setBorder(BorderFactory.createEmptyBorder(0, 10, 6, 10));
    botonAceptar = new JButton(OK);
    botonAceptar.addActionListener(new GuardarConversacionActionListener(this, vc, vc.getCvc()));
    botonCancelar = new JButton(cancelar);
    botonCancelar.setActionCommand("cancelar");
    botonCancelar.addActionListener(this);
    botones.add(botonAceptar);
    botones.add(botonCancelar);
    cp.add(BorderLayout.SOUTH, botones);

    // Opciones del cuadro de diálogo
    this.setTitle(texto.getString("guardar_conversacion_formulario_title"));
    this.setSize(300, 180);
    this.setResizable(false);
    this.setLocationRelativeTo(vc);
    this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
    this.setVisible(true);
  }