1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 // This class describe a keyboard accelerator (or keyboard shortcut).
6 // Keyboard accelerators are registered with the FocusManager.
7 // It has a copy constructor and assignment operator so that it can be copied.
8 // It also defines the < operator so that it can be used as a key in a std::map.
11 #ifndef VIEWS_ACCELERATOR_H_
12 #define VIEWS_ACCELERATOR_H_
17 #include "base/string16.h"
18 #include "ui/base/models/accelerator.h"
19 #include "views/events/event.h"
20 #include "views/views_export.h"
24 class VIEWS_EXPORT Accelerator
: public ui::Accelerator
{
26 Accelerator() : ui::Accelerator() {}
28 Accelerator(ui::KeyboardCode keycode
, int modifiers
)
29 : ui::Accelerator(keycode
, modifiers
) {}
31 Accelerator(ui::KeyboardCode keycode
,
32 bool shift_pressed
, bool ctrl_pressed
, bool alt_pressed
) {
36 modifiers_
|= ui::EF_SHIFT_DOWN
;
38 modifiers_
|= ui::EF_CONTROL_DOWN
;
40 modifiers_
|= ui::EF_ALT_DOWN
;
43 virtual ~Accelerator() {}
45 bool IsShiftDown() const {
46 return (modifiers_
& ui::EF_SHIFT_DOWN
) == ui::EF_SHIFT_DOWN
;
49 bool IsCtrlDown() const {
50 return (modifiers_
& ui::EF_CONTROL_DOWN
) == ui::EF_CONTROL_DOWN
;
53 bool IsAltDown() const {
54 return (modifiers_
& ui::EF_ALT_DOWN
) == ui::EF_ALT_DOWN
;
57 // Returns a string with the localized shortcut if any.
58 string16
GetShortcutText() const;
61 // An interface that classes that want to register for keyboard accelerators
63 class VIEWS_EXPORT AcceleratorTarget
{
65 // This method should return true if the accelerator was processed.
66 virtual bool AcceleratorPressed(const Accelerator
& accelerator
) = 0;
69 virtual ~AcceleratorTarget() {}
73 #endif // VIEWS_ACCELERATOR_H_