public void doSearch(Object selectedItem) {
		if (this.searching) {
			return;
		}

		final String newSearch = selectedItem == null ? "" : selectedItem
				.toString();

		if (this.oldSearch.equals(newSearch)) {
			return;
		}

		this.oldSearch = newSearch;

		Runnable runnable = new Runnable() {
			public void run() {
				doSearchInternal(newSearch);
			}
		};

		this.searching = true;
		this.searchBox.setEnabled(false);
		this.searchBox.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));

		Thread thread = new Thread(runnable, "searcher " + newSearch);
		thread.start();
	}