/*************************************************************************
 *
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 * 
 * 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_drawing_SlideSorter_idl__
#define __com_sun_star_drawing_SlideSorter_idl__

#ifndef __com_sun_star_drawing_framework_XView_idl__
#include <com/sun/star/drawing/framework/XView.idl>
#endif
#ifndef __com_sun_star_drawing_XDrawView_idl__
#include <com/sun/star/drawing/XDrawView.idl>
#endif
#ifndef __com_sun_star_awt_XWindow_idl__
#include <com/sun/star/awt/XWindow.idl>
#endif
#ifndef __com_sun_star_container_XIndexAccess_idl__
#include <com/sun/star/container/XIndexAccess.idl>
#endif
#ifndef __com_sun_star_frame_XController_idl__
#include <com/sun/star/frame/XController.idl>
#endif
#ifndef __com_sun_star_util_Color_idl__
#include <com/sun/star/util/Color.idl>
#endif

module com {  module sun {  module star {  module drawing {

/** This interface exists only because services do not directly support
    multiple inheritance and attributes.
    <p>It provides the interfaces and attributes that every object that
    implements the <type>SlideSorter</type> service.</p>
*/
interface XSlideSorterBase
{
    /** This interface is included to mark a <type>SlideSorter</type> object
        as view of the drawing framework and to provide a
        <type>ResourceId</type>.
    */
    interface ::com::sun::star::drawing::framework::XView;

    /** The <type>XDrawView</type> interface is included to provide access
        to the current slide (especially write access).
    */
    interface ::com::sun::star::drawing::XDrawView;

    /** The set of slides that are displayed by the implementing object.
        <p>The default value is the set of all slides of the document for
        which a slide sorter is created.</p>
    */
    [attribute] ::com::sun::star::container::XIndexAccess DocumentSlides;

    /** Set this flag to <TRUE/> in order to have the current slide
        highlighted.
        <p>The default value is <FALSE/>.</p>
    */
    [attribute] boolean IsHighlightCurrentSlide;

    /** Set this flag to <TRUE/> in order to visualize the selection of
        slides (typically a bold frame around the selected slides).
        <p>The default value is <TRUE/>.</p>
    */
    [attribute] boolean IsShowSelection;

    /** Set this flag to <TRUE/> to visualize to where the focus is by
        showing a dotted rectangle around the focused slide.
        <p>The default value is <TRUE/>.</p>
    */
    [attribute] boolean IsShowFocus;

    /** When this flag has the value <TRUE/> then every time the current
        slide is changed the visual area is shifted so that the new current
        slide is display in the center of the slide sorter window.
        <p>It is not always possible to move the current slide into the
        exact center of the window, for example when slides are located near
        the start or end of a document.</p>
        <p>The default value is <FALSE/>.
    */
    [attribute] boolean IsCenterSelection;

    /** This flag controls whether updates of previews are created during
        full screen presentations (<FALSE/>) or not (<TRUE/>).  The
        suspension of preview creations is an optimization for not slowing
        down a running presentation.
        <p>The default value is <TRUE/>.</p>
    */
    [attribute] boolean IsSuspendPreviewUpdatesDuringFullScreenPresentation;

    /** The orientation of a slide sorter can be either vertical (<TRUE/>)
        or horizontal (<FALSE/>).
    */
    [attribute] boolean IsOrientationVertical;

    /** This flag is a hint to make scrolling look smooth.
    */
    [attribute] boolean IsSmoothScrolling;

    [attribute] ::com::sun::star::util::Color BackgroundColor;
    [attribute] ::com::sun::star::util::Color TextColor;
    [attribute] ::com::sun::star::util::Color SelectionColor;
    [attribute] ::com::sun::star::util::Color HighlightColor;

    /** This flag controls whether the model can be modified by using
        keyboard or mouse.
        <p>The default value is <TRUE/>.</p>
    */
    [attribute] boolean IsUIReadOnly;
};




/** A slide sorter shows previews for a set of slides, typically all slides
    in a document, and allows the selection, reordering, creation, and
    deletion of slides.
    <p>In the drawing framework a slide sorter is regarded as a view.</p>
*/
service SlideSorter : XSlideSorterBase
{
    /** Create a new slide sorter object.
        @param xViewId
            The resource id of the new slide sorter.
        @param xController
            The access point to an impress document.
        @param xParentWindow
            The parent window which will be completely covered by the new
            slide sorter.
    */
    create (
        [in] framework::XResourceId xViewId,
        [in] ::com::sun::star::frame::XController xController,
        [in] ::com::sun::star::awt::XWindow xParentWindow);
};

}; }; }; };

#endif
