@Override
	public void mousePressed(MouseEvent e) {
		// Iterate through all of the objects that are registered with the
		// system and check if the mouse has been clicked within the bounds of
		// the IMouseEventable
		synchronized (registeredListeningObjects) {
			for (IMouseEventable eventable : registeredListeningObjects) {
				// Check if the mouse is within the bounds of the object
				// Also check that the object is wanting to recieve the events
				if (eventable.getDimensions().contains(e.getPoint())
						&& !eventable.isEventsDisabled()) {
					synchronized (waitingEventLists) {
						waitingEventLists.get(MouseEventType.MOUSE_FOCUS).add(eventable);
					}
					synchronized (currentMouseFocus) {
						currentMouseFocus.add(eventable);
					}
				}
			}
		}

		// When a mouse is clicked we will iterate over the list of objects
		// which were already clicked, if we find an object in which the mouse
		// position is no longer within the bounds of we will fire the
		// MOUSE_BLUR event
		for (IMouseEventable eventable : currentMouseFocus) {
			if (!eventable.getDimensions().contains(e.getPoint())) {
				synchronized (waitingEventLists) {
					waitingEventLists.get(MouseEventType.MOUSE_BLUR).add(eventable);
				}
				synchronized (currentMouseFocus) {
					currentMouseFocus.remove(eventable);
				}
			}
		}

		leftClickDown = e.getButton() == MouseEvent.BUTTON1;
		rightClickDown = e.getButton() == MouseEvent.BUTTON3;

		mouseClickPosX = e.getX();
		mouseClickPosY = e.getY();
	}