@Override
	public void paint(Graphics g) {
		super.paint(g);

		for (Entry<State, Point> node : statePositionList.entrySet()) {

			for (State followingState : node.getKey().getFollowingStates()) {
				Point followingPosition = statePositionList.get(followingState);
				g.setColor(Color.BLACK);
				drawArrow(g, calculateNodeCenter(node.getValue().x),
						calculateNodeCenter(node.getValue().y),
						calculateNodeCenter(followingPosition.x),
						calculateNodeCenter(followingPosition.y), node.getKey()
								.getComputation(followingState)
								.toTranslationCode());

			}
		}
		
		for (Entry<State, Point> node : statePositionList.entrySet()) {

			if (node.getKey().equals(startState)) {
				drawArrow(g, 0, getHeight() / 2, calculateNodeCenter(node.getValue().x),
						calculateNodeCenter(node.getValue().y), "");
			}

			if (tape!=null&&node.getKey().equals(tape.getCurrentState())) {
				g.setColor(progression.getColor());
			} else {
				g.setColor(DEFAULT_COLOR);
			}
			drawNode(g, node.getValue().x, node.getValue().y, node.getKey()
					.getIdentifier(),node.getKey().isEnd());
		}
	}