/**************************************************************
 * 
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the 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
