protected void processKeyPressed(KeyEvent e) {
		super.processKeyPressed(e);
		model.runKeyScript(KeyEvent.KEY_PRESSED, e.getKeyCode());
		if (!e.isControlDown()) {
			isKeyNavigation = true;
			if ((keyCode = keyManager.keyPressed(e)) != 0) {
				if (isAddingAtomMode() || isAddingMoleculeMode() || isImportingModelMode() || isAddingObstacleMode()) {
					translateDropPlane();
					isKeyNavigation = false;
				}
				else {
					if (obstacleIndexAndFace != null && obstacleIndexAndFace[0] >= 0) {
						transformObstacle(obstacleIndexAndFace[0]);
						isKeyNavigation = false;
					}
					else {
						BitSet bs = viewer.getSelectionSet();
						if (bs.cardinality() > 0) {
							transformAtoms(bs, e.isShiftDown());
							isKeyNavigation = false;
						}
					}
				}
			}
			if (isKeyNavigation) {
				navigator.keyPressed(e);
				model.setRotationMatrix(viewer.getRotationMatrix());
			}
		}
		// MUST consume in order to stop the event from propogating to the parent components
		e.consume();
	}