// Charger la zone de modification par les differents elements du formulaire
  public void chargerFormulaire() {
    // Vider la zone de modification dans le cas où elle est occupée par un
    // autre formulaire
    if (bodyExist) {
      RootPanel.get("container_principal").clear();
      Document.get().getBody().removeChild(bodyForm.getElement());
      dualListBox.clear();
      enregistrer = new Anchor();
    }

    // Construire la zone de modification
    bodyForm = new BodyFormulaire();

    Document.get().getBody().appendChild(bodyForm.getElement());

    // Alimenter la liste des comptes CU et CA
    alimenterList();
    // Ajouter Action au lien "Allocation du formulaire"
    Anchor link_allocation = Anchor.wrap(bodyForm.getLink_allocation());
    link_allocation.addClickHandler(
        new ClickHandler() {
          public void onClick(ClickEvent event) {
            // Afficher le popup contenant la dual liste qui contient la
            // liste des comptes CA et CU
            FormulaireController.CreateDialogBoxAllocation(dualListBox, false, null).show();
          }
        });

    // Ajouter le button supprimer Formulaire

    supprimer.setHTML(
        "<a class='bouton_enregistrer floatRight' style='margin-right:13%; cursor:pointer'>Supprimer</a>");
    RootPanel.get("button_Enregistrer").add(supprimer);

    // RootPanel.get("form_formulaire_allocation").getElement().appendChild(dualListBox.getElement());
    RootPanel.get("form_formulaire_creation").getElement().appendChild(form.getElement());
    enregistrer.setHTML(
        "<a class='bouton_enregistrer floatRight' style='margin-right:15px; cursor:pointer'>Enregistrer</a>");
    RootPanel.get("button_Enregistrer").add(enregistrer);

    RootPanel.get("contenu_principal_formulaire").add(new FormulaireBoard());
    RootPanel.get("container_principal").insert(FormulaireController.createImageGrid(), 0);
    bodyExist = true;

    // Remplir le formulaire nom et commentaire
    RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, FORMULAIRE_URL + formulaire_id);
    builder.setHeader("Content-Type", "application/json");

    try {
      builder.sendRequest(
          null,
          new RequestCallback() {
            public void onError(Request request, Throwable exception) {}

            @SuppressWarnings("deprecation")
            public void onResponseReceived(Request request, Response response) {
              if (response.getStatusCode() == Response.SC_OK) {
                JSONValue formAsJSONValue = JSONParser.parse(response.getText());
                formAsJSONObject = formAsJSONValue.isObject();
                ((InputElement) form.getForm_nom())
                    .setValue(formAsJSONObject.get("nom").isString().stringValue());
                ((InputElement) form.getForm_comment())
                    .setValue(formAsJSONObject.get("commentaire").isString().stringValue());
                ancienNom = form.getForm_nom().getValue();
                // ((InputElement)form.getForm_nom()).setDisabled(true);
              }
            }
          });
    } catch (RequestException e) {
      System.out.println("RequestException");
    }

    // Remplir la zone de création par les elements et les parametres
    builder =
        new RequestBuilder(
            RequestBuilder.GET, ELEMENT_URL + "listerElement/formulaire/" + formulaire_id);
    builder.setHeader("Content-Type", "application/json");

    try {
      builder.sendRequest(
          null,
          new RequestCallback() {
            public void onError(Request request, Throwable exception) {}

            @SuppressWarnings("deprecation")
            public void onResponseReceived(Request request, Response response) {
              if (response.getStatusCode() == Response.SC_OK) {
                String elementsAsJSONString = response.getText();
                JSONValue elementsAsJSONValue = JSONParser.parse(elementsAsJSONString);
                JSONArray elementsAsJSONArray = elementsAsJSONValue.isArray();
                for (int i = 0; i < elementsAsJSONArray.size(); i++) {

                  JSONValue elementAsJSONValue = elementsAsJSONArray.get(i);
                  JSONObject elementAsJSONObject = elementAsJSONValue.isObject();
                  elementsAsString += elementAsJSONObject.get("id").isNumber().toString() + "-";
                  getParamsByElement(
                      Long.parseLong(elementAsJSONObject.get("id").isNumber().toString()),
                      Integer.parseInt(elementAsJSONObject.get("position_y").isNumber().toString()),
                      Integer.parseInt(elementAsJSONObject.get("position_x").isNumber().toString()),
                      elementAsJSONObject.get("type").isString().stringValue());
                }
              }
            }
          });
    } catch (RequestException e) {
      System.out.println("RequestException");
    }

    // Action de suppression d'un formulaire
    supprimer.addClickHandler(
        new ClickHandler() {
          @Override
          public void onClick(ClickEvent event) {
            // Supprimer le formulaire
            RequestBuilder builder =
                new RequestBuilder(
                    RequestBuilder.PUT, FORMULAIRE_URL + "supprimer/" + formulaire_id);
            builder.setHeader("Content-Type", "application/json");
            try {
              builder.sendRequest(
                  null,
                  new RequestCallback() {
                    public void onError(Request request, Throwable exception) {}

                    public void onResponseReceived(Request request, Response response) {
                      Window.Location.reload();
                    }
                  });
            } catch (RequestException e) {
              System.out.println("RequestException");
            }
          }
        });

    // Action de l'enregistrement du formulaire dans la base de données
    enregistrer.addClickHandler(
        new ClickHandler() {
          public void onClick(ClickEvent event) {
            FormulaireController.recupererElements(choices, options, elements, parametres);
            // Ajouter les elements regroupés dans la base de données
            ajouterFormulaire(elements);
          }
        });

    final Anchor apercu = new Anchor();

    // Création du lien de l'aperçu
    apercu.setHTML(
        "<a class='bouton_enregistrer floatRight' style='margin-right:15px; cursor:pointer'>Aperçu</a>");
    RootPanel.get("button_Enregistrer").add(apercu);
    apercu.addClickHandler(
        new ClickHandler() {
          @SuppressWarnings("rawtypes")
          public void onClick(ClickEvent event) {
            choices = new ArrayList();
            options = new ArrayList();
            elements = new ArrayList();
            parametres = new ArrayList();

            FormulaireController.recupererElements(choices, options, elements, parametres);
            bodyapercu = new BodyApercu();
            // Passer à l'interface de l'aperçu
            Document.get().getBody().removeChild(bodyForm.getElement());
            Document.get().getBody().appendChild(bodyapercu.getElement());
            // Création de la page de l'aperçu
            FormulaireController.pageApercu(
                bodyapercu,
                form.getForm_nom().getValue(),
                form.getForm_comment().getValue(),
                elements,
                parametres,
                choices,
                options);

            Anchor retourAnchor = Anchor.wrap(bodyapercu.getRetour());

            retourAnchor.addClickHandler(
                new ClickHandler() {
                  @Override
                  public void onClick(ClickEvent event) {
                    choices = new ArrayList();
                    options = new ArrayList();
                    elements = new ArrayList();
                    parametres = new ArrayList();
                    Document.get().getBody().removeChild(bodyapercu.getElement());
                    Document.get().getBody().appendChild(bodyForm.getElement());
                  }
                });
          }
        });
  }
  @Override
  public void onModuleLoad() {

    /** * Seuls les profils Super Adminisatreur et CA peuvent se connecter à cette page * */
    if (Cookies.getCookie("profil") == null) {
      Window.Location.replace(GWT.getHostPageBaseURL() + "Connexion.html" + Constantes.SUFFIXE_URL);
    } else if (Cookies.getCookie("client") == null)
      Window.Location.replace(
          GWT.getHostPageBaseURL() + "Accueil_superadmin.html" + Constantes.SUFFIXE_URL);
    else if (Cookies.getCookie("profil").equals("CU")) {
      Window.Location.replace(
          GWT.getHostPageBaseURL() + "Accueil_applifit.html" + Constantes.SUFFIXE_URL);
    } else {

      // Ajouter le menu à la page
      MenuForm menu = new MenuForm(Constantes.USER);
      Document.get().getBody().appendChild(menu.getElement());

      /** * action de deconnexion ** */
      Anchor deconnexionWrapper = Anchor.wrap(menu.getDeconnexion());
      deconnexionWrapper.addClickHandler(
          new ClickHandler() {
            @Override
            public void onClick(ClickEvent event) {
              Utils.deconnexion();
            }
          });

      /** * action Rubrique accueil ** */
      Anchor accueilWrapper = Anchor.wrap(menu.getAccueil());
      accueilWrapper.addClickHandler(
          new ClickHandler() {
            @Override
            public void onClick(ClickEvent event) {
              if (Cookies.getCookie("profil").equals("SA"))
                Window.Location.replace(
                    GWT.getHostPageBaseURL() + "Accueil_superadmin.html" + Constantes.SUFFIXE_URL);
              else
                Window.Location.replace(
                    GWT.getHostPageBaseURL() + "Accueil_applifit.html" + Constantes.SUFFIXE_URL);
            }
          });
      /** * action de rubrique formulaire ** */
      Anchor formulaireWrapper = Anchor.wrap(menu.getFormulaire());
      formulaireWrapper.addClickHandler(
          new ClickHandler() {
            @Override
            public void onClick(ClickEvent event) {
              if (Cookies.getCookie("profil").equals("SA")
                  || Cookies.getCookie("profil").equals("CA"))
                Window.Location.replace(
                    GWT.getHostPageBaseURL()
                        + "Formulaire_menu_applifit.html"
                        + Constantes.SUFFIXE_URL);
              else
                Window.Location.replace(
                    GWT.getHostPageBaseURL()
                        + "Formulaire_consulter_applifit.html"
                        + Constantes.SUFFIXE_URL);
            }
          });

      // Ajouter la zone de recherche à la page
      Document.get().getBody().insertAfter(recherche.getElement(), menu.getElement());
      nativeMethod("datepicker");
      // Remplire la liste des formulaires par les formulaires actifs liés
      // à la société courante
      FormulaireController.alimenterListeForm(
          FORMULAIRE_URL + "listerFormulaire/entreprise/" + Cookies.getCookie("client"), recherche);

      // Ajouter action por le button de recherche
      Anchor search = Anchor.wrap(recherche.getSearch_link());
      search.addClickHandler(
          new ClickHandler() {
            @Override
            public void onClick(ClickEvent event) {
              final ListBox lb = ListBox.wrap(recherche.getFormulaire());
              // Vider la liste
              lb.clear();
              lb.addItem("Choisir un formulaire...", "");

              // Lancer la recherche du formulaire selon le nom et la date
              // de création
              FormulaireController.rechercheForm(recherche);

              // Ajouter action on change de la liste des formulaires ,
              // affichant le formulaire selectionné
              final ListBox lb2 = ListBox.wrap(recherche.getFormulaire());
              lb2.addChangeHandler(
                  new ChangeHandler() {
                    @SuppressWarnings("rawtypes")
                    @Override
                    public void onChange(ChangeEvent event) {
                      elements = new ArrayList();
                      parametres = new ArrayList();
                      choices = new ArrayList();
                      options = new ArrayList();
                      // Si la ligne selectionnée n'est pas le prompt de
                      // la liste
                      if (lb.getSelectedIndex() != 0) {
                        // Récuperer la valeur selectionnée
                        formulaire_id = Long.parseLong(lb.getValue(lb.getSelectedIndex()));

                        // Récuperer les elements et parametres du
                        // formulaire et les afficher dans la zone de
                        // modification
                        chargerFormulaire();
                      }
                    }
                  });
            }
          });

      // Ajouter action on change de la liste des formulaires , affichant
      // le formulaire selectionné
      final ListBox lb = ListBox.wrap(recherche.getFormulaire());

      lb.addChangeHandler(
          new ChangeHandler() {
            @SuppressWarnings("rawtypes")
            @Override
            public void onChange(ChangeEvent event) {
              elements = new ArrayList();
              parametres = new ArrayList();
              choices = new ArrayList();
              options = new ArrayList();
              // Si la ligne selectionnée n'est pas le prompt de la liste
              if (lb.getSelectedIndex() != 0) {
                // Récuperer la valeur selectionnée
                formulaire_id = Long.parseLong(lb.getValue(lb.getSelectedIndex()));
                // Récuperer les elements et parametres du formulaire et
                // les afficher dans la zone de modification
                chargerFormulaire();
              }
            }
          });
    }
  }