/** Reloads status icons. */
  public void loadSkin() {
    super.loadSkin();

    int count = getTabCount();

    for (int i = 0; i < count; i++) {
      Component c = this.getComponentAt(i);

      if (c instanceof ChatPanel)
        setIconAt(i, ((ChatPanel) c).getChatSession().getChatStatusIcon());
    }
  }
  /**
   * When a tab is highlighted sets an indicator of the number of unread messages in this tab.
   *
   * @param tabIndex the index of the tab
   * @param unreadMessageNumber the number of messages that the user hasn't yet read
   */
  public void highlightTab(int tabIndex, int unreadMessageNumber) {
    Component c = this.getComponentAt(tabIndex);

    String tabTitle = "";
    if (c instanceof ChatPanel) tabTitle = ((ChatPanel) c).getChatSession().getChatName();
    else if (c instanceof CallPanel) tabTitle = ((CallPanel) c).getCallTitle();

    if (unreadMessageNumber > 0) tabTitle = "(" + unreadMessageNumber + ") " + tabTitle;

    this.setTitleAt(tabIndex, tabTitle);

    super.highlightTab(tabIndex);
  }
  /**
   * Overrides setSelectedIndex in SIPCommTabbedPane in order to remove the indicator of number of
   * unread messages previously set.
   *
   * @param tabIndex the index of the tab to be selected
   */
  public void setSelectedIndex(int tabIndex) {
    if (tabIndex < 0) return;

    Component c = this.getComponentAt(tabIndex);

    if (c instanceof ChatPanel) {
      ChatPanel chatPanel = (ChatPanel) c;

      int unreadMessageNumber = chatPanel.unreadMessageNumber;

      if (unreadMessageNumber > 0) {
        String tabTitle = chatPanel.getChatSession().getChatName();
        this.setTitleAt(tabIndex, tabTitle);
      }

      chatPanel.unreadMessageNumber = 0;
    }

    super.setSelectedIndex(tabIndex);
  }