1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
10 #ifndef INCLUDED_VCL_UITEST_UIOBJECT_HXX
11 #define INCLUDED_VCL_UITEST_UIOBJECT_HXX
13 #include <rtl/ustring.hxx>
17 #include <vcl/vclevent.hxx>
18 #include <vcl/vclptr.hxx>
19 #include <vcl/dllapi.h>
34 class SvTreeListEntry
;
37 class VerticalTabControl
;
39 class VclMultiLineEdit
;
42 namespace vcl
{ class Window
; }
43 namespace weld
{ class CustomWidgetController
; }
45 typedef std::map
<OUString
, OUString
> StringMap
;
48 * This class wraps a UI object like vcl::Window and provides
49 * an interface for the UI testing.
51 * This class should only have virtual methods.
53 class UITEST_DLLPUBLIC UIObject
55 UIObject(UIObject
const &) = delete;
56 UIObject
& operator =(UIObject
const &) = delete;
64 * Returns the state of the wrapped UI object as a
65 * string key value map.
67 virtual StringMap
get_state();
70 * Executes an action on the wrapped UI object,
71 * possibly with some additional parameters
73 virtual void execute(const OUString
& rAction
,
74 const StringMap
& rParameters
);
77 * Returns the type of the UIObject. Additional information might
78 * be available through UIObject::get_state().
80 virtual OUString
get_type() const;
83 * Returns the child of the current UIObject with the corresponding id.
84 * If no object with that id is being found returns a nullptr.
87 virtual std::unique_ptr
<UIObject
> get_child(const OUString
& rID
);
90 * Returns a set containing all descendants of the object.
92 virtual std::set
<OUString
> get_children() const;
95 * Currently an internal method to dump the state of the current UIObject as represented by get_state().
97 * This method should not be exposed to the outside world.
100 virtual OUString
dumpState() const;
103 * Currently an internal method to dump the parent-child relationship starting from the current top focus window.
105 * This method should not be exposed to the outside world.
108 virtual OUString
dumpHierarchy() const;
111 * Gets the corresponding Action string for the event.
113 virtual OUString
get_action(VclEventId nEvent
) const;
116 class UITEST_DLLPUBLIC WindowUIObject
: public UIObject
118 VclPtr
<vcl::Window
> mxWindow
;
122 WindowUIObject(const VclPtr
<vcl::Window
>& xWindow
);
124 virtual StringMap
get_state() override
;
126 virtual void execute(const OUString
& rAction
,
127 const StringMap
& rParameters
) override
;
129 virtual OUString
get_type() const override
;
131 virtual std::unique_ptr
<UIObject
> get_child(const OUString
& rID
) override
;
133 std::unique_ptr
<UIObject
> get_visible_child(const OUString
& rID
);
135 virtual std::set
<OUString
> get_children() const override
;
137 virtual OUString
dumpState() const override
;
139 virtual OUString
dumpHierarchy() const override
;
141 virtual OUString
get_action(VclEventId nEvent
) const override
;
143 static std::unique_ptr
<UIObject
> create(vcl::Window
* pWindow
);
147 virtual OUString
get_name() const;
151 // TODO: moggi: what about push buttons?
152 class ButtonUIObject final
: public WindowUIObject
154 VclPtr
<Button
> mxButton
;
157 ButtonUIObject(const VclPtr
<Button
>& xButton
);
158 virtual ~ButtonUIObject() override
;
160 virtual StringMap
get_state() override
;
162 virtual void execute(const OUString
& rAction
,
163 const StringMap
& rParameters
) override
;
165 static std::unique_ptr
<UIObject
> create(vcl::Window
* pWindow
);
167 virtual OUString
get_action(VclEventId nEvent
) const override
;
171 virtual OUString
get_name() const override
;
174 class DialogUIObject final
: public WindowUIObject
176 VclPtr
<Dialog
> mxDialog
;
180 DialogUIObject(const VclPtr
<Dialog
>& xDialog
);
181 virtual ~DialogUIObject() override
;
183 virtual StringMap
get_state() override
;
185 static std::unique_ptr
<UIObject
> create(vcl::Window
* pWindow
);
189 virtual OUString
get_name() const override
;
192 class EditUIObject
: public WindowUIObject
198 EditUIObject(const VclPtr
<Edit
>& xEdit
);
199 virtual ~EditUIObject() override
;
201 virtual void execute(const OUString
& rAction
,
202 const StringMap
& rParameters
) override
;
204 virtual StringMap
get_state() override
;
206 static std::unique_ptr
<UIObject
> create(vcl::Window
* pWindow
);
208 virtual OUString
get_action(VclEventId nEvent
) const override
;
212 virtual OUString
get_name() const override
;
215 class MultiLineEditUIObject final
: public WindowUIObject
217 VclPtr
<VclMultiLineEdit
> mxEdit
;
221 MultiLineEditUIObject(const VclPtr
<VclMultiLineEdit
>& xEdit
);
222 virtual ~MultiLineEditUIObject() override
;
224 virtual void execute(const OUString
& rAction
,
225 const StringMap
& rParameters
) override
;
227 virtual StringMap
get_state() override
;
229 static std::unique_ptr
<UIObject
> create(vcl::Window
* pWindow
);
233 virtual OUString
get_name() const override
;
236 // TODO: moggi: maybe let it inherit from the button case
237 class CheckBoxUIObject final
: public WindowUIObject
240 VclPtr
<CheckBox
> mxCheckBox
;
243 CheckBoxUIObject(const VclPtr
<CheckBox
>& xCheckbox
);
244 virtual ~CheckBoxUIObject() override
;
246 virtual void execute(const OUString
& rAction
,
247 const StringMap
& rParameters
) override
;
249 virtual StringMap
get_state() override
;
251 static std::unique_ptr
<UIObject
> create(vcl::Window
* pWindow
);
253 virtual OUString
get_action(VclEventId nEvent
) const override
;
257 virtual OUString
get_name() const override
;
260 class RadioButtonUIObject final
: public WindowUIObject
263 VclPtr
<RadioButton
> mxRadioButton
;
266 RadioButtonUIObject(const VclPtr
<RadioButton
>& xCheckbox
);
267 virtual ~RadioButtonUIObject() override
;
269 virtual void execute(const OUString
& rAction
,
270 const StringMap
& rParameters
) override
;
272 virtual StringMap
get_state() override
;
274 static std::unique_ptr
<UIObject
> create(vcl::Window
* pWindow
);
276 virtual OUString
get_action(VclEventId nEvent
) const override
;
280 virtual OUString
get_name() const override
;
283 class TabPageUIObject final
: public WindowUIObject
286 VclPtr
<TabPage
> mxTabPage
;
288 TabPageUIObject(const VclPtr
<TabPage
>& xTabPage
);
289 virtual ~TabPageUIObject() override
;
291 virtual void execute(const OUString
& rAction
,
292 const StringMap
& rParameters
) override
;
294 virtual StringMap
get_state() override
;
296 static std::unique_ptr
<UIObject
> create(vcl::Window
* pWindow
);
300 virtual OUString
get_name() const override
;
303 class ListBoxUIObject final
: public WindowUIObject
306 VclPtr
<ListBox
> mxListBox
;
310 ListBoxUIObject(const VclPtr
<ListBox
>& xListBox
);
311 virtual ~ListBoxUIObject() override
;
313 virtual void execute(const OUString
& rAction
,
314 const StringMap
& rParameters
) override
;
316 virtual StringMap
get_state() override
;
318 static std::unique_ptr
<UIObject
> create(vcl::Window
* pWindow
);
320 virtual OUString
get_action(VclEventId nEvent
) const override
;
324 virtual OUString
get_name() const override
;
327 // TODO: moggi: should it inherit from EditUIObject?
328 class ComboBoxUIObject final
: public WindowUIObject
331 VclPtr
<ComboBox
> mxComboBox
;
335 ComboBoxUIObject(const VclPtr
<ComboBox
>& xListBox
);
336 virtual ~ComboBoxUIObject() override
;
338 virtual void execute(const OUString
& rAction
,
339 const StringMap
& rParameters
) override
;
341 virtual StringMap
get_state() override
;
343 static std::unique_ptr
<UIObject
> create(vcl::Window
* pWindow
);
345 virtual OUString
get_action(VclEventId nEvent
) const override
;
349 virtual OUString
get_name() const override
;
352 class SpinUIObject final
: public WindowUIObject
355 VclPtr
<SpinButton
> mxSpinButton
;
359 SpinUIObject(const VclPtr
<SpinButton
>& xSpinButton
);
360 virtual ~SpinUIObject() override
;
362 virtual void execute(const OUString
& rAction
,
363 const StringMap
& rParameters
) override
;
365 virtual StringMap
get_state() override
;
367 static std::unique_ptr
<UIObject
> create(vcl::Window
* pWindow
);
369 virtual OUString
get_action(VclEventId nEvent
) const override
;
373 virtual OUString
get_name() const override
;
376 class SpinFieldUIObject
: public EditUIObject
378 VclPtr
<SpinField
> mxSpinField
;
382 SpinFieldUIObject(const VclPtr
<SpinField
>& xEdit
);
383 virtual ~SpinFieldUIObject() override
;
385 virtual void execute(const OUString
& rAction
,
386 const StringMap
& rParameters
) override
;
388 virtual StringMap
get_state() override
;
390 static std::unique_ptr
<UIObject
> create(vcl::Window
* pWindow
);
392 virtual OUString
get_action(VclEventId nEvent
) const override
;
396 virtual OUString
get_name() const override
;
399 class TabControlUIObject final
: public WindowUIObject
402 VclPtr
<TabControl
> mxTabControl
;
406 TabControlUIObject(const VclPtr
<TabControl
>& mxTabControl
);
407 virtual ~TabControlUIObject() override
;
409 virtual void execute(const OUString
& rAction
,
410 const StringMap
& rParameters
) override
;
412 virtual StringMap
get_state() override
;
414 static std::unique_ptr
<UIObject
> create(vcl::Window
* pWindow
);
416 virtual OUString
get_action(VclEventId nEvent
) const override
;
420 virtual OUString
get_name() const override
;
423 class VerticalTabControlUIObject final
: public WindowUIObject
426 VclPtr
<VerticalTabControl
> mxTabControl
;
430 VerticalTabControlUIObject(const VclPtr
<VerticalTabControl
>& mxTabControl
);
431 virtual ~VerticalTabControlUIObject() override
;
433 virtual void execute(const OUString
& rAction
,
434 const StringMap
& rParameters
) override
;
436 virtual StringMap
get_state() override
;
438 static std::unique_ptr
<UIObject
> create(vcl::Window
* pWindow
);
442 virtual OUString
get_name() const override
;
445 class TreeListUIObject
: public WindowUIObject
448 TreeListUIObject(const VclPtr
<SvTreeListBox
>& xTreeList
);
450 virtual StringMap
get_state() override
;
452 static std::unique_ptr
<UIObject
> create(vcl::Window
* pWindow
);
454 virtual void execute(const OUString
& rAction
,
455 const StringMap
& rParameters
) override
;
457 virtual std::unique_ptr
<UIObject
> get_child(const OUString
& rID
) override
;
459 virtual std::set
<OUString
> get_children() const override
;
463 virtual OUString
get_name() const override
;
465 VclPtr
<SvTreeListBox
> mxTreeList
;
468 class TreeListEntryUIObject final
: public UIObject
472 TreeListEntryUIObject(const VclPtr
<SvTreeListBox
>& xTreeList
, SvTreeListEntry
* pEntry
);
474 virtual StringMap
get_state() override
;
476 virtual void execute(const OUString
& rAction
,
477 const StringMap
& rParameters
) override
;
479 virtual std::unique_ptr
<UIObject
> get_child(const OUString
& rID
) override
;
481 virtual std::set
<OUString
> get_children() const override
;
483 virtual OUString
get_type() const override
;
487 VclPtr
<SvTreeListBox
> mxTreeList
;
489 SvTreeListEntry
* const mpEntry
;
492 class IconViewUIObject final
: public TreeListUIObject
495 IconViewUIObject(const VclPtr
<SvTreeListBox
>& xIconView
);
497 virtual StringMap
get_state() override
;
499 static std::unique_ptr
<UIObject
> create(vcl::Window
* pWindow
);
503 virtual OUString
get_name() const override
;
506 class ToolBoxUIObject final
: public WindowUIObject
509 VclPtr
<ToolBox
> mxToolBox
;
513 ToolBoxUIObject(const VclPtr
<ToolBox
>& mxToolBox
);
514 virtual ~ToolBoxUIObject() override
;
516 virtual void execute(const OUString
& rAction
,
517 const StringMap
& rParameters
) override
;
519 virtual StringMap
get_state() override
;
521 static std::unique_ptr
<UIObject
> create(vcl::Window
* pWindow
);
523 virtual OUString
get_action(VclEventId nEvent
) const override
;
527 virtual OUString
get_name() const override
;
530 class MenuButtonUIObject final
: public WindowUIObject
532 VclPtr
<MenuButton
> mxMenuButton
;
536 MenuButtonUIObject(const VclPtr
<MenuButton
>& xMenuButton
);
537 virtual ~MenuButtonUIObject() override
;
539 virtual StringMap
get_state() override
;
541 virtual void execute(const OUString
& rAction
,
542 const StringMap
& rParameters
) override
;
544 static std::unique_ptr
<UIObject
> create(vcl::Window
* pWindow
);
548 virtual OUString
get_name() const override
;
551 class UITEST_DLLPUBLIC DrawingAreaUIObject
: public WindowUIObject
554 VclPtr
<VclDrawingArea
> mxDrawingArea
;
556 weld::CustomWidgetController
* mpController
;
558 DrawingAreaUIObject(const VclPtr
<vcl::Window
>& rDrawingArea
);
559 virtual ~DrawingAreaUIObject() override
;
560 virtual void execute(const OUString
& rAction
, const StringMap
& rParameters
) override
;
561 static std::unique_ptr
<UIObject
> create(vcl::Window
* pWindow
);
566 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */