' This is an example to make resizable modal dialog.
' A dialog created by the dialog editor can be embedded
' to make easy to create dialog.
' This example requires Standard.Dialog in application dialog
' with list box named ListBox1.
Sub ResizableDialogTest11
' parent
oParent = ThisComponent.getCurrentController()._
getFrame().getContainerWindow()
' create base window as modal dialog
oBaseDialog = CreateBaseDialog(oParent)
' embed the dialog created by the dialog editor
sURL = "vnd.sun.star.script:Standard.Dialog1?location=application"
oDialog = CreateInnerDialog(oBaseDialog, sURL)
' to show the dialog, have to be done by the outer dialog
If oBaseDialog.execute() > 0 Then
msgbox "Do something..."
End If
oBaseDialog.dispose()
End Sub
' Create new base dialog.
' @param oParent parent window peer
' @return dialog window
Function CreateBaseDialog(oParent As Variant) As Variant
oToolkit = oParent.getToolkit()
WA = com.sun.star.awt.WindowAttribute
aRect = CreateUnoStruct("com.sun.star.awt.Rectangle")
oDesc = CreateUnoStruct("com.sun.star.awt.WindowDescriptor")
With oDesc
.Type = com.sun.star.awt.WindowClass.SIMPLE
.WindowServiceName = "dialog"
.Parent = oParent
.ParentIndex = -1
.Bounds = aRect
.WindowAttributes = WA.CLOSEABLE OR WA.MOVEABLE OR WA.SIZEABLE OR WA.BORDER
End With
oDialog = oToolkit.createWindow(oDesc)
oDialog.addTopWindowListener(CreateUnoListener(_
"WindowListener_", "com.sun.star.awt.XTopWindowListener"))
oDialog.addWindowListener(CreateUnoListener(_
"WindowListener_", "com.sun.star.awt.XWindowListener"))
CreateBaseDialog = oDialog
End Function
' Create child dialog embedded
' @param oParent parent window
' @param sURL dialog URL, without toolbar
Function CreateInnerDialog(oParent As Variant, sURL As String) As Variant
PS = com.sun.star.awt.PosSize
oDP = CreateUnoService("com.sun.star.awt.ContainerWindowProvider")
oChildDialog = oDP.createContainerWindow(sURL, "", oParent, nothing)
oChildDialog.setPosSize(0, 0, 0, 0, PS.POS)
oChildDialog.setVisible(True)
aSize = oChildDialog.getPosSize()
oParent.setPosSize(0, 0, aSize.Width, aSize.Height, PS.SIZE)
oChildDialog.addWindowListener(CreateUnoListener(_
"oDialogWindow_", "com.sun.star.awt.XWindowListener"))
CreateInnerDialog = oChildDialog
End Function
'
' XWindowListener
Sub oDialogWindow_windowResized(ev)
' this called indirect by resizeing of the outer dialog
aRect = ev.Source.getPosSize()
' dialog controls have to be repositioned and resized by hand
oListBox = ev.Source.getControl("ListBox1")
oListBox.setPosSize(aRect.Width - 10 - oListBox.getPosSize().Width, _
0, 0, 0, com.sun.star.awt.PosSize.X)
End Sub
Sub oDialogWindow_windowMoved(ev)
End Sub
Sub oDialogWindow_windowShown(ev)
End Sub
Sub oDialogWindow_windowHidden(ev)
End Sub
' Listeners for base dialog
' XTopWindowListener
Sub WindowListener_disposing(ev)
End Sub
Sub WindowListener_windowOpened(ev)
End Sub
Sub WindowListener_windowClosing(ev)
' helps to close the window by close button of the window
ev.Source.endExecute()
End Sub
Sub WindowListener_windowClosed(ev)
End Sub
Sub WindowListener_windowMinimized(ev)
End Sub
Sub WindowListener_windowNormalized(ev)
End Sub
Sub WindowListener_windowActivated(ev)
End Sub
Sub WindowListener_windowDeactivated(ev)
End Sub
' XWindowListener
Sub WindowListener_windowResized(ev)
' resize inner dialog as first child window
aSize = ev.Source.getSize()
ev.Source.Windows(0).setPosSize(0, 0, _
aSize.Width, aSize.Height, com.sun.star.awt.PosSize.SIZE)
End Sub
Sub WindowListener_windowMoved(ev)
End Sub
Sub WindowListener_windowShown(ev)
End Sub
Sub WindowListener_windowHidden(ev)
End Sub
Users browsing this forum: No registered users and 7 guests