/** * Constructor. Creates a non - modal dialog * * @param c The OpenOffice component context * @param DialogURL the URL of the dialog from the dialog library */ public XWikiModelessDialog(XComponentContext c, String DialogURL) { this.m_xContext = c; this.xMCF = m_xContext.getServiceManager(); try { Object obj; obj = xMCF.createInstanceWithContext("com.sun.star.awt.DialogProvider2", m_xContext); XDialogProvider2 xDialogProvider = (XDialogProvider2) UnoRuntime.queryInterface(XDialogProvider2.class, obj); XDialog xDialog = xDialogProvider.createDialogWithHandler(DialogURL, this); XControl dialogControl = (XControl) UnoRuntime.queryInterface(XControl.class, xDialog); XControlModel xBasicDialogModel = dialogControl.getModel(); Object dialog = xMCF.createInstanceWithContext("com.sun.star.awt.UnoControlDialog", m_xContext); XControl xControl = (XControl) UnoRuntime.queryInterface(XControl.class, dialog); xControl.setModel(xBasicDialogModel); XToolkit xToolkit = (XToolkit) UnoRuntime.queryInterface( XToolkit.class, xMCF.createInstanceWithContext("com.sun.star.awt.Toolkit", m_xContext)); Object desktop = xMCF.createInstanceWithContext("com.sun.star.frame.Desktop", m_xContext); XDesktop xDesktop = (XDesktop) UnoRuntime.queryInterface(XDesktop.class, desktop); XFrame m_xFrame = xDesktop.getCurrentFrame(); XWindow xdefaultWindow = m_xFrame.getComponentWindow(); WindowDescriptor aDescriptor = new WindowDescriptor(); aDescriptor.Type = WindowClass.TOP; aDescriptor.WindowServiceName = ""; aDescriptor.ParentIndex = -1; aDescriptor.Parent = xToolkit.getDesktopWindow(); aDescriptor.Bounds = xdefaultWindow.getPosSize(); aDescriptor.WindowAttributes = WindowAttribute.BORDER | WindowAttribute.MOVEABLE | WindowAttribute.SIZEABLE | WindowAttribute.CLOSEABLE; xPeer = xToolkit.createWindow(aDescriptor); XWindow xWindow = (XWindow) UnoRuntime.queryInterface(XWindow.class, xPeer); xWindow.setVisible(false); xControl.createPeer(xToolkit, xPeer); m_xDialog = (XDialog) UnoRuntime.queryInterface(XDialog.class, dialog); m_xControlContainer = (XControlContainer) UnoRuntime.queryInterface(XControlContainer.class, m_xDialog); } catch (com.sun.star.uno.Exception ex) { ex.printStackTrace(); } }