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);
    }
  }
  @Override
  public void notifyProcessEnded(FlickrWorker w) {
    if (w.getMaxToGrab() > 1) {
      if (w.getImages() != null) {
        FlickrImageGrid grid = new FlickrImageGrid(this);
        switch (w.getType()) {
          case FlickrWorker.TYPE_RECENT:
            grid.setTitle("FiR - recent uploads");
            break;
          case FlickrWorker.TYPE_INTERESTINGNESS:
            grid.setTitle("FiR - interestingness");
            break;
          case FlickrWorker.TYPE_TAGS:
            grid.setTitle("FiR - " + w.getQueryParameters());
            break;
          case FlickrWorker.TYPE_EXPERT:
            grid.setTitle("FiR - " + w.getQueryParameters());
            break;
          default:
            grid.setTitle("FiR");
            break;
        }

        grid.setImages(w.getImages());
        grid.startInterface(getFrame());

        for (final PluginFlickrImage i : grid.getImages()) {
          i.setPlugin(this);
          // new Thread(new Runnable() {
          //
          // @Override
          // public void run() {
          // try {
          // i.setInternal(flickr.loadImageThumbnail(i, null));
          // } catch (final FlickrException e) {
          // i.setInternal(null);
          // i.removedFromGrid();
          // ThreadUtil.invokeLater(new Runnable() {
          // @Override
          // public void run() {
          // displayMessage(e.getClass().getName() + " : " +
          // e.getMessage());
          // }
          // });
          // }
          // }
          // }).start();
        }
      }
    }

    btGrabByTag.setEnabled(true);
    btGrabRandom.setEnabled(true);
    pbProgress.setIndeterminate(false);
    pbProgress.setStringPainted(false);
    pbProgress.setValue(0);
    pbProgress.setString(null);
  }