summaryrefslogtreecommitdiffstats
path: root/chrome/browser/views/infobars/translate_infobars.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/views/infobars/translate_infobars.cc')
-rw-r--r--chrome/browser/views/infobars/translate_infobars.cc213
1 files changed, 9 insertions, 204 deletions
diff --git a/chrome/browser/views/infobars/translate_infobars.cc b/chrome/browser/views/infobars/translate_infobars.cc
index 4ae395f..08d4a0f 100644
--- a/chrome/browser/views/infobars/translate_infobars.cc
+++ b/chrome/browser/views/infobars/translate_infobars.cc
@@ -17,6 +17,8 @@
#include "chrome/browser/translate/languages_menu_model.h"
#include "chrome/browser/translate/options_menu_model.h"
#include "chrome/browser/translate/page_translated_details.h"
+#include "chrome/browser/views/infobars/infobar_button_border.h"
+#include "chrome/browser/views/infobars/infobar_text_button.h"
#include "gfx/canvas.h"
#include "grit/app_resources.h"
#include "grit/generated_resources.h"
@@ -28,210 +30,13 @@
#include "views/controls/image_view.h"
#include "views/controls/label.h"
+#include "chrome/browser/views/infobars/before_translate_infobar.h"
+
// IDs for various menus.
static const int kMenuIDOptions = 1000;
static const int kMenuIDOriginalLanguage = 1001;
static const int kMenuIDTargetLanguage = 1002;
-////////////////////////////////////////////////////////////////////////////////
-//
-// TranslateButtonBorder
-//
-// A TextButtonBorder subclass that adds to also paint button frame in normal
-// state, and changes the images used.
-//
-////////////////////////////////////////////////////////////////////////////////
-
-class TranslateButtonBorder : public views::TextButtonBorder {
- public:
- TranslateButtonBorder();
- virtual ~TranslateButtonBorder();
-
- // Overriden from Border
- virtual void Paint(const views::View& view, gfx::Canvas* canvas) const;
-
- private:
- MBBImageSet normal_set_;
-
- private:
- DISALLOW_COPY_AND_ASSIGN(TranslateButtonBorder);
-};
-
-// TranslateButtonBorder, public: ----------------------------------------------
-
-TranslateButtonBorder::TranslateButtonBorder() {
- ResourceBundle& rb = ResourceBundle::GetSharedInstance();
-
- normal_set_.top_left = rb.GetBitmapNamed(IDR_INFOBARBUTTON_TOP_LEFT_N);
- normal_set_.top = rb.GetBitmapNamed(IDR_INFOBARBUTTON_TOP_N);
- normal_set_.top_right = rb.GetBitmapNamed(IDR_INFOBARBUTTON_TOP_RIGHT_N);
- normal_set_.left = rb.GetBitmapNamed(IDR_INFOBARBUTTON_LEFT_N);
- normal_set_.center = rb.GetBitmapNamed(IDR_INFOBARBUTTON_CENTER_N);
- normal_set_.right = rb.GetBitmapNamed(IDR_INFOBARBUTTON_RIGHT_N);
- normal_set_.bottom_left = rb.GetBitmapNamed(IDR_INFOBARBUTTON_BOTTOM_LEFT_N);
- normal_set_.bottom = rb.GetBitmapNamed(IDR_INFOBARBUTTON_BOTTOM_N);
- normal_set_.bottom_right = rb.GetBitmapNamed(
- IDR_INFOBARBUTTON_BOTTOM_RIGHT_N);
-
- hot_set_.top_left = rb.GetBitmapNamed(IDR_INFOBARBUTTON_TOP_LEFT_H);
- hot_set_.top = rb.GetBitmapNamed(IDR_INFOBARBUTTON_TOP_H);
- hot_set_.top_right = rb.GetBitmapNamed(IDR_INFOBARBUTTON_TOP_RIGHT_H);
- hot_set_.left = rb.GetBitmapNamed(IDR_INFOBARBUTTON_LEFT_H);
- hot_set_.center = rb.GetBitmapNamed(IDR_INFOBARBUTTON_CENTER_H);
- hot_set_.right = rb.GetBitmapNamed(IDR_INFOBARBUTTON_RIGHT_H);
- hot_set_.bottom_left = rb.GetBitmapNamed(IDR_INFOBARBUTTON_BOTTOM_LEFT_H);
- hot_set_.bottom = rb.GetBitmapNamed(IDR_INFOBARBUTTON_BOTTOM_H);
- hot_set_.bottom_right = rb.GetBitmapNamed(IDR_INFOBARBUTTON_BOTTOM_RIGHT_H);
-
- pushed_set_.top_left = rb.GetBitmapNamed(IDR_INFOBARBUTTON_TOP_LEFT_P);
- pushed_set_.top = rb.GetBitmapNamed(IDR_INFOBARBUTTON_TOP_P);
- pushed_set_.top_right = rb.GetBitmapNamed(IDR_INFOBARBUTTON_TOP_RIGHT_P);
- pushed_set_.left = rb.GetBitmapNamed(IDR_INFOBARBUTTON_LEFT_P);
- pushed_set_.center = rb.GetBitmapNamed(IDR_INFOBARBUTTON_CENTER_P);
- pushed_set_.right = rb.GetBitmapNamed(IDR_INFOBARBUTTON_RIGHT_P);
- pushed_set_.bottom_left = rb.GetBitmapNamed(IDR_INFOBARBUTTON_BOTTOM_LEFT_P);
- pushed_set_.bottom = rb.GetBitmapNamed(IDR_INFOBARBUTTON_BOTTOM_P);
- pushed_set_.bottom_right = rb.GetBitmapNamed(
- IDR_INFOBARBUTTON_BOTTOM_RIGHT_P);
-}
-
-TranslateButtonBorder::~TranslateButtonBorder() {
-}
-
-// TranslateButtonBorder, Border overrides: ------------------------------------
-
-void TranslateButtonBorder::Paint(const views::View& view, gfx::Canvas* canvas)
- const {
- const views::TextButton* mb = static_cast<const views::TextButton*>(&view);
- int state = mb->state();
-
- // TextButton takes care of deciding when to call Paint.
- const MBBImageSet* set = &normal_set_;
- if (state == views::TextButton::BS_HOT)
- set = &hot_set_;
- else if (state == views::TextButton::BS_PUSHED)
- set = &pushed_set_;
-
- gfx::Rect bounds = view.bounds();
-
- // Draw top left image.
- canvas->DrawBitmapInt(*set->top_left, 0, 0);
-
- // Stretch top image.
- canvas->DrawBitmapInt(
- *set->top,
- 0, 0, set->top->width(), set->top->height(),
- set->top_left->width(),
- 0,
- bounds.width() - set->top_right->width() - set->top_left->width(),
- set->top->height(), false);
-
- // Draw top right image.
- canvas->DrawBitmapInt(*set->top_right,
- bounds.width() - set->top_right->width(), 0);
-
- // Stretch left image.
- canvas->DrawBitmapInt(
- *set->left,
- 0, 0, set->left->width(), set->left->height(),
- 0,
- set->top_left->height(),
- set->top_left->width(),
- bounds.height() - set->top->height() - set->bottom_left->height(), false);
-
- // Stretch center image.
- canvas->DrawBitmapInt(
- *set->center,
- 0, 0, set->center->width(), set->center->height(),
- set->left->width(),
- set->top->height(),
- bounds.width() - set->right->width() - set->left->width(),
- bounds.height() - set->bottom->height() - set->top->height(), false);
-
- // Stretch right image.
- canvas->DrawBitmapInt(
- *set->right,
- 0, 0, set->right->width(), set->right->height(),
- bounds.width() - set->right->width(),
- set->top_right->height(),
- set->right->width(),
- bounds.height() - set->bottom_right->height() -
- set->top_right->height(), false);
-
- // Draw bottom left image.
- canvas->DrawBitmapInt(*set->bottom_left,
- 0,
- bounds.height() - set->bottom_left->height());
-
- // Stretch bottom image.
- canvas->DrawBitmapInt(
- *set->bottom,
- 0, 0, set->bottom->width(), set->bottom->height(),
- set->bottom_left->width(),
- bounds.height() - set->bottom->height(),
- bounds.width() - set->bottom_right->width() -
- set->bottom_left->width(),
- set->bottom->height(), false);
-
- // Draw bottom right image.
- canvas->DrawBitmapInt(*set->bottom_right,
- bounds.width() - set->bottom_right->width(),
- bounds.height() - set->bottom_right->height());
-}
-
-////////////////////////////////////////////////////////////////////////////////
-//
-// TranslateTextButton
-//
-// A TextButton subclass that overrides OnMousePressed to default to
-// CustomButton so as to create pressed state effect.
-//
-////////////////////////////////////////////////////////////////////////////////
-
-class TranslateTextButton : public views::TextButton {
- public:
- TranslateTextButton(views::ButtonListener* listener, int label_id);
- virtual ~TranslateTextButton();
-
- protected:
- // Overriden from TextButton:
- virtual bool OnMousePressed(const views::MouseEvent& e);
-
- private:
- DISALLOW_COPY_AND_ASSIGN(TranslateTextButton);
-};
-
-// TranslateButtonBorder, public: ----------------------------------------------
-
-TranslateTextButton::TranslateTextButton(views::ButtonListener* listener,
- int label_id)
- // Don't use text to construct TextButton because we need to set font
- // before setting text so that the button will resize to fit entire text.
- : TextButton(listener, std::wstring()) {
- set_border(new TranslateButtonBorder);
- SetNormalHasBorder(true); // Normal button state has border.
- SetAnimationDuration(0); // Disable animation during state change.
- // Set font colors for different states.
- SetEnabledColor(SK_ColorBLACK);
- SetHighlightColor(SK_ColorBLACK);
- SetHoverColor(SK_ColorBLACK);
- // Set font then text, then size button to fit text.
- SetFont(ResourceBundle::GetSharedInstance().GetFont(
- ResourceBundle::MediumFont));
- SetText(l10n_util::GetString(label_id));
- ClearMaxTextSize();
- SizeToPreferredSize();
-}
-
-TranslateTextButton::~TranslateTextButton() {
-}
-
-// TranslateTextButton, protected: ---------------------------------------------
-
-bool TranslateTextButton::OnMousePressed(const views::MouseEvent& e) {
- return views::CustomButton::OnMousePressed(e);
-}
-
// TranslateInfoBar, public: ---------------------------------------------------
TranslateInfoBar::TranslateInfoBar(TranslateInfoBarDelegate* delegate)
@@ -321,7 +126,7 @@ void TranslateInfoBar::UpdateState(
AddChildView(target_language_menu_button_);
}
if (!revert_button_) {
- revert_button_ = new TranslateTextButton(this,
+ revert_button_ = InfoBarTextButton::CreateWithMessageID(this,
IDS_TRANSLATE_INFOBAR_REVERT);
AddChildView(revert_button_);
}
@@ -331,12 +136,12 @@ void TranslateInfoBar::UpdateState(
if (!label_1_)
CreateLabels();
if (!accept_button_) {
- accept_button_ = new TranslateTextButton(this,
+ accept_button_ = InfoBarTextButton::CreateWithMessageID(this,
IDS_TRANSLATE_INFOBAR_ACCEPT);
AddChildView(accept_button_);
}
if (!deny_button_) {
- deny_button_ = new TranslateTextButton(this,
+ deny_button_ = InfoBarTextButton::CreateWithMessageID(this,
IDS_TRANSLATE_INFOBAR_DENY);
AddChildView(deny_button_);
}
@@ -352,7 +157,7 @@ void TranslateInfoBar::UpdateState(
AddChildView(error_label_);
}
if (!retry_button_) {
- retry_button_ = new TranslateTextButton(this,
+ retry_button_ = InfoBarTextButton::CreateWithMessageID(this,
IDS_TRANSLATE_INFOBAR_RETRY);
AddChildView(retry_button_);
}
@@ -875,7 +680,7 @@ views::MenuButton* TranslateInfoBar::CreateMenuButton(int menu_id,
views::MenuButton* menu_button =
new views::MenuButton(NULL, std::wstring(), this, true);
menu_button->SetID(menu_id);
- menu_button->set_border(new TranslateButtonBorder);
+ menu_button->set_border(new InfoBarButtonBorder);
menu_button->set_menu_marker(ResourceBundle::GetSharedInstance().
GetBitmapNamed(IDR_INFOBARBUTTON_MENU_DROPARROW));
if (normal_has_border) {