/*************************************************************************
 *
 *  OpenOffice.org - a multi-platform office productivity suite
 *
 *  $RCSfile: XGalleryTheme.idl,v $
 *
 *  $Revision: 1.3 $
 *
 *  last change: $Author: rt $ $Date: 2005/09/08 01:33:58 $
 *
 *  The Contents of this file are made available subject to
 *  the terms of GNU Lesser General Public License Version 2.1.
 *
 *
 *    GNU Lesser General Public License Version 2.1
 *    =============================================
 *    Copyright 2005 by Sun Microsystems, Inc.
 *    901 San Antonio Road, Palo Alto, CA 94303, USA
 *
 *    This library is free software; you can redistribute it and/or
 *    modify it under the terms of the GNU Lesser General Public
 *    License version 2.1, as published by the Free Software Foundation.
 *
 *    This library 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 for more details.
 *
 *    You should have received a copy of the GNU Lesser General Public
 *    License along with this library; if not, write to the Free Software
 *    Foundation, Inc., 59 Temple Place, Suite 330, Boston,
 *    MA  02111-1307  USA
 *
 ************************************************************************/

#ifndef __com_sun_star_gallery_XGalleryTheme_idl__
#define __com_sun_star_gallery_XGalleryTheme_idl__
	
#ifndef __com_sun_star_container_XIndexAccess_idl__
#include <com/sun/star/container/XIndexAccess.idl>
#endif
#ifndef __com_sun_star_lang_XComponent_idl__
#include <com/sun/star/lang/XComponent.idl>
#endif
#ifndef __com_sun_star_lang_IndexOutOfBoundsException_idl__
#include <com/sun/star/lang/IndexOutOfBoundsException.idl>
#endif
#ifndef __com_sun_star_lang_WrappedTargetException_idl__
#include <com/sun/star/lang/WrappedTargetException.idl>
#endif
#ifndef __com_sun_star_graphic_XGraphic_idl__
#include <com/sun/star/graphic/XGraphic.idl>
#endif
#ifndef __com_sun_star_gallery_XGalleryItem_idl__
#include <com/sun/star/gallery/XGalleryItem.idl>
#endif

//=============================================================================

module com {  module sun {  module star {  module gallery {

//=============================================================================

/** provides access to the items of a Gallery themes. It also allows
	inserting and removing of single items.

	<p>This interface extends the interface
	<type scope="com::sun::star::container">XIndexAccess</type> which provides
	access to existing Gallery items collection.</p>

	@see com::sun::star::container::XIndexAccess
	@see com::sun::star::sheet::DataPilotTable
 */
interface XGalleryTheme : com::sun::star::container::XIndexAccess
{
	/** retrieves the name of the Gallery theme

		@returns
			The name of the Gallery theme
	 */
	string getName();
	
	/** updates the theme
		
		<p>This method iterates over each item of the Gallery theme
		and updates it accordingly. Main purpose is to automatically
		regenerate the thumbnails and to remove invalid items, that is items
		who have got an URL that has become invalid. This method also 
		optimizes underlying data structures.</p>
	 */
	void update();
	
	/** inserts an item 

		@param URL
			The URL of a graphic or media object, that should
			be added to the collection
			
		@param Index
			The zero based index of the position where to insert
			the new object inside the collection. If the index is larger than
			or equal to the number of already inserted items, the
			item is inserted at the end of the collection. If the index
			is smaller than 0, the item is inserted at the beginning of
			the collection.
			
		@returns 
			The zero based position at which the object was inserted.
			If the object could not be inserted, -1 is returned.
 		
		@see XGalleryItem
		@see com::sun::star::lang::WrappedTargetException
	*/
	long insertURLByIndex( [in] string URL, [in] long Index )
		raises ( com::sun::star::lang::WrappedTargetException );
	/** inserts an item 

		@param Graphic
			The <type scope="com::sun::star::graphic">XGraphic</type> object
			that should be added to the collection
			
		@param Index
			The zero based index of the position where to insert
			the new object inside the collection. If the index is larger than
			or equal to the number of already inserted items, the
			item is inserted at the end of the collection. If the index
			is smaller than 0, the item is inserted at the beginning of
			the collection.
			
		@returns 
			The zero based position at which the object was inserted.
			If the object could not be inserted, -1 is returned.
 		
		@see com::sun::star::graphic::XGraphic
		@see XGalleryItem
		@see com::sun::star::lang::WrappedTargetException
	*/
	long insertGraphicByIndex( [in] com::sun::star::graphic::XGraphic Graphic, [in] long Index )
		raises ( com::sun::star::lang::WrappedTargetException );
	
	/** inserts an item 

		@param Drawing
			A drawing model that should be added to the collection
			
		@param Index
			The zero based index of the position where to insert
			the new object inside the collection. If the index is larger than
			or equal to the number of already inserted items, the
			item is inserted at the end of the collection. If the index
			is smaller than 0, the item is inserted at the beginning of
			the collection.
			
		@returns 
			The zero based position at which the object was inserted.
			If the object could not be inserted, -1 is returned.
 		
		@see XGalleryItem
		@see com::sun::star::lang::WrappedTargetException
	*/
	long insertDrawingByIndex( [in] com::sun::star::lang::XComponent Drawing, [in] long Index )
		raises ( com::sun::star::lang::WrappedTargetException );
	
	/** deletes an item from the collection 

		@param Index
			The position of the item to be removed. The 
			position is zero based.
 		
		@see com::sun::star::container::NoSuchElementException
	*/
	void removeByIndex( [in] long Index )
		raises ( com::sun::star::lang::IndexOutOfBoundsException );
};

//=============================================================================

}; }; }; };

#endif
