'************************************************************************* ' ' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ' ' Copyright 2008 by Sun Microsystems, Inc. ' ' OpenOffice.org - a multi-platform office productivity suite ' ' $RCSfile: view_XSelectionSupplier.xba,v $ ' ' $Revision: 1.3 $ ' ' This file is part of OpenOffice.org. ' ' OpenOffice.org is free software: you can redistribute it and/or modify ' it under the terms of the GNU Lesser General Public License version 3 ' only, as published by the Free Software Foundation. ' ' OpenOffice.org is distributed in the hope that it will be useful, ' but WITHOUT ANY WARRANTY; without even the implied warranty of ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ' GNU Lesser General Public License version 3 for more details ' (a copy is included in the LICENSE file that accompanied this code). ' ' You should have received a copy of the GNU Lesser General Public License ' version 3 along with OpenOffice.org. If not, see ' ' for a copy of the LGPLv3 License. ' '************************************************************************* '************************************************************************* ' Be sure that all variables are dimensioned: option explicit '************************************************************************* ' This Interface/Service test depends on the following GLOBAL variables, ' which must be specified in the object creation: ' - Global SelectableObj1 As Object ' - Global SelectableObj2 As Object '************************************************************************* Dim nCB1Val, nCB2Val As Integer Sub RunTest() '************************************************************************* ' INTERFACE: ' com.sun.star.view.XSelectionSupplier '************************************************************************* On Error Goto ErrHndl Dim bOK, bSelected As Boolean Dim oListener1, oListener2, oSelection As Object Out.Log("creating two Listeners") oListener1 = createUNOListener("CB1_", "com.sun.star.view.XSelectionChangeListener") oListener2 = createUNOListener("CB2_", "com.sun.star.view.XSelectionChangeListener") bOK = NOT isNULL(oListener1) AND NOT isNULL(oListener2) Out.Log("Listeners creation : " & bOK) Test.StartMethod("select()") bOK = true out.log("Trying to select ...") bOK = bOK AND oObj.select(SelectableObj1) Test.MethodTested("select()", bOK) Test.StartMethod("getSelection()") bOK = true oSelection = oObj.getSelection() bOK = bOK AND NOT isNULL(oSelection) ' The selection is either specified by an object which is contained ' in the component to which the view belongs or it is an interface of a ' collection which contains such objects. if bOK then if (cObjectName = "sw.SwXTextView") then bOK = bOK AND oSelection.hasElements() bOK = bOK AND (oSelection.getByIndex(0).String = SelectableObj1.String) elseif (hasUnoInterfaces(oSelection, "com.sun.star.container.XElementAccess")) then bOK = bOK AND oSelection.hasElements() if bOK then bOK = bOK AND (oSelection.getByIndex(0).dbg_methods = SelectableObj1.dbg_methods) else bOK = bOK AND (oSelection.dbg_methods = SelectableObj1.dbg_methods) end if end if Test.MethodTested("getSelection()", bOK) Test.StartMethod("addSelectionChangeListener()") bOK = true Out.Log("Adding two listeners...") oObj.addSelectionChangeListener(oListener1) oObj.addSelectionChangeListener(oListener2) Out.Log("Select item...") ResetCB() bOK = bOK AND oObj.select(SelectableObj2) bOK = bOK AND (nCB1Val > 0) AND (nCB2Val > 0) Test.MethodTested("addSelectionChangeListener()", bOK) Test.StartMethod("removeSelectionChangeListener()") bOK = true Out.Log("Remove first listener...") oObj.removeSelectionChangeListener(oListener1) Out.Log("Select item...") ResetCB() bOK = bOK AND oObj.select(SelectableObj1) bOK = bOK AND (nCB1Val = 0) AND (nCB2Val > 0) Test.MethodTested("removeSelectionChangeListener()", bOK) Out.Log("Remove last listener...") oObj.removeSelectionChangeListener(oListener2) Exit Sub ErrHndl: Test.Exception() bOK = false resume next End Sub Sub CB1_selectionChanged Out.Log("Listener 1 was called") nCB1Val = nCB1Val + 1 end sub Sub CB2_selectionChanged Out.Log("Listener 2 was called") nCB2Val = nCB2Val + 1 end sub Sub ResetCB() nCB1Val = 0 nCB2Val = 0 End Sub