Beispiel #1
0
  /**
   * 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();
    }
  }
Beispiel #2
0
  public void close() throws Exception {

    XWindow xWindow = (XWindow) UnoRuntime.queryInterface(XWindow.class, xDialogContainer);

    // set the dialog invisible until it is executed
    xWindow.setVisible(false);

    Object oToolkit =
        xMultiComponentFactory.createInstanceWithContext(
            "com.sun.star.awt.Toolkit", xComponentContext);
    XWindowPeer xWindowParentPeer =
        ((XToolkit) UnoRuntime.queryInterface(XToolkit.class, oToolkit)).getDesktopWindow();
    XToolkit xToolkit = (XToolkit) UnoRuntime.queryInterface(XToolkit.class, oToolkit);
    xDialogControl.createPeer(xToolkit, xWindowParentPeer);

    // the return value contains information about how the dialog has been closed
    XDialog xDialog = (XDialog) UnoRuntime.queryInterface(XDialog.class, xDialogControl);
    xDialog.endExecute();
  }