Home | History | Annotate | Download | only in ime
      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);
     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