/**
   * Instantiates a new component source.
   *
   * @param window the window
   */
  public ComponentSource(final NavigatorWindow window) {
    super();
    this.actionPool = new ActionPool(this, window);
    this.window = window;
    this.addressField = new AddressField(this);
    this.progressBar = new ProgressBar();
    this.statusMessageComponent = new JLabel();
    this.searchButton = this.getSearchButton();
    this.updateSearchButtonTooltip();
    JMenu bookmarksMenu = new JMenu("Recent Bookmarks");
    this.recentBookmarksMenu = bookmarksMenu;
    bookmarksMenu.setMnemonic('R');
    bookmarksMenu.addMenuListener(
        new MenuAdapter() {
          @Override
          public void menuSelected(MenuEvent e) {
            populateRecentBookmarks();
          }
        });
    JMenu taggedBookmarksMenu = new JMenu("Tagged Bookmarks");
    this.taggedBookmarksMenu = taggedBookmarksMenu;
    taggedBookmarksMenu.setMnemonic('T');
    taggedBookmarksMenu.setToolTipText(
        "Shows up to "
            + PREFERRED_MAX_MENU_SIZE
            + " tags with up to "
            + PREFERRED_MAX_MENU_SIZE
            + " recent bookmarks each.");
    taggedBookmarksMenu.addMenuListener(
        new MenuAdapter() {
          @Override
          public void menuSelected(MenuEvent e) {
            populateTaggedBookmarks();
          }
        });
    JMenu backMoreMenu = new JMenu();
    // BackMoreAction only used for enabling
    backMoreMenu.setAction(new BackMoreAction(this, window, actionPool));
    backMoreMenu.addMenuListener(
        new MenuAdapter() {
          @Override
          public void menuSelected(MenuEvent e) {
            populateBackMore();
          }
        });
    this.backMoreMenu = backMoreMenu;
    backMoreMenu.setText("Back To");
    JMenu forwardMoreMenu = new JMenu();
    // ForwardMoreAction only used for enabling
    forwardMoreMenu.setAction(new ForwardMoreAction(this, window, actionPool));
    forwardMoreMenu.addMenuListener(
        new MenuAdapter() {
          @Override
          public void menuSelected(MenuEvent e) {
            populateForwardMore();
          }
        });
    this.forwardMoreMenu = forwardMoreMenu;
    forwardMoreMenu.setText("Forward To");

    JMenu searchersMenu = new JMenu();
    searchersMenu.addMenuListener(
        new MenuAdapter() {
          @Override
          public void menuSelected(MenuEvent e) {
            populateSearchers();
          }
        });
    this.searchersMenu = searchersMenu;
    searchersMenu.setText("Searching With");
    searchersMenu.setToolTipText(
        "Select the search engine that is used by the Search button in the address bar.");
  }