public void display() {
    final JPanel mainPanel = new JPanel();
    mainPanel.setLayout(new GridBagLayout());

    // Setup resource
    ResourceUtils.resLabel(addressLabel, addressField, Res.getString("label.jabber.address") + ":");

    RolloverButton backButton = new RolloverButton();
    backButton.setIcon(SparkRes.getImageIcon(SparkRes.LEFT_ARROW_IMAGE));
    backButton.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            int selectedItem = addressField.getSelectedIndex();
            if (selectedItem > 0) {
              Object historyItem = addressField.getItemAt(selectedItem - 1);
              browse((String) historyItem);
            }
          }
        });

    mainPanel.add(
        backButton,
        new GridBagConstraints(
            0,
            0,
            1,
            1,
            0.0,
            0.0,
            GridBagConstraints.WEST,
            GridBagConstraints.NONE,
            new Insets(5, 5, 5, 5),
            0,
            0));
    mainPanel.add(
        addressLabel,
        new GridBagConstraints(
            1,
            0,
            1,
            1,
            0.0,
            0.0,
            GridBagConstraints.WEST,
            GridBagConstraints.NONE,
            new Insets(5, 5, 5, 5),
            0,
            0));
    mainPanel.add(
        addressField,
        new GridBagConstraints(
            2,
            0,
            1,
            1,
            1.0,
            0.0,
            GridBagConstraints.WEST,
            GridBagConstraints.HORIZONTAL,
            new Insets(5, 5, 5, 5),
            0,
            0));

    JButton browseButton = new JButton("");
    ResourceUtils.resButton(browseButton, Res.getString("button.browse"));
    browseButton.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            String serviceName = (String) addressField.getSelectedItem();
            if (!ModelUtil.hasLength(serviceName)) {
              return;
            }
            browse(serviceName);
          }
        });
    mainPanel.add(
        addressField,
        new GridBagConstraints(
            2,
            0,
            1,
            1,
            1.0,
            0.0,
            GridBagConstraints.WEST,
            GridBagConstraints.HORIZONTAL,
            new Insets(5, 5, 5, 5),
            0,
            0));
    mainPanel.add(
        browseButton,
        new GridBagConstraints(
            3,
            0,
            1,
            1,
            0.0,
            0.0,
            GridBagConstraints.WEST,
            GridBagConstraints.NONE,
            new Insets(5, 5, 5, 5),
            0,
            0));

    browsePanel = new JPanel();
    browsePanel.setLayout(new FlowLayout(FlowLayout.LEFT));
    browsePanel.setBackground(Color.white);

    JScrollPane pane =
        new JScrollPane(
            browsePanel,
            JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
            JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
    browsePanel.setPreferredSize(new Dimension(0, 0));
    mainPanel.add(
        pane,
        new GridBagConstraints(
            0,
            1,
            4,
            1,
            1.0,
            1.0,
            GridBagConstraints.WEST,
            GridBagConstraints.BOTH,
            new Insets(5, 5, 5, 5),
            0,
            0));

    JFrame frame = new JFrame();
    frame.setIconImage(SparkRes.getImageIcon(SparkRes.FIND_IMAGE).getImage());

    JDialog dialog = new JDialog(frame, Res.getString("title.jabber.browser"));
    dialog.getContentPane().setLayout(new BorderLayout());
    dialog.getContentPane().add(mainPanel, BorderLayout.CENTER);
    dialog.pack();
    dialog.setSize(600, 400);
    dialog.setLocationRelativeTo(SparkManager.getMainWindow());
    dialog.setVisible(true);
  }