private void grabGrid(int type, String parameters) {
    btGrabByTag.setEnabled(false);
    btGrabRandom.setEnabled(false);
    pbProgress.setIndeterminate(true);
    pbProgress.setValue(0);
    pbProgress.setStringPainted(true);

    FlickrWorker worker = new FlickrWorker(flickr, this);
    int mtg = 100;
    try {
      mtg = Integer.parseInt(tfMaxToGrab.getText());
    } catch (NumberFormatException e) {
      mtg = 100;
      displayMessage(e.getMessage());
    }
    worker.setMaxToGrab(mtg);
    worker.setType(type);
    if ((type == FlickrWorker.TYPE_TAGS) || (type == FlickrWorker.TYPE_EXPERT)) {
      worker.setQueryParameters(parameters);
    }
    worker.addListener(this);

    Thread t = new Thread(worker);
    t.start();
  }
  public void display(PluginFlickrImage img) {
    btGrabByTag.setEnabled(false);
    btGrabRandom.setEnabled(false);
    pbProgress.setIndeterminate(true);
    pbProgress.setValue(0);
    pbProgress.setStringPainted(true);

    FlickrWorker worker = new FlickrWorker(flickr, this);
    worker.setType(FlickrWorker.TYPE_IMAGE);
    worker.setImage(img);
    worker.addListener(this);

    Thread t = new Thread(worker);
    t.start();
  }
  private void grab(int type, String parameters) {
    if (cbSingleImage.isSelected()) {
      btGrabByTag.setEnabled(false);
      btGrabRandom.setEnabled(false);
      pbProgress.setIndeterminate(true);
      pbProgress.setValue(0);
      pbProgress.setStringPainted(true);

      FlickrWorker worker = new FlickrWorker(flickr, this);
      worker.setType(type);
      if ((type == FlickrWorker.TYPE_TAGS) || (type == FlickrWorker.TYPE_EXPERT)) {
        worker.setQueryParameters(parameters);
      }
      worker.addListener(this);

      Thread t = new Thread(worker);
      t.start();
    } else {
      grabGrid(type, parameters);
    }
  }