<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="sd_SdUnoDrawView" script:language="StarBasic">


'*************************************************************************
'
'  Licensed to the Apache Software Foundation (ASF) under one
'  or more contributor license agreements.  See the NOTICE file
'  distributed with this work for additional information
'  regarding copyright ownership.  The ASF licenses this file
'  to you under the Apache License, Version 2.0 (the
'  "License"); you may not use this file except in compliance
'  with the License.  You may obtain a copy of the License at
'  
'    http://www.apache.org/licenses/LICENSE-2.0
'  
'  Unless required by applicable law or agreed to in writing,
'  software distributed under the License is distributed on an
'  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
'  KIND, either express or implied.  See the License for the
'  specific language governing permissions and limitations
'  under the License.
'
'*************************************************************************





' Be sure that all variables are dimensioned:
option explicit


' REQUIRED VARIABLES for interface/service tests:

' Required for drawing.XDrawView
Global oPages As Object

' Required for frame.XController
Global oFrameToAttach As Object
Global oModelToAttach As Object
Global bHasNoViewData As Boolean
Global oObjToSuspend As Object
Global bHasNoModel As Boolean

' Required for lang.XComponent
Global oComponentInstance As Object

' Required for frame.XDispatchProvider
Global dispatchUrl As String

' Required for view.XSelectionSupplier
Global SelectableObj1 As Object
Global SelectableObj2 As Object

Global oSecDoc As Object


Sub CreateObj()

'*************************************************************************
' COMPONENT: 
' sd.SdUnoDrawView
'*************************************************************************
On Error Goto ErrHndl
    Dim bOK As Boolean
    bOK = true

    oDoc = utils.createDocument("sdraw", cObjectName)

    oObj = oDoc.getCurrentController()

    oPages = oDoc.getDrawPages()

    oSecDoc = utils.createDocument("sdraw", "For frame.XController")
    bHasNoViewData = false
    bHasNoModel = false
    oObjToSuspend = oObj
    oFrameToAttach = StarDesktop.getCurrentFrame()
    oModelToAttach = oSecDoc

    oComponentInstance = oObj

    dispatchUrl = "slot:27009"

    Dim page As Object
    page = oPages.getByIndex(0)
    AddShape(page, 100, 100)
    AddShape(page, 12000, 100)

    SelectableObj1 = page.getByIndex(0)
    SelectableObj2 = page.getByIndex(1)
Exit Sub
ErrHndl:
    Test.Exception()
End Sub

Sub DisposeObj()
    oSecDoc.dispose()
End Sub

sub AddShape(oPage as Object, nPosX as Integer, nPosY as Integer)
    Dim aPoint As New com.sun.star.awt.Point
    Dim aSize As New com.sun.star.awt.Size
    Dim oRectangleShape As Object

    aPoint.x = nPosX
    aPoint.y = nPosY
    aSize.Width = 10000
    aSize.Height = 10000
    oRectangleShape = oDoc.createInstance("com.sun.star.drawing.RectangleShape")
    oRectangleShape.Size = aSize
    oRectangleShape.Position = aPoint
    oRectangleShape.FillColor = RGB(255, 0, 0)
    oPage.add(oRectangleShape)
End Sub
</script:module>
