protected void processMouseMoved(MouseEvent e) {
		// WHY? if (!hasFocus()) return;
		super.processMouseMoved(e);
		model.runMouseScript(MouseEvent.MOUSE_MOVED, e.getX(), e.getY());
		int x = e.getX();
		int y = e.getY();
		if (viewer.getNavigationMode()) {
			if (navigator.mouseHover(x, y)) {
				repaint();
				return;
			}
		}
		switch (actionID) {
		case SBOX_ID:
			viewer.getSimulationBoxFace(x, y);
			break;
		case EXOB_ID:
			obstacleIndexAndFace = viewer.findNearestObstacleIndexAndFace(x, y);
			break;
		case VVEL_ID:
			int i = viewer.findNearestAtomIndex(x, y);
			if (i >= 0) {
				selectAtom(i);
				Atom at = (Atom) selectedComponent;
				viewer.setAtomVelocities(i, at.getVx(), at.getVy(), at.getVz());
			}
			if (selectedComponent instanceof Atom) {
				viewer.setIndexOfAtomOfSelectedVelocity(i);
				setCursor(viewer.getVectorBoxFace(x, y) >= 0 ? UserAction.getExtrusionCursor() : UserAction
						.getCursor(actionID));
			}
			break;
		case DEFA_ID:
			if (showEnergizer) {
				if (energizer != null) {
					if (x >= energizer.x) {
						energizer.mouseEntered(x, y);
						energizer.paint(getGraphics());
					}
					else {
						energizer.mouseExited();
						energizer.paint(getGraphics());
					}
				}
			}
			break;
		}
		repaint();
	}