/** Triggered in threaded like logic when the user selects an option. */
    public void run() {
      // Whenever an alert choice is selected by the user the related
      // action related to the dismiss alert must be removed and must be
      // redefined run through this thread
      displayManager.removePostDismissSelectionDialogAction(displayManager.FIRST_SYNC_DIALOG_ID);

      // Dismiss the first sync selection dialog passing the command to
      // reset the sync all button on the home screen if and only if the
      // dialog is the latest to be shown to the user. The dismiss action
      // must rely on the DisplayManager implementation.
      displayManager.dismissSelectionDialog(displayManager.FIRST_SYNC_DIALOG_ID);
      HomeScreenController hsCont = controller.getHomeScreenController();

      // We don't want to show the alert twice. Even if the user postpones
      // the sync, we consider the source as synced just when nan active
      // response has been given to the alert (yes/no). In case the alert
      // is dismissed for any reason the client will display the alert
      // next time the sync is requested.
      appSourceList[sourceIndex].getConfig().setSynced(true);
      appSourceList[sourceIndex].getConfig().commit();

      if (getValue() == 0) {
        // User says "Sync Now"
        // add the given app source to the next sync request vector
        filteredSources.addElement(appSourceList[sourceIndex]);
      }
      hsCont.redraw();

      if (sourceIndex >= questionCounter - 1) {
        if (!hsCont.isSynchronizing()) {
          hsCont.changeSyncLabelsOnSyncEnded();
        }
        // Last sync question reached. Synchronization must start now. If
        // the filteredSources param is empty, then the sync is
        // terminated
        hsCont.continueSynchronizationAfterFirstSyncDialog(
            syncType, filteredSources, refresh, direction, delay, fromOutside, true);
      } else {
        // There are more sources that require this alert to be displayed
        sourceIndex++;
        showFirstSyncDialog(
            screen,
            appSourceList,
            syncType,
            filteredSources,
            refresh,
            direction,
            delay,
            fromOutside,
            questionCounter,
            sourceIndex);
      }
    }
    /** Triggered in threaded like logic when the user selects an option. */
    public void run() {
      displayManager.removePostDismissSelectionDialogAction(displayManager.NO_WIFI_AVAILABLE_ID);
      displayManager.dismissSelectionDialog(displayManager.NO_WIFI_AVAILABLE_ID);
      HomeScreenController hsCont = controller.getHomeScreenController();

      if (getValue() == 0) {
        if (!hsCont.isSynchronizing()) {
          hsCont.changeSyncLabelsOnSyncEnded();
        }

        hsCont.continueSynchronizationAfterBandwithSaverDialog(
            syncType, filteredSources, refresh, direction, delay, fromOutside, true);
      } else {
        hsCont.continueSynchronizationAfterBandwithSaverDialog(
            syncType, new Vector(), refresh, direction, delay, fromOutside, false);
      }
    }