/**
   * Method that compresses the list of files of the selection.
   *
   * @param ctx The current context
   * @param onSelectionListener The listener for obtain selection information (required)
   * @param onRequestRefreshListener The listener for request a refresh (optional)
   * @hide
   */
  public static void compress(
      final Context ctx,
      final OnSelectionListener onSelectionListener,
      final OnRequestRefreshListener onRequestRefreshListener) {

    // Retrieve the current selection
    final List<FileSystemObject> selection = onSelectionListener.onRequestSelectedFiles();
    if (selection != null && selection.size() > 0) {
      // Show a dialog to allow the user make the compression mode choice
      AlertDialog dialog =
          DialogHelper.createSingleChoiceDialog(
              ctx,
              R.string.compression_mode_title,
              getSupportedCompressionModesLabels(ctx, selection),
              CompressionMode.AC_GZIP.ordinal(),
              new DialogHelper.OnSelectChoiceListener() {
                @Override
                public void onSelectChoice(int choice) {
                  // Do the compression
                  compress(
                      ctx,
                      getCompressionModeFromUserChoice(choice),
                      selection,
                      onSelectionListener,
                      onRequestRefreshListener);
                }

                @Override
                public void onNoSelectChoice() {
                  /** NON BLOCK* */
                }
              });
      DialogHelper.delegateDialogShow(ctx, dialog);
    }
  }
  /**
   * Method that compresses an uncompressed file.
   *
   * @param ctx The current context
   * @param fso The compressed file
   * @param onSelectionListener The listener for obtain selection information (required)
   * @param onRequestRefreshListener The listener for request a refresh (optional)
   * @hide
   */
  public static void compress(
      final Context ctx,
      final FileSystemObject fso,
      final OnSelectionListener onSelectionListener,
      final OnRequestRefreshListener onRequestRefreshListener) {

    // Create a list with the item
    final List<FileSystemObject> items = new ArrayList<FileSystemObject>();
    items.add(fso);

    // Show a dialog to allow the user make the compression mode choice
    AlertDialog dialog =
        DialogHelper.createSingleChoiceDialog(
            ctx,
            R.string.compression_mode_title,
            getSupportedCompressionModesLabels(ctx, items),
            CompressionMode.AC_GZIP.ordinal(),
            new DialogHelper.OnSelectChoiceListener() {
              @Override
              public void onSelectChoice(int choice) {
                // Do the compression
                compress(
                    ctx,
                    getCompressionModeFromUserChoice(choice),
                    items,
                    onSelectionListener,
                    onRequestRefreshListener);
              }

              @Override
              public void onNoSelectChoice() {
                /** NON BLOCK* */
              }
            });
    DialogHelper.delegateDialogShow(ctx, dialog);
  }