LanguageTool: don't crash if REST protocol isn't set
[LibreOffice.git] / include / vcl / uitest / uiobject.hxx
blobb4df10a40c9e1cad6de8551953f682f84744c3fa
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
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/.
8 */
10 #ifndef INCLUDED_VCL_UITEST_UIOBJECT_HXX
11 #define INCLUDED_VCL_UITEST_UIOBJECT_HXX
13 #include <rtl/ustring.hxx>
14 #include <map>
15 #include <memory>
17 #include <vcl/vclevent.hxx>
18 #include <vcl/vclptr.hxx>
19 #include <vcl/dllapi.h>
21 #include <set>
23 class Button;
24 class CheckBox;
25 class ComboBox;
26 class Dialog;
27 class Edit;
28 class IconView;
29 class ListBox;
30 class RadioButton;
31 class TabControl;
32 class TabPage;
33 class SvTreeListBox;
34 class SvTreeListEntry;
35 class SpinButton;
36 class SpinField;
37 class VerticalTabControl;
38 class VclDrawingArea;
39 class VclMultiLineEdit;
40 class MenuButton;
41 class ToolBox;
42 namespace vcl { class Window; }
43 namespace weld { class CustomWidgetController; }
45 typedef std::map<OUString, OUString> StringMap;
47 /**
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;
58 public:
59 UIObject() = default;
61 virtual ~UIObject();
63 /**
64 * Returns the state of the wrapped UI object as a
65 * string key value map.
67 virtual StringMap get_state();
69 /**
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);
76 /**
77 * Returns the type of the UIObject. Additional information might
78 * be available through UIObject::get_state().
80 virtual OUString get_type() const;
82 /**
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);
89 /**
90 * Returns a set containing all descendants of the object.
92 virtual std::set<OUString> get_children() const;
94 /**
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;
120 public:
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);
145 protected:
147 virtual OUString get_name() const;
151 // TODO: moggi: what about push buttons?
152 class ButtonUIObject final : public WindowUIObject
154 VclPtr<Button> mxButton;
155 public:
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;
169 private:
171 virtual OUString get_name() const override;
174 class DialogUIObject final : public WindowUIObject
176 VclPtr<Dialog> mxDialog;
178 public:
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);
187 private:
189 virtual OUString get_name() const override;
192 class EditUIObject : public WindowUIObject
194 VclPtr<Edit> mxEdit;
196 public:
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;
210 protected:
212 virtual OUString get_name() const override;
215 class MultiLineEditUIObject final : public WindowUIObject
217 VclPtr<VclMultiLineEdit> mxEdit;
219 public:
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);
231 private:
233 virtual OUString get_name() const override;
236 // TODO: moggi: maybe let it inherit from the button case
237 class CheckBoxUIObject final : public WindowUIObject
239 private:
240 VclPtr<CheckBox> mxCheckBox;
242 public:
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;
255 private:
257 virtual OUString get_name() const override;
260 class RadioButtonUIObject final : public WindowUIObject
262 private:
263 VclPtr<RadioButton> mxRadioButton;
265 public:
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;
278 private:
280 virtual OUString get_name() const override;
283 class TabPageUIObject final : public WindowUIObject
285 private:
286 VclPtr<TabPage> mxTabPage;
287 public:
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);
298 private:
300 virtual OUString get_name() const override;
303 class ListBoxUIObject final : public WindowUIObject
305 private:
306 VclPtr<ListBox> mxListBox;
308 public:
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;
322 private:
324 virtual OUString get_name() const override;
327 // TODO: moggi: should it inherit from EditUIObject?
328 class ComboBoxUIObject final : public WindowUIObject
330 private:
331 VclPtr<ComboBox> mxComboBox;
333 public:
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;
347 private:
349 virtual OUString get_name() const override;
352 class SpinUIObject final : public WindowUIObject
354 private:
355 VclPtr<SpinButton> mxSpinButton;
357 public:
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;
371 private:
373 virtual OUString get_name() const override;
376 class SpinFieldUIObject : public EditUIObject
378 VclPtr<SpinField> mxSpinField;
380 public:
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;
394 private:
396 virtual OUString get_name() const override;
399 class TabControlUIObject final : public WindowUIObject
401 private:
402 VclPtr<TabControl> mxTabControl;
404 public:
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;
418 private:
420 virtual OUString get_name() const override;
423 class VerticalTabControlUIObject final : public WindowUIObject
425 private:
426 VclPtr<VerticalTabControl> mxTabControl;
428 public:
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);
440 private:
442 virtual OUString get_name() const override;
445 class TreeListUIObject : public WindowUIObject
447 public:
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;
461 protected:
463 virtual OUString get_name() const override;
465 VclPtr<SvTreeListBox> mxTreeList;
468 class TreeListEntryUIObject final : public UIObject
470 public:
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;
485 private:
487 VclPtr<SvTreeListBox> mxTreeList;
489 SvTreeListEntry* const mpEntry;
492 class IconViewUIObject final : public TreeListUIObject
494 public:
495 IconViewUIObject(const VclPtr<SvTreeListBox>& xIconView);
497 virtual StringMap get_state() override;
499 static std::unique_ptr<UIObject> create(vcl::Window* pWindow);
501 private:
503 virtual OUString get_name() const override;
506 class ToolBoxUIObject final : public WindowUIObject
508 private:
509 VclPtr<ToolBox> mxToolBox;
511 public:
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;
525 private:
527 virtual OUString get_name() const override;
530 class MenuButtonUIObject final : public WindowUIObject
532 VclPtr<MenuButton> mxMenuButton;
534 public:
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);
546 private:
548 virtual OUString get_name() const override;
551 class UITEST_DLLPUBLIC DrawingAreaUIObject : public WindowUIObject
553 private:
554 VclPtr<VclDrawingArea> mxDrawingArea;
555 protected:
556 weld::CustomWidgetController* mpController;
557 public:
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);
564 #endif
566 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */