/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package com.kuijper; import com.sun.star.awt.XControl; import com.sun.star.awt.XControlContainer; import com.sun.star.awt.XControlModel; import com.sun.star.awt.XDialog; import com.sun.star.awt.XDialogProvider; import com.sun.star.awt.XToolkit; import com.sun.star.awt.XTopWindow; import com.sun.star.awt.XWindow; import com.sun.star.awt.XWindowPeer; import com.sun.star.awt.tab.XTabPageContainerModel; import com.sun.star.awt.tab.XTabPageModel; import com.sun.star.beans.PropertyVetoException; import com.sun.star.beans.UnknownPropertyException; import com.sun.star.beans.XMultiPropertySet; import com.sun.star.beans.XPropertySet; import com.sun.star.container.XNameAccess; import com.sun.star.container.XNameContainer; import com.sun.star.lang.WrappedTargetException; import com.sun.star.lang.XComponent; import com.sun.star.lang.XMultiComponentFactory; import com.sun.star.lang.XMultiServiceFactory; import com.sun.star.uno.XComponentContext; import com.sun.star.uno.UnoRuntime; /** * BTGUI * * @author bram * * see also chapter 19 of the openoffice developer's guide */ public abstract class BTGUI { // the openoffice global context private final XComponentContext m_xContext; // the 'lowest level' multicomponentfactory // which is used to create dialogs etc. XMultiComponentFactory m_xMCF = null; // the dialog's multiservice factory // which is used to create interfaces for elements in dialogs XMultiServiceFactory m_xMSFDialog = null; // name of the dialog model type public XNameContainer m_xDlgModelNameContainer = null; // name of the control associated with this gui component public XControl m_xDialogControl = null; public XDialog m_xDialog = null; // window peer public XWindowPeer m_xWindowPeer = null; // name of the control container of this gui component public XControlContainer m_xDlgContainer = null; // the top window public XTopWindow m_xTopWindow = null; // c'tor public BTGUI(XComponentContext context) { m_xContext = context; m_xMCF = m_xContext.getServiceManager(); // create the dialog createDialog(); }; // instantiate the dialog private void createDialog() { try { // create the dialog Object oDialogProvider =m_xMCF.createInstanceWithContext("com.sun.star.awt.DialogProvider", m_xContext); XDialogProvider xDialogProvider = UnoRuntime.queryInterface(XDialogProvider.class, oDialogProvider); XDialog xDialog = xDialogProvider.createDialog("vnd.sun.star.script:Standard.Dialog1?location=application"); if (xDialog == null) return; XControlModel xDialogModel = UnoRuntime.queryInterface(XControl.class, xDialog).getModel(); XMultiServiceFactory xMsf = UnoRuntime.queryInterface(XMultiServiceFactory.class, xDialogModel); XNameContainer xNameContainer = UnoRuntime.queryInterface(XNameContainer.class, xDialogModel); // now create the tab pages container model Object tabPagesModel = xMsf.createInstance("com.sun.star.awt.tab.UnoControlTabPageContainerModel"); xNameContainer.insertByName("tab", tabPagesModel); XPropertySet xPropSet = UnoRuntime.queryInterface(XPropertySet.class, tabPagesModel); xPropSet.setPropertyValue("Width", 100); xPropSet.setPropertyValue("Height", 100); XTabPageContainerModel xTabPagesModel = UnoRuntime.queryInterface(XTabPageContainerModel.class, tabPagesModel); // add the first page XTabPageModel xTabPageModel1 = xTabPagesModel.createTabPage((short) 1); xTabPageModel1.setTitle("Page 1"); xTabPagesModel.insertByIndex(0, xTabPageModel1); // add the second page XTabPageModel xTabPageModel2 = xTabPagesModel.createTabPage((short) 2); xTabPageModel2.setTitle("Page 2"); xTabPagesModel.insertByIndex(1, xTabPageModel2); // execute the dialog xDialog.execute(); } catch (com.sun.star.uno.Exception exception) { exception.printStackTrace(System.out); } } };