static void
remove_chat (InfcBrowser                    *browser,
             GeditCollaborationWindowHelper *helper)
{
	GtkWidget *chat;
	GeditPanel *panel;
	InfXmlConnection *connection;
	InfcSessionProxy *proxy;

	proxy = infc_browser_get_chat_session (browser);

	if (proxy != NULL)
	{
		InfSession *session;

		session = infc_session_proxy_get_session (proxy);
		inf_session_close (session);
	}

	connection = infc_browser_get_connection (browser);

	chat = GTK_WIDGET (g_object_get_data (G_OBJECT (connection),
	                                      CHAT_DATA_KEY));

	if (chat != NULL)
	{
		panel = gedit_window_get_bottom_panel (helper->priv->window);
		gedit_panel_remove_item (panel, chat);

		g_object_set_data (G_OBJECT (connection), CHAT_DATA_KEY, NULL);
	}
}
void
_gedit_cmd_view_show_bottom_pane (GtkAction   *action,
				 GeditWindow *window)
{
	gboolean visible;
	GeditPanel *panel;

	gedit_debug (DEBUG_COMMANDS);

	visible = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action));

	panel = gedit_window_get_bottom_panel (window);

	if (visible)
	{
		gtk_widget_show (GTK_WIDGET (panel));
		gtk_widget_grab_focus (GTK_WIDGET (panel));
	}
	else
	{
		gtk_widget_hide (GTK_WIDGET (panel));
	}
}
static void
sync_completed (InfSession       *session,
                InfXmlConnection *connection,
                gpointer          data)
{
	ChatData *cdata = (ChatData *)data;
	GeditPanel *panel;
	GeditCollaborationBookmark *bookmark;
	GeditCollaborationUser *user;
	GtkWidget *image;
	GtkWidget *hpaned;
	GtkWidget *sw;
	GtkWidget *tree_view;
	GeditCollaborationUserStore *store;
	InfUserTable *user_table;
	gchar *chat_name;

	g_signal_handlers_disconnect_by_func (session,
	                                      G_CALLBACK (sync_failed),
	                                      data);

	g_signal_handlers_disconnect_by_func (session,
	                                      G_CALLBACK (sync_completed),
	                                      data);

	bookmark = g_object_get_data (G_OBJECT (connection),
	                              BOOKMARK_DATA_KEY);

	if (bookmark)
	{
		user = gedit_collaboration_bookmark_get_user (bookmark);
	}
	else
	{
		user = gedit_collaboration_user_get_default ();
	}

	chat_name = get_chat_name (cdata->helper, connection);

	hpaned = gtk_hpaned_new ();
	gtk_widget_show (hpaned);

	gtk_paned_pack1 (GTK_PANED (hpaned), cdata->chat, TRUE, TRUE);
	gtk_widget_show (cdata->chat);

	build_user_view (cdata->helper, &tree_view, &sw, FALSE);
	gtk_widget_show (sw);
	user_table = inf_session_get_user_table (session);

	store = gedit_collaboration_user_store_new (user_table, FALSE);

	gtk_tree_view_set_model (GTK_TREE_VIEW (tree_view),
				 GTK_TREE_MODEL (store));

	gtk_paned_pack2 (GTK_PANED (hpaned), sw, TRUE, TRUE);

	panel = gedit_window_get_bottom_panel (cdata->helper->priv->window);

	image = create_collaboration_image (cdata->helper);
	gedit_panel_add_item (panel,
	                      hpaned,
			      "GeditCollaborationChat",
			      chat_name ? chat_name : _("Chat"),
			      image);
	g_object_set_data (G_OBJECT (connection), CHAT_DATA_KEY, hpaned);

	cdata->user = gedit_collaboration_user_get_name (user);

	g_free (chat_name);
	request_join (cdata, cdata->user);
}