On Windows and Linux, because of different form system, there make the window
envent be fired in different sequence.
for userform dialog, there are some listeners can be used. And they are related
with toolkit(awt/vclxdialog.cxx and awt/vclxwindow.cxx) and vcl(window/window[2].cxx) module. 

XTopWindowListener
XWindowListener
    event sequence in Linux after execute is called, windowMoved -> windowResized -> windowShown
 -> windowOpened -> windowActivated
    event sequecn in Linux after endExecute is called, windowHidden -> windowClosed

    event sequence in Windows after execute is called, windowMoved -> windowResized -> windowActivated
 -> windowShown -> windowOpened(if endExecute be call immediately and doesn't use windowOpened to fire
 the Vba event, windowOpened will appeared after windowHidden and windowClosed).
    event sequence in Windows after endExecute is called, windowHidden -> windowClosed.

XModeChangeListener
    do not seend anything when dialog just call dialog.execute.
XModeChangeApproveListener
    not implemented.
XAccessibleEventListener
    will fire STATE_CHANGED, BOUNDRECT_CHANGED and CHILD(will not appear in Windows, if call execute 
 and then call endExecute) event when execute be called.

In MSO, userform.show will yield a dialog, and it will grab and lock the focus for current application.
and this will make activate event is fired once like a opened(shown) event in OOo.
So, we should use windowOpened and windowActivate to ensure the activate event be fired once. It does not
only use windowOpened because in Linux windowOpened appeares before the dialog really visible.

Windows OOo dialgo execute has some problem:
http://www.openoffice.org/issues/show_bug.cgi?id=91038
