private void plot() {
    if (dygraphs != null) {
      if (panel.remove(dygraphs)) ;
    }

    String eq = textArea.getValue();

    double x1 = Double.parseDouble(fromTb.getValue());
    double x2 = Double.parseDouble(toTb.getValue());
    double xs = 1.0 * (x2 - x1) / width;

    JsArray<JsArrayMixed> data = JsArray.createArray().cast();
    for (int i = 0; i < width; i++) {
      double x = x1 + i * xs;
      JsArrayNumber y = evalFn(eq, x);
      JsArrayMixed row = JsArrayMixed.createArray().cast();
      row.push(x);
      for (int j = 0; j < y.length(); j++) {
        row.push(y.get(j));
      }
      data.push(row);
    }
    dygraphs = new Dygraphs(data, null);
    dygraphs.setPixelSize(width, height);
    panel.add(dygraphs);
  }
 @UiHandler("projectDescription")
 void onProjectDescriptionChanged(KeyUpEvent event) {
   if (event.getNativeKeyCode() == KeyCodes.KEY_ENTER) {
     return;
   }
   delegate.projectDescriptionChanged(projectDescription.getValue());
 }
  @UiHandler("enviar")
  void onSave(ClickEvent event) {

    if (!formularioValido()) return;

    solicitudTitular.setEstado(Solicitud.Estado.Nuevo);
    solicitudTitular.setExpedienteNumero(solicitudTitularEditor.numero.getValue());
    solicitudTitular.setCotizante(solicitudTitularEditor.beneficiario.getBeneficiario());

    //
    //	solicitudTitular.setListaTiempoServicioDeclarado(tablaTiempoServicioDeclarado.listaTiempoServicioDeclarado);

    // Creamos el mensaje
    //		List<Mensaje> mensajes = new ArrayList<Mensaje>();
    Mensaje mensaje = new Mensaje();
    mensaje.setAsunto(Mensaje.Asunto.NuevaSolicitud);
    mensaje.setCuerpo(cuerpoMensaje.getValue());
    mensaje.setReferencia(
        solicitudTitular.getExpedienteNumero()
            + " - "
            + solicitudTitularEditor.beneficiario.getBeneficiario().toString());
    //		mensaje.setAdjuntos(adjuntos);
    mensaje.setSolicitud(solicitudTitular);
    //		mensajes.add(mensaje);
    //		solicitudTitular.setMensajes(mensajes);

    NuevaSolicitud nuevaSolicitudTitular =
        new NuevaSolicitud(
            solicitudTitular,
            tablaTiempoServicioDeclarado.listaTiempoServicioDeclarado,
            mensaje,
            upload.adjuntos);

    if (cotizanteSolicitante.getValue() == true) {
      SolicitudBeneficiario sb = new SolicitudBeneficiario();
      // Como la solicitud es del titular, hacemos SolicitudBenefiario = al cotizante
      sb.setBeneficiario(solicitudTitularEditor.beneficiario.getBeneficiario());
      sb.setTipo(SolicitudBeneficiario.Tipo.Titular);
      nuevaSolicitudTitular.getListaSolicitudBeneficiario().add(sb);
    } else {

      SolicitudBeneficiario sb = null;
      for (int i = 0; i < tablaSolicitudBeneficiario.listaBeneficiario.size(); i++) {
        sb = new SolicitudBeneficiario();
        sb.setTipo(SolicitudBeneficiario.Tipo.Derechohabiente);
        sb.setParentesco(tablaSolicitudBeneficiario.listaParentescoEditors.get(i).getValue());
        sb.setBeneficiario(tablaSolicitudBeneficiario.listaBeneficiario.get(i));
        nuevaSolicitudTitular.getListaSolicitudBeneficiario().add(sb);
      }
    }

    BeneficiarioService.Util.get()
        .nuevoSolicitud(
            nuevaSolicitudTitular,
            new MethodCallback<Void>() {

              @Override
              public void onSuccess(Method method, Void response) {
                AppUtils.EVENT_BUS.fireEvent(new RefreshMailEvent());
                Window.alert("Solicuitud GENERADA!");
                close();
              }

              @Override
              public void onFailure(Method method, Throwable exception) {
                new UIErrorRestDialog(method, exception);
              }
            });
  }
  public boolean formularioValido() {

    UIValidarFormulario vf =
        new UIValidarFormulario(
            "Favor complete las siguientes informaciones solicitadas para crear la solicitud");

    if (upload.adjuntos[0] == null) {
      vf.addError("Es obligatorio enviar adjunto de la solicitud");
    }

    if (upload.adjuntos[1] == null) {
      vf.addError("Es obligatorio enviar adjunto del documento de identidad");
    }

    if (solicitudTitularEditor.beneficiario.getBeneficiario() == null) {
      vf.addError("Favor seleccione beneficiario cotizante");
    }

    Set<String> cajasDiferentes = new HashSet<String>();
    for (TiempoServicioDeclarado tsd : tablaTiempoServicioDeclarado.listaTiempoServicioDeclarado) {
      cajasDiferentes.add(tsd.getCaja().getSiglas());
    }
    if (cajasDiferentes.size() < 2) {
      vf.addError("Debe declarar al menos dos cajas de jubilaciones diferentes");
    }

    if (solicitudTitularEditor.numero.getValue().length() < 3) {
      vf.addError("El numero de Expediente debe contener al menos tres digitos");
    }

    if (cuerpoMensaje.getValue().length() == 0) {
      vf.addError("Ingrese texto en el mensaje");
    }

    if (!cotizanteSolicitante.getValue()) {
      if (tablaSolicitudBeneficiario.listaBeneficiario.size() == 0) {
        vf.addError("Seleccione a los herederos");
      } else {
        int cantConyuges = 0;
        int cantAscendientes = 0;
        Set<Long> listaUnica = new HashSet<Long>();
        for (int i = 0; i < tablaSolicitudBeneficiario.listaBeneficiario.size(); i++) {
          Beneficiario b = tablaSolicitudBeneficiario.listaBeneficiario.get(i);
          listaUnica.add(b.getId());
          if (solicitudTitularEditor.beneficiario.getBeneficiario() != null
              && b.getId() == solicitudTitularEditor.beneficiario.getBeneficiario().getId()) {
            vf.addError(
                "El beneficiario cotizante "
                    + b.toString()
                    + " no puede ser heredero al mismo tiempo");
          }

          if (tablaSolicitudBeneficiario.listaParentescoEditors.get(i).getValue()
              == SolicitudBeneficiario.Parentesco.Conyuge) {
            cantConyuges++;
          } else if (tablaSolicitudBeneficiario.listaParentescoEditors.get(i).getValue()
              == SolicitudBeneficiario.Parentesco.Ascendiente) {
            cantAscendientes++;
          }
        }

        if (tablaSolicitudBeneficiario.listaBeneficiario.size() != listaUnica.size()) {
          vf.addError("Declaro mas una vez el mismo derechohabiente, favor verifique");
        }

        if (cantConyuges > 1) {
          vf.addError("Declaro mas un derechohabiente con parentesco Conyuge, favor verifique");
        }

        if (cantAscendientes > 2) {
          vf.addError(
              "Declaro mas dos derechohabiente con parentesco Ascendiente, favor verifique");
        }
      }
    }

    return vf.esValido();
  }
 public String getContent() {
   return textArea.getValue();
 }