| <?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="accessibility_XAccessibleSelection" 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 |
| |
| '************************************************************************* |
| ' This Interface/Service test depends on the following GLOBAL variables, |
| ' which must be specified in the object creation: |
| |
| ' Global multiSelection As Boolean |
| |
| '************************************************************************* |
| |
| |
| |
| |
| |
| |
| Sub RunTest() |
| |
| '************************************************************************* |
| ' INTERFACE: |
| ' com.sun.star.accessibility.XAccessibleSelection |
| '************************************************************************* |
| On Error Goto ErrHndl |
| Dim bOK As Boolean, locRes As Boolean |
| Dim chCount As Long, selCount As Long |
| Dim i As Long, mCount As Integer |
| |
| if multiSelection then |
| Out.Log("Object allows multiple selection!") |
| else |
| Out.Log("Object does not allow multiple selection!") |
| End If |
| |
| chCount = oObj.getAccessibleChildCount() |
| selCount = oObj.getSelectedAccessibleChildCount() |
| Out.Log("Object has "+chCount+" child(ren), "+selCount+" of them selected.") |
| If (chCount > 50) then |
| mCount = 50 |
| Out.Log("Object has too many children. Testing only first 50.") |
| else |
| mCount = chCount |
| End If |
| |
| clearSelection() |
| |
| Test.StartMethod("selectAccessibleChild()") |
| bOK = true |
| if (mCount > 0) then |
| i = mCount - 1 |
| while (oObj.isAccessibleChildSelected(i) OR itemDisabled(oObj.getAccessibleChild(i))) AND (i > 0) |
| i = i - 1 |
| wend |
| if (i >= 0) then |
| Out.Log("Selecting child #"+i+"...") |
| oObj.selectAccessibleChild(i) |
| wait(500) |
| locRes = oObj.isAccessibleChildSelected(i) |
| Out.Log("Child #"+i+" selected: "+locRes) |
| bOK = bOK AND locRes |
| End If |
| End If |
| clearSelection() |
| Test.MethodTested("selectAccessibleChild()",bOK) |
| |
| Test.StartMethod("isAccessibleChildSelected()") |
| bOK = true |
| if (mCount > 0) then |
| i = mCount - 1 |
| while (oObj.isAccessibleChildSelected(i) OR itemDisabled(oObj.getAccessibleChild(i))) AND (i > 0) |
| i = i - 1 |
| wend |
| if (i >= 0) then |
| Out.Log("Selecting child #"+i+"...") |
| oObj.selectAccessibleChild(i) |
| wait(500) |
| locRes = oObj.isAccessibleChildSelected(i) |
| Out.Log("Child #"+i+" selected: "+locRes) |
| bOK = bOK AND locRes |
| End If |
| End If |
| clearSelection() |
| Test.MethodTested("isAccessibleChildSelected()",bOK) |
| |
| Test.StartMethod("clearAccessibleSelection()") |
| bOK = true |
| if (mCount > 0) AND (multiSelection) then |
| oObj.selectAccessibleChild(chCount - 1) |
| wait(500) |
| oObj.clearAccessibleSelection() |
| wait(500) |
| bOK = bOK AND NOT oObj.isAccessibleChildSelected(mCount - 1) |
| else |
| Out.Log("Cannot clear all selection for this object!") |
| End If |
| Test.MethodTested("clearAccessibleSelection()",bOK) |
| |
| ' ### The following property was not found in correspond IDL file! ### |
| Test.StartMethod("selectAllAccessibleChildren()") |
| bOK = true |
| i = 0 |
| if ((mCount > 0) AND multiSelection) then |
| ' ### The following property was not found in correspond IDL file! ### |
| oObj.selectAllAccessibleChildren() |
| wait(500) |
| while (i < mCount) |
| bOK = bOK AND oObj.isAccessibleChildSelected(i) |
| i = i + 1 |
| wend |
| else |
| Out.Log("Cannot select all children for this object!") |
| End If |
| clearSelection() |
| Test.MethodTested("selectAllAccessibleChildren()",bOK) |
| |
| Test.StartMethod("getSelectedAccessibleChildCount()") |
| bOK = true |
| Out.Log("Selecting all...") |
| oObj.selectAllAccessibleChildren() |
| wait(500) |
| selCount = oObj.getSelectedAccessibleChildCount() |
| Out.Log("Selected "+selCount+" child(ren).") |
| If (multiSelection) then |
| bOK = bOK AND (selCount = chCount) |
| else |
| bOK = bOK AND (selCount = 1) |
| End If |
| clearSelection() |
| selCount = oObj.getSelectedAccessibleChildCount() |
| if (multiSelection) then |
| bOK = bOK AND (selCount = 0) |
| else |
| bOK = bOK AND (selCount = 1) |
| End If |
| Test.MethodTested("getSelectedAccessibleChildCount()",bOK) |
| |
| Test.StartMethod("getSelectedAccessibleChild()") |
| Dim selAccChild As Object, accChild As Object |
| bOK = true |
| if (mCount > 0) then |
| i = mCount - 1 |
| while (oObj.isAccessibleChildSelected(i) OR itemDisabled(oObj.getAccessibleChild(i))) AND (i > 0) |
| i = i - 1 |
| wend |
| if (i >= 0) then |
| Out.Log("Selecting child #"+i+"...") |
| oObj.selectAccessibleChild(i) |
| wait(500) |
| Out.Log("Child #"+i+" selected: "+oObj.isAccessibleChildSelected(i)) |
| Out.Log("Now "+oObj.getSelectedAccessibleChildCount()+" child(ren) selected.") |
| selCount = oObj.getSelectedAccessibleChildCount() |
| if (selCount > 0) then |
| selAccChild = oObj.getSelectedAccessibleChild(selCount-1) |
| accChild = oObj.getAccessibleChild(i) |
| bOK = bOK AND utils.at_equals(accChild,selAccChild) |
| else |
| Out.Log("There are no selected children. Test fails.") |
| bOK = false |
| End If |
| End If |
| End If |
| Test.MethodTested("getSelectedAccessibleChild()",bOK) |
| |
| Test.StartMethod("deselectAccessibleChild()") |
| Dim newSelCount As Long |
| Dim isSelected as Boolean |
| bOK = true |
| oObj.selectAllAccessibleChildren() |
| wait(500) |
| selCount = oObj.getSelectedAccessibleChildCount() |
| Out.Log("There was "+selCount+" selected child(ren)") |
| Out.Log("Deselecting child...") |
| for i = 0 to mCount - 1 |
| if oObj.isAccessibleChildSelected(i) then |
| isSelected = true |
| end if |
| oObj.deselectAccessibleChild(i) |
| wait(500) |
| newSelCount = oObj.getSelectedAccessibleChildCount() |
| Out.Log("selCount = " + selCount + " newSelCount = " + newSelCount) |
| if (multiSelection) then |
| if isSelected then |
| Out.Log("isSelected") |
| bOK = bOK AND (selCount - 1 = newSelCount) |
| else |
| bOK = bOK AND (selCount = newSelCount) |
| end if |
| else |
| Out.Log("is not multi") |
| bOK = bOK AND (newSelCount <= 1) |
| End If |
| selCount = newSelCount |
| next |
| Test.MethodTested("deselectAccessibleChild()",bOK) |
| |
| Exit Sub |
| ErrHndl: |
| Test.Exception() |
| bOK = false |
| resume next |
| End Sub |
| |
| Sub clearSelection() |
| if NOT multiSelection then Exit Sub |
| Dim selCount As Long |
| selCount = oObj.getSelectedAccessibleChildCount() |
| if (selCount = 0) then Exit Sub |
| oObj.clearAccessibleSelection() |
| wait(500) |
| selCount = oObj.getSelectedAccessibleChildCount() |
| if selCount = 0 then |
| Out.Log("Deselect all: success") |
| else |
| Out.Log("Deselect all: error!. "+selCount+" child(ren) remains selected.") |
| End If |
| End Sub |
| |
| Function itemDisabled(oChild As Object) As Boolean |
| if NOT hasUNOInterfaces(oChild,"com.sun.star.accessibility.XAccessibleContext") then |
| oChild = oChild.getAccessibleContext() |
| End If |
| itemDisabled = NOT oChild.getAccessibleStateSet().contains(21) |
| End Function |
| |
| </script:module> |