| // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROME_BROWSER_CHROMEOS_INPUT_METHOD_CANDIDATE_VIEW_H_ |
| #define CHROME_BROWSER_CHROMEOS_INPUT_METHOD_CANDIDATE_VIEW_H_ |
| |
| #include "base/gtest_prod_util.h" |
| #include "chromeos/ime/candidate_window.h" |
| #include "ui/views/controls/label.h" |
| #include "ui/views/view.h" |
| |
| namespace chromeos { |
| namespace input_method { |
| |
| class CandidateWindowView; |
| |
| // CandidateView renderes a row of a candidate. |
| class CandidateView : public views::View { |
| public: |
| CandidateView(CandidateWindowView* parent_candidate_window, |
| int index_in_page, |
| CandidateWindow::Orientation orientation); |
| virtual ~CandidateView() {} |
| // Initializes the candidate view with the given column widths. |
| // A width of 0 means that the column is resizable. |
| void Init(int shortcut_column_width, |
| int candidate_column_width, |
| int annotation_column_width, |
| int column_height); |
| |
| // Sets candidate text to the given text. |
| void SetCandidateText(const base::string16& text); |
| |
| // Sets shortcut text to the given text. |
| void SetShortcutText(const base::string16& text); |
| |
| // Sets annotation text to the given text. |
| void SetAnnotationText(const base::string16& text); |
| |
| // Sets infolist icon. |
| void SetInfolistIcon(bool enable); |
| |
| // Selects the candidate row. Changes the appearance to make it look |
| // like a selected candidate. |
| void Select(); |
| |
| // Unselects the candidate row. Changes the appearance to make it look |
| // like an unselected candidate. |
| void Unselect(); |
| |
| // Enables or disables the candidate row based on |enabled|. Changes the |
| // appearance to make it look like unclickable area. |
| void SetRowEnabled(bool enabled); |
| |
| // Returns the relative position of the candidate label. |
| gfx::Point GetCandidateLabelPosition() const; |
| |
| private: |
| friend class CandidateWindowViewTest; |
| FRIEND_TEST_ALL_PREFIXES(CandidateWindowViewTest, ShortcutSettingTest); |
| // Overridden from View: |
| virtual bool OnMousePressed(const ui::MouseEvent& event) OVERRIDE; |
| virtual void OnGestureEvent(ui::GestureEvent* event) OVERRIDE; |
| |
| // Selects the candidate located at the point. |
| void SelectCandidateAt(const gfx::Point& location); |
| |
| // Notifies labels of their new background colors. Called whenever the view's |
| // background color changes. |
| void UpdateLabelBackgroundColors(); |
| |
| // Zero-origin index in the current page. |
| int index_in_page_; |
| |
| // The orientation of the candidate view. |
| CandidateWindow::Orientation orientation_; |
| |
| // The parent candidate window that contains this view. |
| CandidateWindowView* parent_candidate_window_; |
| |
| // Views created in the class will be part of tree of |this|, so these |
| // child views will be deleted when |this| is deleted. |
| |
| // The shortcut label renders shortcut numbers like 1, 2, and 3. |
| views::Label* shortcut_label_; |
| // The candidate label renders candidates. |
| views::Label* candidate_label_; |
| // The annotation label renders annotations. |
| views::Label* annotation_label_; |
| |
| // The infolist icon. |
| views::View* infolist_icon_; |
| bool infolist_icon_enabled_; |
| |
| DISALLOW_COPY_AND_ASSIGN(CandidateView); |
| }; |
| |
| } // namespace input_method |
| } // namespace chromeos |
| |
| #endif // CHROME_BROWSER_CHROMEOS_INPUT_METHOD_CANDIDATE_VIEW_H_ |