command.h revision 58537e28ecd584eab876aee8be7156509866d23a
11d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling// Copyright (c) 2012 The Chromium Authors. All rights reserved. 21d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling// Use of this source code is governed by a BSD-style license that can be 31d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling// found in the LICENSE file. 41d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling 51d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling#ifndef CHROME_COMMON_EXTENSIONS_COMMAND_H_ 61d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling#define CHROME_COMMON_EXTENSIONS_COMMAND_H_ 71d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling 81d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling#include <map> 91d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling#include <string> 101d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling 111d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling#include "base/strings/string16.h" 121d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling#include "ui/base/accelerators/accelerator.h" 131d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling 141d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberlingnamespace base { 151d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberlingclass DictionaryValue; 161d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling} 171d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling 181d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberlingnamespace extensions { 191d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberlingclass Extension; 201d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling} 211d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling 221d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberlingnamespace extensions { 231d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling 241d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberlingclass Command { 251d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling public: 261d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling Command(); 271d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling Command(const std::string& command_name, 281d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling const string16& description, 291d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling const std::string& accelerator); 301d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling ~Command(); 311d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling 321d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling // The platform value for the Command. 331d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling static std::string CommandPlatform(); 341d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling 351d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling // Parse a string as an accelerator. If the accelerator is unparsable then 361d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling // a generic ui::Accelerator object will be returns (with key_code Unknown). 371d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling static ui::Accelerator StringToAccelerator(const std::string& accelerator, 381d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling const std::string& command_name); 391d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling 401d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling // Returns the string representation of an accelerator without localizing the 411d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling // shortcut text (like accelerator::GetShortcutText() does). 421d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling static std::string AcceleratorToString(const ui::Accelerator& accelerator); 431d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling 441d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling // Parse the command. 451d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling bool Parse(const base::DictionaryValue* command, 461d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling const std::string& command_name, 471d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling int index, 481d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling string16* error); 491d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling 501d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling // Convert a Command object from |extension| to a DictionaryValue. 511d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling // |active| specifies whether the command is active or not. 521d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling base::DictionaryValue* ToValue( 531d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling const Extension* extension, bool active) const; 541d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling 551d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling // Accessors: 561d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling const std::string& command_name() const { return command_name_; } 571d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling const ui::Accelerator& accelerator() const { return accelerator_; } 581d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling const string16& description() const { return description_; } 591d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling 601d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling // Setter: 611d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling void set_accelerator(ui::Accelerator accelerator) { 621d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling accelerator_ = accelerator; 631d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling } 641d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling 651d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling private: 6679397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez std::string command_name_; 6779397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez ui::Accelerator accelerator_; 6879397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez string16 description_; 691d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling}; 701d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling 7179397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez// A mapping of command name (std::string) to a command object. 7279397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandeztypedef std::map<std::string, Command> CommandMap; 7379397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez 7479397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez} // namespace extensions 7579397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez 7679397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez#endif // CHROME_COMMON_EXTENSIONS_COMMAND_H_ 7779397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez