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