Index: chrome/browser/views/infobars/translate_message_infobar.cc |
diff --git a/chrome/browser/views/infobars/translate_message_infobar.cc b/chrome/browser/views/infobars/translate_message_infobar.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..88e99f939d5304c8efcd5ea583219dfa03292664 |
--- /dev/null |
+++ b/chrome/browser/views/infobars/translate_message_infobar.cc |
@@ -0,0 +1,57 @@ |
+// Copyright (c) 2010 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "chrome/browser/views/infobars/translate_message_infobar.h" |
+ |
+#include "chrome/browser/translate/translate_infobar_delegate2.h" |
+#include "chrome/browser/views/infobars/infobar_text_button.h" |
+#include "views/controls/image_view.h" |
+ |
+TranslateMessageInfoBar::TranslateMessageInfoBar( |
+ TranslateInfoBarDelegate2* delegate) |
+ : TranslateInfoBarBase(delegate) { |
+ label_ = CreateLabel(delegate->GetMessageInfoBarText()); |
+ AddChildView(label_); |
+ |
+ string16 button_text = delegate->GetMessageInfoBarButtonText(); |
+ if (button_text.empty()) { |
+ button_ = NULL; |
+ } else { |
+ button_ = InfoBarTextButton::Create(this, button_text); |
+ AddChildView(button_); |
+ } |
+} |
+ |
+void TranslateMessageInfoBar::Layout() { |
+ TranslateInfoBarBase::Layout(); |
+ |
+ int x = icon_->bounds().right() + InfoBar::kIconLabelSpacing; |
+ gfx::Size label_pref_size = label_->GetPreferredSize(); |
+ int available_width = GetAvailableWidth() - x; |
+ gfx::Size button_pref_size; |
+ if (button_) { |
+ button_pref_size = button_->GetPreferredSize(); |
+ available_width -= |
+ (button_pref_size.width() + InfoBar::kButtonInLabelSpacing); |
+ } |
+ label_->SetBounds(x, InfoBar::OffsetY(this, label_pref_size), |
+ std::min(label_pref_size.width(), available_width), |
+ label_pref_size.height()); |
+ |
+ if (button_) { |
+ button_->SetBounds(label_->bounds().right() + |
+ InfoBar::kButtonInLabelSpacing, |
+ InfoBar::OffsetY(this, button_pref_size), |
+ button_pref_size.width(), button_pref_size.height()); |
+ } |
+} |
+ |
+void TranslateMessageInfoBar::ButtonPressed(views::Button* sender, |
+ const views::Event& event) { |
+ if (sender == button_) { |
+ GetDelegate()->MessageInfoBarButtonPressed(); |
+ return; |
+ } |
+ TranslateInfoBarBase::ButtonPressed(sender, event); |
+} |