summaryrefslogtreecommitdiff
path: root/svtools/inc/svtools/toolpanel/decklayouter.hxx
blob: da03d7c6c3aac27d0b11e824b76ed338068c3b4a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
/*************************************************************************
 * 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 SVT_DECKLAYOUTER_HXX
#define SVT_DECKLAYOUTER_HXX

#include <com/sun/star/uno/Reference.hxx>

#include <rtl/ref.hxx>

#include <boost/optional.hpp>

namespace com { namespace sun { namespace star { namespace accessibility {
    class XAccessible;
} } } }
class Rectangle;
class Point;

//........................................................................
namespace svt
{
//........................................................................

    //====================================================================
    //= IDeckLayouter
    //====================================================================
    class IDeckLayouter : public ::rtl::IReference
    {
    public:
        /** re-arranges the elements of the tool deck, taking into account the
            available space for the complete deck.

            @param i_rDeckPlayground
                the playground for the complete tool panel deck
            @return
                the content area for a single tool panel
        */
        virtual ::Rectangle Layout( const ::Rectangle& i_rDeckPlayground ) = 0;

        /** destroys the instance

            Since the layouter is ref-counted, but might keep references to non-ref-counted objects
            (in particular, the ToolPanelDeck, which is a VCL-Window, and thus cannot be ref-counted),
            Destroy is the definitive way to dispose the instance. Technically, it's still alive afterwards,
            but non-functional.
        */
        virtual void        Destroy() = 0;

        /** assuming that a layouter neesds to provide some kind of panel selector control, this method
            requests to set the focus to this control.
        */
        virtual void        SetFocusToPanelSelector() = 0;

        /** returns the number of components in the XAccessible hierarchy which are needed to represent all elements
            the layouter is responsible form.

            Note that the implementation must guarantee that the count is fixed over the life time of the layouter.
        */
        virtual size_t      GetAccessibleChildCount() const = 0;

        /** retrieves the XAccessible implementation for the <code>i_nChildIndex</code>'th child in the XAccessible
            hierarchy.
        */
        virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
                            GetAccessibleChild(
                                const size_t i_nChildIndex,
                                const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& i_rParentAccessible
                            ) = 0;

        virtual ~IDeckLayouter()
        {
        }
    };

    typedef ::rtl::Reference< IDeckLayouter >   PDeckLayouter;

//........................................................................
} // namespace svt
//........................................................................

#endif // SVT_DECKLAYOUTER_HXX