docs: private void updateEstimate(boolean startJob) {
          try {
              if (cache_east != null &&
                      cache_west != null &&
                      cache_north != null &&
                      cache_south != null &&
                      zoom_max != null &&
                      zoom_min != null) {
                  double n = Double.parseDouble(cache_north.getText().toString());
                  double s = Double.parseDouble(cache_south.getText().toString());
                  double e = Double.parseDouble(cache_east.getText().toString());
                  double w = Double.parseDouble(cache_west.getText().toString());
  
                  int zoommin = zoom_min.getProgress();
                  int zoommax = zoom_max.getProgress();
                  //nesw
                  BoundingBox bb = new BoundingBox(n, e, s, w);
                  int tilecount = mgr.possibleTilesInArea(bb, zoommin, zoommax);
                  cache_estimate.setText(tilecount + " tiles");
                  if (startJob) {
                      if (downloadPrompt != null) {
                          downloadPrompt.dismiss();
                          downloadPrompt = null;
                      }
  
  
                      // prepare for a progress bar dialog ( do this first! )
                      progressBar = new ProgressDialog(SampleCacheDownloaderCustomUI.this.getActivity());
                      progressBar.setCancelable(true);
                      progressBar.setMessage("Downloading ...");
                      progressBar.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                      progressBar.setProgress(0);
                      progressBar.setCancelable(true);
                      progressBar.setOnDismissListener(new DialogInterface.OnDismissListener() {
                          @Override
                          public void onDismiss(DialogInterface dialog) {
                              //cancel the job wit the dialog is closed
                              downloadingTask.cancel(true);
                              System.out.println("Pending jobs " + mgr.getPendingJobs());
                          }
                      });
                      //this triggers the download
                      downloadingTask = mgr.downloadAreaAsyncNoUI(getActivity(), bb, zoommin, zoommax, SampleCacheDownloaderCustomUI.this);
  
  
                  }
  
              }
          } catch (Exception ex) {
              ex.printStackTrace();
          }
      }