1*5fdc4257SSteve Yin /************************************************************************* 2*5fdc4257SSteve Yin * 3*5fdc4257SSteve Yin * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4*5fdc4257SSteve Yin * 5*5fdc4257SSteve Yin * Copyright IBM Corporation 2010. 6*5fdc4257SSteve Yin * Copyright 2000, 2010 Oracle and/or its affiliates. 7*5fdc4257SSteve Yin * 8*5fdc4257SSteve Yin * OpenOffice.org - a multi-platform office productivity suite 9*5fdc4257SSteve Yin * 10*5fdc4257SSteve Yin * This file is part of OpenOffice.org. 11*5fdc4257SSteve Yin * 12*5fdc4257SSteve Yin * OpenOffice.org is free software: you can redistribute it and/or modify 13*5fdc4257SSteve Yin * it under the terms of the GNU Lesser General Public License version 3 14*5fdc4257SSteve Yin * only, as published by the Free Software Foundation. 15*5fdc4257SSteve Yin * 16*5fdc4257SSteve Yin * OpenOffice.org is distributed in the hope that it will be useful, 17*5fdc4257SSteve Yin * but WITHOUT ANY WARRANTY; without even the implied warranty of 18*5fdc4257SSteve Yin * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19*5fdc4257SSteve Yin * GNU Lesser General Public License version 3 for more details 20*5fdc4257SSteve Yin * (a copy is included in the LICENSE file that accompanied this code). 21*5fdc4257SSteve Yin * 22*5fdc4257SSteve Yin * You should have received a copy of the GNU Lesser General Public License 23*5fdc4257SSteve Yin * version 3 along with OpenOffice.org. If not, see 24*5fdc4257SSteve Yin * <http://www.openoffice.org/license.html> 25*5fdc4257SSteve Yin * for a copy of the LGPLv3 License. 26*5fdc4257SSteve Yin * 27*5fdc4257SSteve Yin ************************************************************************/ 28*5fdc4257SSteve Yin 29*5fdc4257SSteve Yin #include "stdafx.h" 30*5fdc4257SSteve Yin #include "AccComponentBase.h" 31*5fdc4257SSteve Yin #include <com/sun/star/accessibility/XAccessible.hpp> 32*5fdc4257SSteve Yin #include <com/sun/star/accessibility/XAccessibleContext.hpp> 33*5fdc4257SSteve Yin #include "MAccessible.h" 34*5fdc4257SSteve Yin 35*5fdc4257SSteve Yin using namespace com::sun::star::accessibility; 36*5fdc4257SSteve Yin using namespace com::sun::star::uno; 37*5fdc4257SSteve Yin 38*5fdc4257SSteve Yin ////////////////////////////////////////////////////////////////////// 39*5fdc4257SSteve Yin // Construction/Destruction 40*5fdc4257SSteve Yin ////////////////////////////////////////////////////////////////////// 41*5fdc4257SSteve Yin 42*5fdc4257SSteve Yin CAccComponentBase::CAccComponentBase() 43*5fdc4257SSteve Yin {} 44*5fdc4257SSteve Yin 45*5fdc4257SSteve Yin CAccComponentBase::~CAccComponentBase() 46*5fdc4257SSteve Yin {} 47*5fdc4257SSteve Yin 48*5fdc4257SSteve Yin 49*5fdc4257SSteve Yin /** 50*5fdc4257SSteve Yin * Returns the location of the upper left corner of the object's bounding 51*5fdc4257SSteve Yin * box relative to the parent. 52*5fdc4257SSteve Yin * 53*5fdc4257SSteve Yin * @param Location the upper left corner of the object's bounding box. 54*5fdc4257SSteve Yin */ 55*5fdc4257SSteve Yin STDMETHODIMP CAccComponentBase::get_locationInParent(long *x, long *y) 56*5fdc4257SSteve Yin { 57*5fdc4257SSteve Yin 58*5fdc4257SSteve Yin CHECK_ENABLE_INF 59*5fdc4257SSteve Yin 60*5fdc4257SSteve Yin try 61*5fdc4257SSteve Yin { 62*5fdc4257SSteve Yin if (x == NULL || y == NULL) 63*5fdc4257SSteve Yin return E_INVALIDARG; 64*5fdc4257SSteve Yin // #CHECK XInterface# 65*5fdc4257SSteve Yin if(!pRXComp.is()) 66*5fdc4257SSteve Yin return E_FAIL; 67*5fdc4257SSteve Yin 68*5fdc4257SSteve Yin const ::com::sun::star::awt::Point& pt = GetXInterface()->getLocation(); 69*5fdc4257SSteve Yin *x = pt.X; 70*5fdc4257SSteve Yin *y = pt.Y; 71*5fdc4257SSteve Yin return S_OK; 72*5fdc4257SSteve Yin } 73*5fdc4257SSteve Yin catch(...) 74*5fdc4257SSteve Yin { 75*5fdc4257SSteve Yin return E_FAIL; 76*5fdc4257SSteve Yin } 77*5fdc4257SSteve Yin } 78*5fdc4257SSteve Yin 79*5fdc4257SSteve Yin /** 80*5fdc4257SSteve Yin * Returns the location of the upper left corner of the object's bounding 81*5fdc4257SSteve Yin * box in screen. 82*5fdc4257SSteve Yin * 83*5fdc4257SSteve Yin * @param Location the upper left corner of the object's bounding 84*5fdc4257SSteve Yin * box in screen coordinates. 85*5fdc4257SSteve Yin */ 86*5fdc4257SSteve Yin STDMETHODIMP CAccComponentBase::get_locationOnScreen(long *x, long *y) 87*5fdc4257SSteve Yin { 88*5fdc4257SSteve Yin 89*5fdc4257SSteve Yin CHECK_ENABLE_INF 90*5fdc4257SSteve Yin 91*5fdc4257SSteve Yin try 92*5fdc4257SSteve Yin { 93*5fdc4257SSteve Yin if (x == NULL || y == NULL) 94*5fdc4257SSteve Yin return E_INVALIDARG; 95*5fdc4257SSteve Yin // #CHECK XInterface# 96*5fdc4257SSteve Yin if(!pRXComp.is()) 97*5fdc4257SSteve Yin return E_FAIL; 98*5fdc4257SSteve Yin 99*5fdc4257SSteve Yin const ::com::sun::star::awt::Point& pt = GetXInterface()->getLocationOnScreen(); 100*5fdc4257SSteve Yin *x = pt.X; 101*5fdc4257SSteve Yin *y = pt.Y; 102*5fdc4257SSteve Yin return S_OK; 103*5fdc4257SSteve Yin 104*5fdc4257SSteve Yin } 105*5fdc4257SSteve Yin catch(...) 106*5fdc4257SSteve Yin { 107*5fdc4257SSteve Yin return E_FAIL; 108*5fdc4257SSteve Yin } 109*5fdc4257SSteve Yin } 110*5fdc4257SSteve Yin 111*5fdc4257SSteve Yin /** 112*5fdc4257SSteve Yin * Grabs the focus to this object. 113*5fdc4257SSteve Yin * 114*5fdc4257SSteve Yin * @param success the boolean result to be returned. 115*5fdc4257SSteve Yin */ 116*5fdc4257SSteve Yin STDMETHODIMP CAccComponentBase::grabFocus(boolean * success) 117*5fdc4257SSteve Yin { 118*5fdc4257SSteve Yin 119*5fdc4257SSteve Yin CHECK_ENABLE_INF 120*5fdc4257SSteve Yin 121*5fdc4257SSteve Yin ENTER_PROTECTED_BLOCK 122*5fdc4257SSteve Yin 123*5fdc4257SSteve Yin if (success == NULL) 124*5fdc4257SSteve Yin return E_INVALIDARG; 125*5fdc4257SSteve Yin // #CHECK XInterface# 126*5fdc4257SSteve Yin if(!pRXComp.is()) 127*5fdc4257SSteve Yin { 128*5fdc4257SSteve Yin return E_FAIL; 129*5fdc4257SSteve Yin } 130*5fdc4257SSteve Yin GetXInterface()->grabFocus(); 131*5fdc4257SSteve Yin *success = TRUE; 132*5fdc4257SSteve Yin 133*5fdc4257SSteve Yin return S_OK; 134*5fdc4257SSteve Yin 135*5fdc4257SSteve Yin LEAVE_PROTECTED_BLOCK 136*5fdc4257SSteve Yin } 137*5fdc4257SSteve Yin 138*5fdc4257SSteve Yin /** 139*5fdc4257SSteve Yin * Returns the foreground color of this object. 140*5fdc4257SSteve Yin * 141*5fdc4257SSteve Yin * @param Color the color of foreground. 142*5fdc4257SSteve Yin */ 143*5fdc4257SSteve Yin STDMETHODIMP CAccComponentBase::get_foreground(IA2Color * foreground) 144*5fdc4257SSteve Yin { 145*5fdc4257SSteve Yin 146*5fdc4257SSteve Yin CHECK_ENABLE_INF 147*5fdc4257SSteve Yin 148*5fdc4257SSteve Yin ENTER_PROTECTED_BLOCK 149*5fdc4257SSteve Yin 150*5fdc4257SSteve Yin if (foreground == NULL) 151*5fdc4257SSteve Yin return E_INVALIDARG; 152*5fdc4257SSteve Yin // #CHECK XInterface# 153*5fdc4257SSteve Yin if(!pRXComp.is()) 154*5fdc4257SSteve Yin { 155*5fdc4257SSteve Yin return E_FAIL; 156*5fdc4257SSteve Yin } 157*5fdc4257SSteve Yin *foreground = (long)GetXInterface()->getForeground(); 158*5fdc4257SSteve Yin 159*5fdc4257SSteve Yin return S_OK; 160*5fdc4257SSteve Yin 161*5fdc4257SSteve Yin LEAVE_PROTECTED_BLOCK 162*5fdc4257SSteve Yin } 163*5fdc4257SSteve Yin 164*5fdc4257SSteve Yin /** 165*5fdc4257SSteve Yin * Returns the background color of this object. 166*5fdc4257SSteve Yin * 167*5fdc4257SSteve Yin * @param Color the color of background. 168*5fdc4257SSteve Yin */ 169*5fdc4257SSteve Yin STDMETHODIMP CAccComponentBase::get_background(IA2Color * background) 170*5fdc4257SSteve Yin { 171*5fdc4257SSteve Yin 172*5fdc4257SSteve Yin CHECK_ENABLE_INF 173*5fdc4257SSteve Yin 174*5fdc4257SSteve Yin ENTER_PROTECTED_BLOCK 175*5fdc4257SSteve Yin 176*5fdc4257SSteve Yin if (background == NULL) 177*5fdc4257SSteve Yin return E_INVALIDARG; 178*5fdc4257SSteve Yin // #CHECK XInterface# 179*5fdc4257SSteve Yin if(!pRXComp.is()) 180*5fdc4257SSteve Yin { 181*5fdc4257SSteve Yin return E_FAIL; 182*5fdc4257SSteve Yin } 183*5fdc4257SSteve Yin *background = (long)GetXInterface()->getBackground(); 184*5fdc4257SSteve Yin 185*5fdc4257SSteve Yin return S_OK; 186*5fdc4257SSteve Yin 187*5fdc4257SSteve Yin LEAVE_PROTECTED_BLOCK 188*5fdc4257SSteve Yin } 189*5fdc4257SSteve Yin 190*5fdc4257SSteve Yin /** 191*5fdc4257SSteve Yin * Overide of IUNOXWrapper. 192*5fdc4257SSteve Yin * 193*5fdc4257SSteve Yin * @param pXInterface the pointer of UNO interface. 194*5fdc4257SSteve Yin */ 195*5fdc4257SSteve Yin STDMETHODIMP CAccComponentBase::put_XInterface(long pXInterface) 196*5fdc4257SSteve Yin { 197*5fdc4257SSteve Yin 198*5fdc4257SSteve Yin CHECK_ENABLE_INF 199*5fdc4257SSteve Yin 200*5fdc4257SSteve Yin ENTER_PROTECTED_BLOCK 201*5fdc4257SSteve Yin 202*5fdc4257SSteve Yin CUNOXWrapper::put_XInterface(pXInterface); 203*5fdc4257SSteve Yin //special query. 204*5fdc4257SSteve Yin if(pUNOInterface == NULL) 205*5fdc4257SSteve Yin return E_FAIL; 206*5fdc4257SSteve Yin Reference<XAccessibleContext> pRContext = pUNOInterface->getAccessibleContext(); 207*5fdc4257SSteve Yin if( !pRContext.is() ) 208*5fdc4257SSteve Yin { 209*5fdc4257SSteve Yin return E_FAIL; 210*5fdc4257SSteve Yin } 211*5fdc4257SSteve Yin Reference<XAccessibleComponent> pRXI(pRContext,UNO_QUERY); 212*5fdc4257SSteve Yin if( !pRXI.is() ) 213*5fdc4257SSteve Yin pRXComp = NULL; 214*5fdc4257SSteve Yin else 215*5fdc4257SSteve Yin pRXComp = pRXI.get(); 216*5fdc4257SSteve Yin 217*5fdc4257SSteve Yin return S_OK; 218*5fdc4257SSteve Yin 219*5fdc4257SSteve Yin LEAVE_PROTECTED_BLOCK 220*5fdc4257SSteve Yin } 221