/** Initializes all components, sets labels */
  public void initGUI() {
    removeAll();

    btFirst = new JButton(app.getImageIcon("nav_skipback.png"));
    btLast = new JButton(app.getImageIcon("nav_skipforward.png"));
    btPrev = new JButton(app.getImageIcon("nav_rewind.png"));
    btNext = new JButton(app.getImageIcon("nav_fastforward.png"));

    btFirst.addActionListener(this);
    btLast.addActionListener(this);
    btPrev.addActionListener(this);
    btNext.addActionListener(this);

    JPanel leftPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
    leftPanel.add(btFirst);
    leftPanel.add(btPrev);
    leftPanel.add(lbSteps);
    leftPanel.add(btNext);
    leftPanel.add(btLast);

    playPanel = new JPanel();
    playPanel.setVisible(showPlayButton);
    playPanel.add(Box.createRigidArea(new Dimension(20, 10)));
    btPlay = new JButton();
    btPlay.setIcon(new ImageIcon(app.getPlayImage()));
    btPlay.addActionListener(this);

    spDelay.addChangeListener(
        new ChangeListener() {
          public void stateChanged(ChangeEvent e) {
            try {
              playDelay = Double.parseDouble(spDelay.getValue().toString());
            } catch (Exception ex) {
              playDelay = 2;
            }
          }
        });

    playPanel.add(btPlay);
    playPanel.add(spDelay);
    playPanel.add(new JLabel("s"));

    btOpenWindow = new JButton();
    btOpenWindow.setIcon(app.getImageIcon("table.gif"));
    btOpenWindow.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            // app.getGuiManager().showConstructionProtocol();
            if (!app.getGuiManager().showView(App.VIEW_CONSTRUCTION_PROTOCOL))
              app.getGuiManager().setShowView(true, App.VIEW_CONSTRUCTION_PROTOCOL);
          }
        });

    // add panels together to center
    setLayout(new BoxLayout(this, BoxLayout.LINE_AXIS));
    add(leftPanel);
    add(playPanel);
    add(btOpenWindow);
    add(Box.createRigidArea(new Dimension(20, 10)));

    setLabels();
    setPlayDelay(playDelay);
    update();
  }