Index: chrome/browser/chromeos/input_method/candidate_window.cc |
diff --git a/chrome/browser/chromeos/input_method/candidate_window.cc b/chrome/browser/chromeos/input_method/candidate_window.cc |
index 4c35f53995e208242b75fe9a4fe9c493576a7846..350611da156fa5b0dae51c9e362537732958518f 100644 |
--- a/chrome/browser/chromeos/input_method/candidate_window.cc |
+++ b/chrome/browser/chromeos/input_method/candidate_window.cc |
@@ -17,6 +17,7 @@ |
#include "base/timer.h" |
#include "base/utf_string_conversions.h" |
#include "chrome/browser/chromeos/input_method/ibus_ui_controller.h" |
+#include "chrome/browser/chromeos/input_method/candidate_window_view.h" |
Yusuke Sato
2011/11/17 06:07:39
wrong order
Seigo Nonaka
2011/11/17 07:52:50
Done.
|
#include "grit/generated_resources.h" |
#include "ui/base/l10n/l10n_util.h" |
#include "ui/gfx/canvas.h" |
@@ -313,6 +314,8 @@ int ComputeAnnotationColumnWidth(const InputMethodLookupTable& lookup_table) { |
return annotation_column_width; |
} |
+} // namespace |
+ |
// HidableArea is used as an area to place optional information that can be |
// turned displaying off if it is unnecessary. |
class HidableArea : public views::View { |
@@ -412,173 +415,6 @@ class InformationTextArea : public HidableArea { |
int minWidth_; |
}; |
-} // namespace |
- |
-class CandidateView; |
- |
-// CandidateWindowView is the main container of the candidate window UI. |
-class CandidateWindowView : public views::View { |
- public: |
- // The object can be monitored by the observer. |
- class Observer { |
- public: |
- virtual ~Observer() {} |
- // The function is called when a candidate is committed. |
- // See comments at NotifyCandidateClicked() in chromeos_input_method_ui.h |
- // for details about the parameters. |
- virtual void OnCandidateCommitted(int index, int button, int flag) = 0; |
- }; |
- |
- explicit CandidateWindowView(views::Widget* parent_frame); |
- virtual ~CandidateWindowView() {} |
- void Init(); |
- |
- // Adds the given observer. The ownership is not transferred. |
- void AddObserver(Observer* observer) { |
- observers_.AddObserver(observer); |
- } |
- |
- // Removes the given observer. |
- void RemoveObserver(Observer* observer) { |
- observers_.RemoveObserver(observer); |
- } |
- |
- // Selects the candidate specified by the index in the current page |
- // (zero-origin). Changes the appearance of the selected candidate, |
- // updates the information in the candidate window as needed. |
- void SelectCandidateAt(int index_in_page); |
- |
- // The function is called when a candidate is being dragged. From the |
- // given point, locates the candidate under the mouse cursor, and |
- // selects it. |
- void OnCandidatePressed(const gfx::Point& point); |
- |
- // Commits the candidate currently being selected. |
- void CommitCandidate(); |
- |
- // Hides the lookup table. |
- void HideLookupTable(); |
- |
- // Hides the auxiliary text. |
- void HideAuxiliaryText(); |
- |
- // Hides the preedit text. |
- void HidePreeditText(); |
- |
- // Hides whole the candidate window. |
- void HideAll(); |
- |
- // Shows the lookup table. |
- void ShowLookupTable(); |
- |
- // Shows the auxiliary text. |
- void ShowAuxiliaryText(); |
- |
- // Shows the preedit text. |
- void ShowPreeditText(); |
- |
- // Updates the auxiliary text. |
- void UpdateAuxiliaryText(const std::string& utf8_text); |
- |
- // Updates the preedit text. |
- void UpdatePreeditText(const std::string& utf8_text); |
- |
- // Returns true if we should update candidate views in the window. For |
- // instance, if we are going to show the same candidates as before, we |
- // don't have to update candidate views. This happens when the user just |
- // moves the cursor in the same page in the candidate window. |
- bool ShouldUpdateCandidateViews( |
- const InputMethodLookupTable& old_table, |
- const InputMethodLookupTable& new_table); |
- |
- // Updates candidates of the candidate window from |lookup_table|. |
- // Candidates are arranged per |orientation|. |
- void UpdateCandidates(const InputMethodLookupTable& lookup_table); |
- |
- // Resizes and moves the parent frame. The two actions should be |
- // performed consecutively as resizing may require the candidate window |
- // to move. For instance, we may need to move the candidate window from |
- // below the cursor to above the cursor, if the candidate window becomes |
- // too big to be shown near the bottom of the screen. This function |
- // needs to be called when the visible contents of the candidate window |
- // are modified. |
- void ResizeAndMoveParentFrame(); |
- |
- // Returns the horizontal offset used for placing the vertical candidate |
- // window so that the first candidate is aligned with the the text being |
- // converted like: |
- // |
- // XXX <- The user is converting XXX |
- // +-----+ |
- // |1 XXX| |
- // |2 YYY| |
- // |3 ZZZ| |
- // |
- // Returns 0 if no candidate is present. |
- int GetHorizontalOffset(); |
- |
- void set_cursor_location(const gfx::Rect& cursor_location) { |
- cursor_location_ = cursor_location; |
- } |
- |
- const gfx::Rect& cursor_location() const { return cursor_location_; } |
- |
- protected: |
- // Override View::VisibilityChanged() |
- virtual void VisibilityChanged(View* starting_from, bool is_visible) OVERRIDE; |
- |
- // Override View::OnBoundsChanged() |
- virtual void OnBoundsChanged(const gfx::Rect& previous_bounds) OVERRIDE; |
- |
- private: |
- // Initializes the candidate views if needed. |
- void MaybeInitializeCandidateViews( |
- const InputMethodLookupTable& lookup_table); |
- |
- // Returns the appropriate area (header or footer) to put auxiliary texts. |
- InformationTextArea* GetAuxiliaryTextArea(); |
- |
- // The lookup table (candidates). |
- InputMethodLookupTable lookup_table_; |
- |
- // The index in the current page of the candidate currently being selected. |
- int selected_candidate_index_in_page_; |
- |
- // The observers of the object. |
- ObserverList<Observer> observers_; |
- |
- // The parent frame. |
- views::Widget* parent_frame_; |
- |
- // Views created in the class will be part of tree of |this|, so these |
- // child views will be deleted when |this| is deleted. |
- |
- // The preedit area is where the preedit text is shown, if it is needed |
- // in cases such as the focus is on a plugin that doesn't support in-line |
- // preedit drawing. |
- InformationTextArea* preedit_area_; |
- // The header area is where the auxiliary text is shown, if the |
- // orientation is horizontal. If the auxiliary text is not provided, we |
- // show nothing. For instance, we show pinyin text like "zhong'guo". |
- InformationTextArea* header_area_; |
- // The candidate area is where candidates are rendered. |
- HidableArea* candidate_area_; |
- // The candidate views are used for rendering candidates. |
- std::vector<CandidateView*> candidate_views_; |
- // The footer area is where the auxiliary text is shown, if the |
- // orientation is vertical. Usually the auxiliary text is used for |
- // showing candidate number information like 2/19. |
- InformationTextArea* footer_area_; |
- |
- // Current columns width in |candidate_area_|. |
- int previous_shortcut_column_width_; |
- int previous_candidate_column_width_; |
- int previous_annotation_column_width_; |
- |
- // The last cursor location. |
- gfx::Rect cursor_location_; |
-}; |
- |
// CandidateRow renderes a row of a candidate. |
class CandidateView : public views::View { |
public: |