public static void addInternalEventListenerJoystick2(
      ItsNatCompNormalEventListenersJoystick listeners,
      ClientDocumentImpl clientDoc,
      String type,
      boolean useCapture,
      int commMode,
      ParamTransport[] extraParams,
      String preSendCode,
      long eventTimeout,
      String bindToCustomFunc) {
    JoystickModeComponent comp = listeners.getJoystickModeComponent();
    Element[] elemList = comp.getContentElementList();

    for (int i = 0; i < elemList.length; i++) {
      Element contentElem = elemList[i];
      if (contentElem == null) continue;
      if (DOMUtilInternal.isNodeBoundToDocumentTree(
          contentElem)) // Esta comprobación es simplemente para que funcione el ejemplo del "Table
        // using Row Span" del Feat. Show. quizás valga para casos especiales del
        // usuario.
        clientDoc.addEventListener(
            (EventTarget) contentElem,
            type,
            (ItsNatComponentImpl) comp,
            useCapture,
            commMode,
            extraParams,
            preSendCode,
            eventTimeout,
            bindToCustomFunc);
    }
  }
  public static void removeInternalEventListenerJoystick2(
      ItsNatCompNormalEventListenersJoystick listeners,
      ClientDocumentImpl clientDoc,
      String type,
      boolean useCapture,
      boolean updateClient) {
    JoystickModeComponent comp = listeners.getJoystickModeComponent();
    Element[] elemList = comp.getContentElementList();

    for (int i = 0; i < elemList.length; i++) {
      Element contentElem = elemList[i];
      if (contentElem == null) continue;
      if (DOMUtilInternal.isNodeBoundToDocumentTree(
          contentElem)) // Esta comprobación es simplemente para que funcione el ejemplo del "Table
        // using Row Span" del Feat. Show. quizás valga para casos especiales del
        // usuario.
        clientDoc.removeEventListener(
            (EventTarget) contentElem, type, (ItsNatComponentImpl) comp, useCapture);
    }
  }
  public static ArrayList<ItsNatCompNormalEventListenersJoystick> getMustAddRemove(
      JoystickModeComponent comp) {
    ItsNatCompNormalEventListenersAllClientsImpl normalEventListenersByClient =
        ((ItsNatComponentImpl) comp).getItsNatCompNormalEventListenersAllClients();
    ArrayList<ItsNatCompNormalEventListenersJoystick> res =
        new ArrayList<ItsNatCompNormalEventListenersJoystick>(
            1 + normalEventListenersByClient.size()); // El 1 es el registro por documento

    ItsNatCompNormalEventListenersByDocJoystickImpl normalEventListenersByDoc =
        comp.getItsNatCompNormalEventListenersByDocJoystick();
    if (normalEventListenersByDoc.mustAddRemove()) res.add(normalEventListenersByDoc);

    ItsNatCompNormalEventListenersByClientImpl[] clients =
        normalEventListenersByClient.getAllItsNatCompNormalEventListenersByClient();
    for (int i = 0; i < clients.length; i++) {
      ItsNatCompNormalEventListenersByClientJoystickImpl client =
          (ItsNatCompNormalEventListenersByClientJoystickImpl) clients[i];
      if (client.mustAddRemove()) res.add(client);
    }

    return res;
  }