• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.
4 
5 #ifndef ASH_IME_CANDIDATE_VIEW_H_
6 #define ASH_IME_CANDIDATE_VIEW_H_
7 
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"
14 
15 namespace ash {
16 namespace ime {
17 
18 // CandidateView renderes a row of a candidate.
19 class ASH_EXPORT CandidateView : public views::CustomButton {
20  public:
21   CandidateView(views::ButtonListener* listener,
22                 ui::CandidateWindow::Orientation orientation);
~CandidateView()23   virtual ~CandidateView() {}
24 
25   void GetPreferredWidths(int* shortcut_width,
26                           int* candidate_width);
27 
28   void SetWidths(int shortcut_width,
29                  int candidate_width);
30 
31   void SetEntry(const ui::CandidateWindow::Entry& entry);
32 
33   // Sets infolist icon.
34   void SetInfolistIcon(bool enable);
35 
36   void SetHighlighted(bool highlighted);
37 
38  private:
39   friend class CandidateWindowViewTest;
40   FRIEND_TEST_ALL_PREFIXES(CandidateWindowViewTest, ShortcutSettingTest);
41 
42   // Overridden from views::CustomButton:
43   virtual void StateChanged() OVERRIDE;
44 
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;
49 
50   // The orientation of the candidate view.
51   ui::CandidateWindow::Orientation orientation_;
52 
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.
55 
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_;
62   // The infolist icon.
63   views::View* infolist_icon_;
64 
65   int shortcut_width_;
66   int candidate_width_;
67   bool highlighted_;
68 
69   DISALLOW_COPY_AND_ASSIGN(CandidateView);
70 };
71 
72 }  // namespace ime
73 }  // namespace ash
74 
75 #endif  // ASH_IME_CANDIDATE_VIEW_H_
76