| Index: chrome/browser/ui/views/translate/translate_bubble_view.cc
|
| diff --git a/chrome/browser/ui/views/translate/translate_bubble_view.cc b/chrome/browser/ui/views/translate/translate_bubble_view.cc
|
| index ac73e84856117e3cac5338621243c09ef7c75dbc..3dfdac1c70d99684ab810f23b1348d1414c37ad5 100644
|
| --- a/chrome/browser/ui/views/translate/translate_bubble_view.cc
|
| +++ b/chrome/browser/ui/views/translate/translate_bubble_view.cc
|
| @@ -20,6 +20,7 @@
|
| #include "chrome/browser/translate/translate_ui_delegate.h"
|
| #include "chrome/browser/ui/browser.h"
|
| #include "chrome/browser/ui/translate/translate_bubble_model_impl.h"
|
| +#include "chrome/browser/ui/translate/translate_denial_menu_model.h"
|
| #include "chrome/common/url_constants.h"
|
| #include "content/public/browser/web_contents.h"
|
| #include "grit/generated_resources.h"
|
| @@ -28,6 +29,7 @@
|
| #include "ui/base/resource/resource_bundle.h"
|
| #include "ui/views/controls/button/checkbox.h"
|
| #include "ui/views/controls/button/label_button.h"
|
| +#include "ui/views/controls/button/multi_target_button.h"
|
| #include "ui/views/controls/combobox/combobox.h"
|
| #include "ui/views/controls/label.h"
|
| #include "ui/views/controls/link.h"
|
| @@ -69,49 +71,6 @@ void GetTranslateLanguages(content::WebContents* web_contents,
|
| g_browser_process->GetApplicationLocale());
|
| }
|
|
|
| -// TODO(hajimehoshi): The interface to offer denial choices should be another
|
| -// control instead of Combobox. See crbug/305494.
|
| -class TranslateDenialComboboxModel : public ui::ComboboxModel {
|
| - public:
|
| - enum {
|
| - INDEX_NOPE = 0,
|
| - INDEX_NEVER_TRANSLATE_LANGUAGE = 2,
|
| - INDEX_NEVER_TRANSLATE_SITE = 4,
|
| - };
|
| -
|
| - explicit TranslateDenialComboboxModel(
|
| - const string16& original_language_name) {
|
| - items_.push_back(l10n_util::GetStringUTF16(IDS_TRANSLATE_BUBBLE_DENY));
|
| - items_.push_back(string16());
|
| - items_.push_back(l10n_util::GetStringFUTF16(
|
| - IDS_TRANSLATE_BUBBLE_NEVER_TRANSLATE_LANG,
|
| - original_language_name));
|
| - items_.push_back(string16());
|
| - items_.push_back(l10n_util::GetStringUTF16(
|
| - IDS_TRANSLATE_BUBBLE_NEVER_TRANSLATE_SITE));
|
| - }
|
| - virtual ~TranslateDenialComboboxModel() {}
|
| -
|
| - private:
|
| - // Overridden from ui::ComboboxModel:
|
| - virtual int GetItemCount() const OVERRIDE {
|
| - return items_.size();
|
| - }
|
| - virtual string16 GetItemAt(int index) OVERRIDE {
|
| - return items_[index];
|
| - }
|
| - virtual bool IsItemSeparatorAt(int index) OVERRIDE {
|
| - return items_[index].empty();
|
| - }
|
| - virtual int GetDefaultIndex() const OVERRIDE {
|
| - return 0;
|
| - }
|
| -
|
| - std::vector<string16> items_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(TranslateDenialComboboxModel);
|
| -};
|
| -
|
| } // namespace
|
|
|
| // static
|
| @@ -251,6 +210,25 @@ void TranslateBubbleView::LinkClicked(views::Link* source, int event_flags) {
|
| HandleLinkClicked(static_cast<LinkID>(source->id()));
|
| }
|
|
|
| +void TranslateBubbleView::OnExecutingDenialCommand(
|
| + TranslateDenialMenuModelObserver::Command command) {
|
| + switch (command) {
|
| + case TranslateDenialMenuModelObserver::COMMAND_DENY:
|
| + if (!translate_executed_)
|
| + model_->TranslationDeclined();
|
| + StartFade(false);
|
| + break;
|
| + case TranslateDenialMenuModelObserver::COMMAND_NEVER_TRANSLATE_LANG:
|
| + model_->SetNeverTranslateLanguage(true);
|
| + StartFade(false);
|
| + break;
|
| + case TranslateDenialMenuModelObserver::COMMAND_NEVER_TRANSLATE_SITE:
|
| + model_->SetNeverTranslateSite(true);
|
| + StartFade(false);
|
| + break;
|
| + }
|
| +}
|
| +
|
| TranslateBubbleModel::ViewState TranslateBubbleView::GetViewState() const {
|
| return model_->GetViewState();
|
| }
|
| @@ -266,7 +244,7 @@ TranslateBubbleView::TranslateBubbleView(
|
| after_translate_view_(NULL),
|
| error_view_(NULL),
|
| advanced_view_(NULL),
|
| - denial_combobox_(NULL),
|
| + denial_button_(NULL),
|
| source_language_combobox_(NULL),
|
| target_language_combobox_(NULL),
|
| always_translate_checkbox_(NULL),
|
| @@ -362,28 +340,6 @@ void TranslateBubbleView::HandleLinkClicked(
|
| void TranslateBubbleView::HandleComboboxSelectedIndexChanged(
|
| TranslateBubbleView::ComboboxID sender_id) {
|
| switch (sender_id) {
|
| - case COMBOBOX_ID_DENIAL: {
|
| - int index = denial_combobox_->selected_index();
|
| - switch (index) {
|
| - case TranslateDenialComboboxModel::INDEX_NOPE:
|
| - if (!translate_executed_)
|
| - model_->TranslationDeclined();
|
| - StartFade(false);
|
| - break;
|
| - case TranslateDenialComboboxModel::INDEX_NEVER_TRANSLATE_LANGUAGE:
|
| - model_->SetNeverTranslateLanguage(true);
|
| - StartFade(false);
|
| - break;
|
| - case TranslateDenialComboboxModel::INDEX_NEVER_TRANSLATE_SITE:
|
| - model_->SetNeverTranslateSite(true);
|
| - StartFade(false);
|
| - break;
|
| - default:
|
| - NOTREACHED();
|
| - break;
|
| - }
|
| - break;
|
| - }
|
| case COMBOBOX_ID_SOURCE_LANGUAGE: {
|
| model_->UpdateOriginalLanguageIndex(
|
| source_language_combobox_->selected_index());
|
| @@ -412,10 +368,9 @@ views::View* TranslateBubbleView::CreateViewBeforeTranslate() {
|
|
|
| string16 original_language_name =
|
| model_->GetLanguageNameAt(model_->GetOriginalLanguageIndex());
|
| - denial_combobox_ = new views::Combobox(
|
| - new TranslateDenialComboboxModel(original_language_name));
|
| - denial_combobox_->set_id(COMBOBOX_ID_DENIAL);
|
| - denial_combobox_->set_listener(this);
|
| + denial_button_model_.reset(
|
| + new TranslateDenialMenuModel(original_language_name, this));
|
| + denial_button_ = new views::MultiTargetButton(denial_button_model_.get());
|
|
|
| views::View* view = new views::View();
|
| views::GridLayout* layout = new views::GridLayout(view);
|
| @@ -445,6 +400,9 @@ views::View* TranslateBubbleView::CreateViewBeforeTranslate() {
|
| cs->AddPaddingColumn(0, views::kRelatedButtonHSpacing);
|
| cs->AddColumn(GridLayout::LEADING, GridLayout::CENTER,
|
| 0, GridLayout::USE_PREF, 0, 0);
|
| + cs->AddPaddingColumn(0, views::kRelatedButtonHSpacing);
|
| + cs->AddColumn(GridLayout::LEADING, GridLayout::CENTER,
|
| + 0, GridLayout::USE_PREF, 0, 0);
|
|
|
| layout->StartRow(0, COLUMN_SET_ID_MESSAGE);
|
| layout->AddView(message_label);
|
| @@ -458,7 +416,7 @@ views::View* TranslateBubbleView::CreateViewBeforeTranslate() {
|
| layout->AddView(CreateLink(this,
|
| IDS_TRANSLATE_BUBBLE_LEARN_MORE,
|
| LINK_ID_LEARN_MORE));
|
| - layout->AddView(denial_combobox_);
|
| + layout->AddView(denial_button_);
|
| layout->AddView(CreateLabelButton(
|
| this,
|
| l10n_util::GetStringUTF16(IDS_TRANSLATE_BUBBLE_ACCEPT),
|
|
|