@Override
		public void actionPerformed(ActionEvent e) {
			// FIXME - assume, for the mean time, that all action events are going to be JButtons.
			JButton buttonEvent = (JButton) e.getSource();
			// Check which action event was triggered.`
			if (buttonEvent == powerDemandButton) {
				String value = demandChange.getText();
				// Validate the input.
				if (validUserInput(value)) {
					// TODO - check for negative values.
					// Get the float value from the string.
					float floatValue = Float.parseFloat(value);
					powerDemand = floatValue;
					control.setPowerDemand(powerDemand);
				} else {
					// Non-valid input.
				}
			} else if (buttonEvent == damRainLevelButton) {
				incrementTheHydroScheme();
			} else if (buttonEvent == waterDemandButton) {
				// Get the string value from the JTextField.
				String value = demandChange.getText();
				// Convert the value to a float value.
				float floatValue = Float.parseFloat(value);
				waterDemand = floatValue;
				control.setWaterDemand(waterDemand);
			} else if (buttonEvent == incrementButton) {
				incrementTheHydroScheme();
			} else if (e.getSource() == startButton) {
				Thread simulation = new Thread(new Runnable() {
					@Override
					public void run() {
						try {
							while (true) {
								incrementTheHydroScheme();
								Thread.sleep(1000);
							}
						} catch (InterruptedException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
					}
				});
				simulation.start();
			} else {
				System.out.println("Awkwards.");
			}
		}