/** Constructs new TabbedExplorer that is scrollable if specified as true. */
  public TabbedExplorer(boolean scrollable) {
    super();
    this.scrollable = scrollable;
    this.drawerCards = new ArrayList<TabCard>();
    this.canvasPane = new JPanel(new BorderLayout());
    canvasPane.setBorder(BorderFactory.createMatteBorder(5, 5, 5, 5, CGraphite.blue));

    this.setBackground(Color.black);
    this.timer = new Timer(300, this);
    menu = new JPopupMenu();
    wheeler = new CWheeler(new ArrayList<JComponent>(), false, Color.black);
    wheeler.setPreferredSize(new Dimension(wheeler.getPreferredSize().width, BUTTON_HEIGHT));

    left = new CTabButton("<<");
    left.setPreferredSize(BUTTON_DIMENSION);
    left.addMouseListener(this);
    right = new CTabButton(">>");
    right.setPreferredSize(BUTTON_DIMENSION);
    right.addMouseListener(this);
    down = new CTabButton("V");
    down.setPreferredSize(BUTTON_DIMENSION);
    down.addMouseListener(this);

    setLayout(new GridBagLayout());

    GridBagConstraints gbc = new GridBagConstraints();
    gbc.gridx = 0;
    gbc.gridy = 0;
    gbc.weightx = 0;
    gbc.weighty = 0;
    gbc.fill = GridBagConstraints.NONE;
    add(left, gbc);

    gbc.gridx++;
    gbc.weightx = 1;
    gbc.fill = GridBagConstraints.BOTH;
    add(wheeler, gbc);

    gbc.gridx++;
    gbc.weightx = 0;
    gbc.fill = GridBagConstraints.NONE;
    add(right, gbc);

    gbc.gridx++;
    add(down, gbc);

    gbc.gridx = 0;
    gbc.gridy++;
    gbc.gridwidth = 4;
    gbc.weightx = 1;
    gbc.weighty = 1;
    gbc.fill = GridBagConstraints.BOTH;
    add(canvasPane, gbc);
  }