public void run()
	{
		while(this.isAlive())
		{
			try
			{
				progress.setValue(currentNumberOfDataRead);

				//if the reader is busy reading data
				if(Reader.isBusy())
				{
					//disable all buttons
					loadContent.setEnabled(false);
					unloadContent.setEnabled(false);
					accessEachDataEntryOnce.setEnabled(false);
					search.setEnabled(false);
					searchRandomEntry.setEnabled(false);
					printLogFile.setEnabled(false);
					
					//the current time in milliseconds
					currentTime = System.currentTimeMillis();
					
					//calculate time in minutes:seconds:milliseconds
					long seconds = ((currentTime - startTime) / 1000)%60;
					long minutes = ((currentTime - startTime) / 1000 / 60)%60;
					long milliseconds = (currentTime - startTime) %1000;
					
					if(seconds < 10)
					{
						timeString = minutes + ":0" + seconds + ":" +milliseconds;
						progress.setString("Time: " + timeString);
					}
					else
					{
						timeString = minutes + ":" + seconds + ":" +milliseconds;
						progress.setString("Time: " + timeString);
					}
				}

				else
				{
					//enable all buttons
					loadContent.setEnabled(true);
					unloadContent.setEnabled(true);
					accessEachDataEntryOnce.setEnabled(true);
					search.setEnabled(true);
					searchRandomEntry.setEnabled(true);
					printLogFile.setEnabled(true);
				}
				
				//repaint the GUI to display latest data
				gui.repaint();				
			}
			
			catch(Exception e)
			{
				System.err.println(e);
			}
		}
	}