void AbiCollab::_setDocument(PD_Document* pDoc)
{
    UT_DEBUGMSG(("AbiCollab::setDocument()\n"));
    UT_return_if_fail(pDoc);

    AbiCollabSessionManager* pManager = AbiCollabSessionManager::getManager();
    UT_return_if_fail(pManager);

    // assume clean state
    UT_return_if_fail(m_iDocListenerId==0);
    m_pDoc = pDoc;

    // register ourselves as a mouse listener to all frames showing this document
    for (UT_sint32 i = 0; i < XAP_App::getApp()->getFrameCount(); i++)
    {
        XAP_Frame* pFrame = XAP_App::getApp()->getFrame(i);
        UT_continue_if_fail(pFrame);

        if (pFrame->getCurrentDoc() == m_pDoc)
        {
            // this frame is showing our document, attach a mouse listener to it
            EV_Mouse* pMouse = pFrame->getMouse();
            if (pMouse)
                m_mMouseListenerIds[pMouse] = pMouse->registerListener(this);
        }
    }

    // add the new export listeners
    UT_uint32 lid = 0;
    pDoc->addListener(static_cast<PL_Listener *>(&m_Export), &lid);
    _setDocListenerId(lid);
    UT_DEBUGMSG(("Added document listener %d\n", lid));
}