1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski #include "stdafx.h" 23*b1cdbd2cSJim Jagielski #include "AccComponentBase.h" 24*b1cdbd2cSJim Jagielski #include <com/sun/star/accessibility/XAccessible.hpp> 25*b1cdbd2cSJim Jagielski #include <com/sun/star/accessibility/XAccessibleContext.hpp> 26*b1cdbd2cSJim Jagielski #include "MAccessible.h" 27*b1cdbd2cSJim Jagielski 28*b1cdbd2cSJim Jagielski using namespace com::sun::star::accessibility; 29*b1cdbd2cSJim Jagielski using namespace com::sun::star::uno; 30*b1cdbd2cSJim Jagielski 31*b1cdbd2cSJim Jagielski ////////////////////////////////////////////////////////////////////// 32*b1cdbd2cSJim Jagielski // Construction/Destruction 33*b1cdbd2cSJim Jagielski ////////////////////////////////////////////////////////////////////// 34*b1cdbd2cSJim Jagielski CAccComponentBase()35*b1cdbd2cSJim JagielskiCAccComponentBase::CAccComponentBase() 36*b1cdbd2cSJim Jagielski {} 37*b1cdbd2cSJim Jagielski ~CAccComponentBase()38*b1cdbd2cSJim JagielskiCAccComponentBase::~CAccComponentBase() 39*b1cdbd2cSJim Jagielski {} 40*b1cdbd2cSJim Jagielski 41*b1cdbd2cSJim Jagielski 42*b1cdbd2cSJim Jagielski /** 43*b1cdbd2cSJim Jagielski * Returns the location of the upper left corner of the object's bounding 44*b1cdbd2cSJim Jagielski * box relative to the parent. 45*b1cdbd2cSJim Jagielski * 46*b1cdbd2cSJim Jagielski * @param Location the upper left corner of the object's bounding box. 47*b1cdbd2cSJim Jagielski */ get_locationInParent(long * x,long * y)48*b1cdbd2cSJim JagielskiSTDMETHODIMP CAccComponentBase::get_locationInParent(long *x, long *y) 49*b1cdbd2cSJim Jagielski { 50*b1cdbd2cSJim Jagielski 51*b1cdbd2cSJim Jagielski CHECK_ENABLE_INF 52*b1cdbd2cSJim Jagielski 53*b1cdbd2cSJim Jagielski try 54*b1cdbd2cSJim Jagielski { 55*b1cdbd2cSJim Jagielski if (x == NULL || y == NULL) 56*b1cdbd2cSJim Jagielski return E_INVALIDARG; 57*b1cdbd2cSJim Jagielski // #CHECK XInterface# 58*b1cdbd2cSJim Jagielski if(!pRXComp.is()) 59*b1cdbd2cSJim Jagielski return E_FAIL; 60*b1cdbd2cSJim Jagielski 61*b1cdbd2cSJim Jagielski const ::com::sun::star::awt::Point& pt = GetXInterface()->getLocation(); 62*b1cdbd2cSJim Jagielski *x = pt.X; 63*b1cdbd2cSJim Jagielski *y = pt.Y; 64*b1cdbd2cSJim Jagielski return S_OK; 65*b1cdbd2cSJim Jagielski } 66*b1cdbd2cSJim Jagielski catch(...) 67*b1cdbd2cSJim Jagielski { 68*b1cdbd2cSJim Jagielski return E_FAIL; 69*b1cdbd2cSJim Jagielski } 70*b1cdbd2cSJim Jagielski } 71*b1cdbd2cSJim Jagielski 72*b1cdbd2cSJim Jagielski /** 73*b1cdbd2cSJim Jagielski * Returns the location of the upper left corner of the object's bounding 74*b1cdbd2cSJim Jagielski * box in screen. 75*b1cdbd2cSJim Jagielski * 76*b1cdbd2cSJim Jagielski * @param Location the upper left corner of the object's bounding 77*b1cdbd2cSJim Jagielski * box in screen coordinates. 78*b1cdbd2cSJim Jagielski */ get_locationOnScreen(long * x,long * y)79*b1cdbd2cSJim JagielskiSTDMETHODIMP CAccComponentBase::get_locationOnScreen(long *x, long *y) 80*b1cdbd2cSJim Jagielski { 81*b1cdbd2cSJim Jagielski 82*b1cdbd2cSJim Jagielski CHECK_ENABLE_INF 83*b1cdbd2cSJim Jagielski 84*b1cdbd2cSJim Jagielski try 85*b1cdbd2cSJim Jagielski { 86*b1cdbd2cSJim Jagielski if (x == NULL || y == NULL) 87*b1cdbd2cSJim Jagielski return E_INVALIDARG; 88*b1cdbd2cSJim Jagielski // #CHECK XInterface# 89*b1cdbd2cSJim Jagielski if(!pRXComp.is()) 90*b1cdbd2cSJim Jagielski return E_FAIL; 91*b1cdbd2cSJim Jagielski 92*b1cdbd2cSJim Jagielski const ::com::sun::star::awt::Point& pt = GetXInterface()->getLocationOnScreen(); 93*b1cdbd2cSJim Jagielski *x = pt.X; 94*b1cdbd2cSJim Jagielski *y = pt.Y; 95*b1cdbd2cSJim Jagielski return S_OK; 96*b1cdbd2cSJim Jagielski 97*b1cdbd2cSJim Jagielski } 98*b1cdbd2cSJim Jagielski catch(...) 99*b1cdbd2cSJim Jagielski { 100*b1cdbd2cSJim Jagielski return E_FAIL; 101*b1cdbd2cSJim Jagielski } 102*b1cdbd2cSJim Jagielski } 103*b1cdbd2cSJim Jagielski 104*b1cdbd2cSJim Jagielski /** 105*b1cdbd2cSJim Jagielski * Grabs the focus to this object. 106*b1cdbd2cSJim Jagielski * 107*b1cdbd2cSJim Jagielski * @param success the boolean result to be returned. 108*b1cdbd2cSJim Jagielski */ grabFocus(boolean * success)109*b1cdbd2cSJim JagielskiSTDMETHODIMP CAccComponentBase::grabFocus(boolean * success) 110*b1cdbd2cSJim Jagielski { 111*b1cdbd2cSJim Jagielski 112*b1cdbd2cSJim Jagielski CHECK_ENABLE_INF 113*b1cdbd2cSJim Jagielski 114*b1cdbd2cSJim Jagielski ENTER_PROTECTED_BLOCK 115*b1cdbd2cSJim Jagielski 116*b1cdbd2cSJim Jagielski if (success == NULL) 117*b1cdbd2cSJim Jagielski return E_INVALIDARG; 118*b1cdbd2cSJim Jagielski // #CHECK XInterface# 119*b1cdbd2cSJim Jagielski if(!pRXComp.is()) 120*b1cdbd2cSJim Jagielski { 121*b1cdbd2cSJim Jagielski return E_FAIL; 122*b1cdbd2cSJim Jagielski } 123*b1cdbd2cSJim Jagielski GetXInterface()->grabFocus(); 124*b1cdbd2cSJim Jagielski *success = TRUE; 125*b1cdbd2cSJim Jagielski 126*b1cdbd2cSJim Jagielski return S_OK; 127*b1cdbd2cSJim Jagielski 128*b1cdbd2cSJim Jagielski LEAVE_PROTECTED_BLOCK 129*b1cdbd2cSJim Jagielski } 130*b1cdbd2cSJim Jagielski 131*b1cdbd2cSJim Jagielski /** 132*b1cdbd2cSJim Jagielski * Returns the foreground color of this object. 133*b1cdbd2cSJim Jagielski * 134*b1cdbd2cSJim Jagielski * @param Color the color of foreground. 135*b1cdbd2cSJim Jagielski */ get_foreground(IA2Color * foreground)136*b1cdbd2cSJim JagielskiSTDMETHODIMP CAccComponentBase::get_foreground(IA2Color * foreground) 137*b1cdbd2cSJim Jagielski { 138*b1cdbd2cSJim Jagielski 139*b1cdbd2cSJim Jagielski CHECK_ENABLE_INF 140*b1cdbd2cSJim Jagielski 141*b1cdbd2cSJim Jagielski ENTER_PROTECTED_BLOCK 142*b1cdbd2cSJim Jagielski 143*b1cdbd2cSJim Jagielski if (foreground == NULL) 144*b1cdbd2cSJim Jagielski return E_INVALIDARG; 145*b1cdbd2cSJim Jagielski // #CHECK XInterface# 146*b1cdbd2cSJim Jagielski if(!pRXComp.is()) 147*b1cdbd2cSJim Jagielski { 148*b1cdbd2cSJim Jagielski return E_FAIL; 149*b1cdbd2cSJim Jagielski } 150*b1cdbd2cSJim Jagielski *foreground = (long)GetXInterface()->getForeground(); 151*b1cdbd2cSJim Jagielski 152*b1cdbd2cSJim Jagielski return S_OK; 153*b1cdbd2cSJim Jagielski 154*b1cdbd2cSJim Jagielski LEAVE_PROTECTED_BLOCK 155*b1cdbd2cSJim Jagielski } 156*b1cdbd2cSJim Jagielski 157*b1cdbd2cSJim Jagielski /** 158*b1cdbd2cSJim Jagielski * Returns the background color of this object. 159*b1cdbd2cSJim Jagielski * 160*b1cdbd2cSJim Jagielski * @param Color the color of background. 161*b1cdbd2cSJim Jagielski */ get_background(IA2Color * background)162*b1cdbd2cSJim JagielskiSTDMETHODIMP CAccComponentBase::get_background(IA2Color * background) 163*b1cdbd2cSJim Jagielski { 164*b1cdbd2cSJim Jagielski 165*b1cdbd2cSJim Jagielski CHECK_ENABLE_INF 166*b1cdbd2cSJim Jagielski 167*b1cdbd2cSJim Jagielski ENTER_PROTECTED_BLOCK 168*b1cdbd2cSJim Jagielski 169*b1cdbd2cSJim Jagielski if (background == NULL) 170*b1cdbd2cSJim Jagielski return E_INVALIDARG; 171*b1cdbd2cSJim Jagielski // #CHECK XInterface# 172*b1cdbd2cSJim Jagielski if(!pRXComp.is()) 173*b1cdbd2cSJim Jagielski { 174*b1cdbd2cSJim Jagielski return E_FAIL; 175*b1cdbd2cSJim Jagielski } 176*b1cdbd2cSJim Jagielski *background = (long)GetXInterface()->getBackground(); 177*b1cdbd2cSJim Jagielski 178*b1cdbd2cSJim Jagielski return S_OK; 179*b1cdbd2cSJim Jagielski 180*b1cdbd2cSJim Jagielski LEAVE_PROTECTED_BLOCK 181*b1cdbd2cSJim Jagielski } 182*b1cdbd2cSJim Jagielski 183*b1cdbd2cSJim Jagielski /** 184*b1cdbd2cSJim Jagielski * Overide of IUNOXWrapper. 185*b1cdbd2cSJim Jagielski * 186*b1cdbd2cSJim Jagielski * @param pXInterface the pointer of UNO interface. 187*b1cdbd2cSJim Jagielski */ put_XInterface(long pXInterface)188*b1cdbd2cSJim JagielskiSTDMETHODIMP CAccComponentBase::put_XInterface(long pXInterface) 189*b1cdbd2cSJim Jagielski { 190*b1cdbd2cSJim Jagielski 191*b1cdbd2cSJim Jagielski CHECK_ENABLE_INF 192*b1cdbd2cSJim Jagielski 193*b1cdbd2cSJim Jagielski ENTER_PROTECTED_BLOCK 194*b1cdbd2cSJim Jagielski 195*b1cdbd2cSJim Jagielski CUNOXWrapper::put_XInterface(pXInterface); 196*b1cdbd2cSJim Jagielski //special query. 197*b1cdbd2cSJim Jagielski if(pUNOInterface == NULL) 198*b1cdbd2cSJim Jagielski return E_FAIL; 199*b1cdbd2cSJim Jagielski Reference<XAccessibleContext> pRContext = pUNOInterface->getAccessibleContext(); 200*b1cdbd2cSJim Jagielski if( !pRContext.is() ) 201*b1cdbd2cSJim Jagielski { 202*b1cdbd2cSJim Jagielski return E_FAIL; 203*b1cdbd2cSJim Jagielski } 204*b1cdbd2cSJim Jagielski Reference<XAccessibleComponent> pRXI(pRContext,UNO_QUERY); 205*b1cdbd2cSJim Jagielski if( !pRXI.is() ) 206*b1cdbd2cSJim Jagielski pRXComp = NULL; 207*b1cdbd2cSJim Jagielski else 208*b1cdbd2cSJim Jagielski pRXComp = pRXI.get(); 209*b1cdbd2cSJim Jagielski 210*b1cdbd2cSJim Jagielski return S_OK; 211*b1cdbd2cSJim Jagielski 212*b1cdbd2cSJim Jagielski LEAVE_PROTECTED_BLOCK 213*b1cdbd2cSJim Jagielski } 214