1 // Copyright 2014 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 #ifndef ASH_IME_CANDIDATE_VIEW_H_
6 #define ASH_IME_CANDIDATE_VIEW_H_
8 #include "ash/ash_export.h"
9 #include "base/gtest_prod_util.h"
10 #include "ui/base/ime/candidate_window.h"
11 #include "ui/views/controls/button/custom_button.h"
12 #include "ui/views/controls/label.h"
13 #include "ui/views/view.h"
18 // CandidateView renderes a row of a candidate.
19 class ASH_EXPORT CandidateView
: public views::CustomButton
{
21 CandidateView(views::ButtonListener
* listener
,
22 ui::CandidateWindow::Orientation orientation
);
23 virtual ~CandidateView() {}
25 void GetPreferredWidths(int* shortcut_width
,
26 int* candidate_width
);
28 void SetWidths(int shortcut_width
,
31 void SetEntry(const ui::CandidateWindow::Entry
& entry
);
33 // Sets infolist icon.
34 void SetInfolistIcon(bool enable
);
36 void SetHighlighted(bool highlighted
);
39 friend class CandidateWindowViewTest
;
40 FRIEND_TEST_ALL_PREFIXES(CandidateWindowViewTest
, ShortcutSettingTest
);
42 // Overridden from views::CustomButton:
43 virtual void StateChanged() OVERRIDE
;
45 // Overridden from View:
46 virtual bool OnMouseDragged(const ui::MouseEvent
& event
) OVERRIDE
;
47 virtual void Layout() OVERRIDE
;
48 virtual gfx::Size
GetPreferredSize() const OVERRIDE
;
50 // The orientation of the candidate view.
51 ui::CandidateWindow::Orientation orientation_
;
53 // Views created in the class will be part of tree of |this|, so these
54 // child views will be deleted when |this| is deleted.
56 // The shortcut label renders shortcut numbers like 1, 2, and 3.
57 views::Label
* shortcut_label_
;
58 // The candidate label renders candidates.
59 views::Label
* candidate_label_
;
60 // The annotation label renders annotations.
61 views::Label
* annotation_label_
;
63 views::View
* infolist_icon_
;
69 DISALLOW_COPY_AND_ASSIGN(CandidateView
);
75 #endif // ASH_IME_CANDIDATE_VIEW_H_