15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This file implements the input method candidate window used on Chrome OS.
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROME_BROWSER_CHROMEOS_INPUT_METHOD_CANDIDATE_WINDOW_CONTROLLER_H_
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_CHROMEOS_INPUT_METHOD_CANDIDATE_WINDOW_CONTROLLER_H_
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chromeos {
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace input_method {
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// CandidateWindowController is used for controlling the input method
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// candidate window. Once the initialization is done, the controller
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// starts monitoring signals sent from the the background input method
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// daemon, and shows and hides the candidate window as neeeded. Upon
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// deletion of the object, monitoring stops and the view used for
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// rendering the candidate view is deleted.
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class CandidateWindowController {
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  class Observer {
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   public:
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    virtual ~Observer() {}
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
27a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    virtual void CandidateClicked(int index) = 0;
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    virtual void CandidateWindowOpened() = 0;
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    virtual void CandidateWindowClosed() = 0;
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~CandidateWindowController() {}
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void AddObserver(Observer* observer) = 0;
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void RemoveObserver(Observer* observer) = 0;
36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual void Hide() = 0;
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Gets an instance of CandidateWindowController. Caller has to delete the
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // returned object.
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static CandidateWindowController* CreateCandidateWindowController();
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace input_method
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace chromeos
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CHROME_BROWSER_CHROMEOS_INPUT_METHOD_CANDIDATE_WINDOW_CONTROLLER_H_
47