summaryrefslogtreecommitdiffstats
path: root/offapi/com/sun/star/frame/XInfobarProvider.idl
blob: b04f50b9e70b98f141bc380298955bfdc9b7521c (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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
/*
 * This file is part of the LibreOffice project.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 */

#ifndef __com_sun_star_frame_XInfobarProvider_idl__
#define __com_sun_star_frame_XInfobarProvider_idl__

#include <com/sun/star/beans/StringPair.idl>
#include <com/sun/star/frame/InfobarType.idl>
#include <com/sun/star/uno/XInterface.idl>

module com {  module sun {  module star {  module frame {

/** Allows to add Infobars to a frame.

    This interface can be obtained via com::sun::star::frame::XController.

    @since LibreOffice 6.4
 */
interface XInfobarProvider: uno::XInterface
{
    /** Creates and displays a new Infobar.

        @param id
            The ID by which this Infobar is recognized.
            You can remove the Infobar afterwards using this ID.

        @param primaryMessage
            The (short) primary message.
            Will appear at the start of the infobar in bold letters.
            May be empty.

        @param secondaryMessage
            The (longer) secondary message.
            Will appear in normal letters after the primaryMessage

        @param infobarType
            The type of the Infobar.
            See com::sun::star::frame::InfobarType for possible values.

        @param actionButtons
            A sequence of action buttons.
            The buttons will be added from Right to Left at the right side of the info bar.
            Each button is represented by a com::sun::star::beans::StringPair.
            StringPair::First represents the button label, while
            StringPair::Second represents the button URL which will be called on button click.
            The URL can be any URL, either external (http://libreoffice.org), or internal (.uno:Save),
            or from your extension (service:your.example.Extension?anyAction).

        @param showCloseButton
            Whether the Close (x) button is shown at the end of the Infobar.
            Set to false, when you don't want the user to close the Infobar.

        @throws com::sun::star::lang::IllegalArgumentException
            If an Infobar with the same ID already exists, or infobarType contains an invalid value.

        <p> The example below adds a new infobar named MyInfoBar with type INFO and close (x) button.</p>
        @code{.bas}
        Sub AddInfobar
            Dim buttons(1) as new com.sun.star.beans.StringPair
            buttons(0).first = "Close doc"
            buttons(0).second = ".uno:CloseDoc"
            buttons(1).first = "Paste into doc"
            buttons(1).second = ".uno:Paste"
            ThisComponent.getCurrentController().appendInfobar("MyInfoBar", "Hello world", "Things happened. What now?", com.sun.star.frame.InfobarType.INFO, buttons, true)
        End Sub
        @endcode
     */
    void appendInfobar(
        [in] string id,
        [in] string primaryMessage,
        [in] string secondaryMessage,
        [in] long infobarType,
        [in] sequence<com::sun::star::beans::StringPair> actionButtons,
        [in] boolean showCloseButton)
        raises(com::sun::star::lang::IllegalArgumentException);

    /** Updates an existing Infobar.
        Use if you want to update only small parts of the Infobar.

        @see appendInfobar for parameter documentation.

        @throws com::sun::star::container::NoSuchElementException
            If no such Infobar exists (it might have been closed by the user already)
        @throws com::sun::star::lang::IllegalArgumentException
            If infobarType contains an invalid value.

        <p>Update the infobar and change the type to WARNING</p>
        @code{.bas}
        Sub UpdateInfobar
            ThisComponent.getCurrentController().updateInfobar("MyInfoBar", "WARNING","Do not read this message.", com.sun.star.frame.InfobarType.WARNING)
        End Sub
        @endcode
     */
    void updateInfobar(
        [in] string id,
        [in] string primaryMessage,
        [in] string secondaryMessage,
        [in] long infobarType)
        raises(com::sun::star::container::NoSuchElementException);

    /** Removes an existing Infobar.

        @param id
            The ID which was used when creating this Infobar.

        @throws com::sun::star::container::NoSuchElementException
            If no such Infobar exists (it might have been closed by the user already)

        <p>Remove MyInfoBar infobar</p>
        @code{.bas}
        Sub RemoveInfobar
            ThisComponent.getCurrentController().removeInfobar("MyInfoBar")
        End Sub
        @endcode
     */

    void removeInfobar([in] string id) raises(com::sun::star::container::NoSuchElementException);

    /** Check if Infobar exists.

        @param id
            The ID which was used when creating this Infobar.

        @since LibreOffice 7.0

        @code{.bas}
        Function  HasMyInfobar as boolean
            hasMyInfoBar = ThisComponent.getCurrentController().hasInfobar("MyInfoBar")
        End Function
        @endcode
     */
    boolean hasInfobar([in] string id);
};


}; }; }; };

#endif

/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */