15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#ifndef UI_WM_PUBLIC_TOOLTIP_CLIENT_H_
6effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#define UI_WM_PUBLIC_TOOLTIP_CLIENT_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/aura/aura_export.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/font.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace aura {
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Window;
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace client {
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class ScopedTooltipDisabler;
165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class AURA_EXPORT TooltipClient {
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Informs the shell tooltip manager of change in tooltip for window |target|.
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void UpdateTooltip(Window* target) = 0;
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // Sets the time after which the tooltip is hidden for Window |target|. If
2390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // |timeout_in_ms| is <= 0, the tooltip is shown indefinitely.
2490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  virtual void SetTooltipShownTimeout(Window* target, int timeout_in_ms) = 0;
2590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) protected:
275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // Enables/Disables tooltips. This is treated as a reference count. Consumers
285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // must use ScopedTooltipDisabler to enable/disabled tooltips.
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SetTooltipsEnabled(bool enable) = 0;
305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) private:
325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  friend class ScopedTooltipDisabler;
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
351e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)AURA_EXPORT void SetTooltipClient(Window* root_window,
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                  TooltipClient* client);
371e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)AURA_EXPORT TooltipClient* GetTooltipClient(Window* root_window);
38868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
39f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Sets the text for the tooltip. The id is used to determine uniqueness when
40f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// the text does not change. For example, if the tooltip text does not change,
41f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// but the id does then the position of the tooltip is updated.
42f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)AURA_EXPORT void SetTooltipText(Window* window,
43f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                                base::string16* tooltip_text);
44f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)AURA_EXPORT void SetTooltipId(Window* window, void* id);
45868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)AURA_EXPORT const base::string16 GetTooltipText(Window* window);
46f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)AURA_EXPORT const void* GetTooltipId(Window* window);
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace client
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace aura
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
51effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#endif  // UI_WM_PUBLIC_TOOLTIP_CLIENT_H_
52