public void run()
	{
		_statusLabel.setText(I18nManager.getText("confirm.running"));

		String descMessage = "";
		InputStream inStream = null;

		// language (only de and en available)
		String lang = I18nManager.getText("wikipedia.lang");
		if (lang.equals("de") || lang.equals("als")) {
			lang = "de";
		}
		else {
			lang = "en";
		}
		// Replace awkward characters with character equivalents
		String searchTerm;
		try {
			searchTerm = URLEncoder.encode(_searchTerm, "UTF-8");
		} catch (UnsupportedEncodingException e1) {
			searchTerm = _searchTerm;
		}
		// Example http://ws.geonames.org/wikipediaSearch?q=london&maxRows=10
		String urlString = "http://api.geonames.org/wikipediaSearch?title=" + searchTerm
			+ "&maxRows=" + MAX_RESULTS + "&lang=" + lang + "&username=" + GEONAMES_USERNAME;
		// Parse the returned XML with a special handler
		GetWikipediaXmlHandler xmlHandler = new GetWikipediaXmlHandler();
		try
		{
			URL url = new URL(urlString);
			SAXParser saxParser = SAXParserFactory.newInstance().newSAXParser();
			inStream = url.openStream();
			saxParser.parse(inStream, xmlHandler);
		}
		catch (Exception e) {
			descMessage = e.getClass().getName() + " - " + e.getMessage();
		}
		// Close stream and ignore errors
		try {
			inStream.close();
		} catch (Exception e) {}
		// Add track list to model
		ArrayList<GpsiesTrack> trackList = xmlHandler.getTrackList();
		// TODO: Do a better job of sorting replies by relevance - use three different lists
		_trackListModel.addTracks(trackList);

		// Set status label according to error or "none found", leave blank if ok
		if (descMessage.equals("") && (trackList == null || trackList.size() == 0)) {
			descMessage = I18nManager.getText("dialog.gpsies.nonefound");
		}
		_statusLabel.setText(descMessage);
	}