private DialogBoxDisplay(Game game, PGNViewer pgnViewer) {
		this.pgnViewer = pgnViewer;
		Dimension boardSize = new Dimension(600, 600);

		addMenuBar();

		// setup chess board
		JPanel mainPanel = new JPanel();
		mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));
		mainPanel.setPreferredSize(new Dimension(680, 680));

		chessBoardPanel = new JPanel();
		chessBoardPanel.setLayout(new GridLayout(8, 8));
		chessBoardPanel.setPreferredSize(boardSize);
		chessBoardPanel.setBounds(0, 0, boardSize.width, boardSize.height);
		chessBoardPanel.setAlignmentY(TOP_ALIGNMENT);
		for (int i = 0; i < 64; i++) {
			JPanel square = new JPanel(new BorderLayout());
			chessBoardPanel.add(square);
			int row = (i / 8) % 2;
			if (row == 0) {
				square.setBackground(i % 2 == 0 ? Color.black : Color.red);
			} else {
				square.setBackground(i % 2 == 0 ? Color.red : Color.black);
			}
		}
		mainPanel.add(chessBoardPanel);

		ChessBoardIterator chessBoardIterator = game.getBoard().iterator();
		while (chessBoardIterator.hasNext()) {
			Location current = chessBoardIterator.next();
			ChessPiece chessPiece = current.getChessPiece();
			addChessPiece(current, chessPiece);
		}

		// end button
		JButton lastButton = new JButton("Last");
		lastButton.setVerticalTextPosition(SwingConstants.CENTER);
		lastButton.setHorizontalTextPosition(SwingConstants.CENTER);
		lastButton.setMnemonic(KeyEvent.VK_L);
		lastButton.setActionCommand("last");
		lastButton.addActionListener(this);

		// next button
		JButton nextButton = new JButton("Next");
		nextButton.setVerticalTextPosition(SwingConstants.CENTER);
		nextButton.setHorizontalTextPosition(SwingConstants.CENTER);
		nextButton.setMnemonic(KeyEvent.VK_N);
		nextButton.setActionCommand("next");
		nextButton.addActionListener(this);

		// back button
		JButton backButton = new JButton("Back");
		backButton.setVerticalTextPosition(SwingConstants.CENTER);
		backButton.setHorizontalTextPosition(SwingConstants.CENTER);
		backButton.setMnemonic(KeyEvent.VK_B);
		backButton.setActionCommand("back");
		backButton.addActionListener(this);

		// start button
		JButton firstButton = new JButton("First");
		firstButton.setVerticalTextPosition(SwingConstants.CENTER);
		firstButton.setHorizontalTextPosition(SwingConstants.CENTER);
		firstButton.setMnemonic(KeyEvent.VK_I);
		firstButton.setActionCommand("first");
		firstButton.addActionListener(this);
		nextButton.setAlignmentX(Component.CENTER_ALIGNMENT);
		firstButton.setAlignmentX(Component.CENTER_ALIGNMENT);
		backButton.setAlignmentX(Component.CENTER_ALIGNMENT);
		lastButton.setAlignmentX(Component.CENTER_ALIGNMENT);

		// moveButtonsPanel
		JPanel moveButtonsPanel = new JPanel();
		moveButtonsPanel.setPreferredSize(new Dimension(30, 30));
		moveButtonsPanel.setBackground(Color.GRAY);
		GridLayout gridLayout = new GridLayout();
		gridLayout.setHgap(15);
		moveButtonsPanel.setBorder(BorderFactory.createLineBorder(Color.BLACK,
				10));
		moveButtonsPanel.setLayout(gridLayout);
		moveButtonsPanel.setAlignmentY(BOTTOM_ALIGNMENT);
		moveButtonsPanel.setPreferredSize(new Dimension(25, 25));
		moveButtonsPanel.add(firstButton, BorderLayout.EAST);
		moveButtonsPanel.add(backButton, BorderLayout.CENTER);
		moveButtonsPanel.add(nextButton, BorderLayout.WEST);
		moveButtonsPanel.add(lastButton, BorderLayout.NORTH);

		// putting it all together
		mainPanel.add(moveButtonsPanel);
		getContentPane().add(mainPanel);
	}