@Override
	public void actionPerformed(ActionEvent arg0) {
		if(TrendFrame.gui_debug) System.out.println("Fetching data...");
		
		// Split to a working thread, control progress bar
		new Thread(){
			
			@Override
			public void run(){
				
				JFileChooser jfc = new JFileChooser();
				
				int selection = jfc.showOpenDialog(TrendFrame.frame);
				
				if(selection == JFileChooser.APPROVE_OPTION){
					File f = jfc.getSelectedFile();
					FileReader fr;
					BufferedReader reader = null;
					try {
						fr = new FileReader(f);
					} catch (FileNotFoundException e) {
						fr = null;
						e.printStackTrace();
					}
					
					reader = new BufferedReader(fr);
					
					CrimeWatch.details.clear();
					
					String line;
					try {
						while ((line = reader.readLine()) != null) {
							String[] lineData = line.split("#");
							
							CrimeWatch.details.put(Long.parseLong(lineData[0] + "" + lineData[1]), line);
						}
					} catch (IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					
				}
				
				// Clear the current markers and refresh
				TrendFrame.markerLayer.removeAll();
				TrendFrame.markerLayer.repaint();
				
				for(long key : CrimeWatch.details.keySet()){
					// Add each of the new markers again
					
					String[] line = CrimeWatch.details.get(key).split("#");
					
					Marker m = new Marker(TrendFrame.frame,line[2]);
					
					m.paint(TrendFrame.mapLabel, TrendFrame.mapImage.getImage(), Integer.parseInt(line[0]), Integer.parseInt(line[1]));
					if(TrendFrame.gui_debug) System.out.println("Painting marker at (" + line[0] + "," + line[1] + ")");
					
					TrendFrame.mapLabel.repaint();
					
				}
				
				JOptionPane.showMessageDialog(TrendFrame.frame,
					    "Markers file loaded from disk successfully.",
					    "Information",
					    JOptionPane.INFORMATION_MESSAGE);
				
				// After everything is done, rejoin the worker thread to the main thread
				try {
					this.join();
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
			
		}.start();
	}