/*************************************************************************
 *
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 * 
 * Copyright IBM Corporation 2010.
 * Copyright 2000, 2010 Oracle and/or its affiliates.
 *
 * OpenOffice.org - a multi-platform office productivity suite
 *
 * 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
 * <http://www.openoffice.org/license.html>
 * for a copy of the LGPLv3 License.
 *
 ************************************************************************/

#ifndef __com_sun_star_accessibility_XAccessibleTableSelection_idl__
#define __com_sun_star_accessibility_XAccessibleTableSelection_idl__

#ifndef __com_sun_star_uno_XInterface_idl__ 
#include <com/sun/star/uno/XInterface.idl> 
#endif 
#ifndef __com_sun_star_lang_IndexOutOfBoundsException_idl__
#include <com/sun/star/lang/IndexOutOfBoundsException.idl>
#endif

module com { module sun { module star { module accessibility {

interface XAccessible;

interface XAccessibleTableSelection : ::com::sun::star::uno::XInterface
{
	boolean selectRow ([in] long row) raises (::com::sun::star::lang::IndexOutOfBoundsException);
	boolean unselectRow ([in] long row) raises (::com::sun::star::lang::IndexOutOfBoundsException);

	boolean selectColumn ([in] long column) raises (::com::sun::star::lang::IndexOutOfBoundsException);
	boolean unselectColumn ([in] long column) raises (::com::sun::star::lang::IndexOutOfBoundsException);
};
          
}; }; }; };

#endif
