1513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch// Copyright (c) 2010 The Chromium Authors. All rights reserved.
2513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
3513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch// found in the LICENSE file.
4513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch
5513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#include "chrome/browser/chromeos/login/textfield_with_margin.h"
6513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch
721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "chrome/browser/chromeos/login/helper.h"
872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "ui/base/keycodes/keyboard_codes.h"
921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
10513209b27ff55e2841eac0e4120199c23acce758Ben Murdochnamespace {
11513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch
12513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch// Holds ratio of the margin to the preferred text height.
13513209b27ff55e2841eac0e4120199c23acce758Ben Murdochconst double kTextMarginRate = 0.33;
14513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch
15201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch// Size of each vertical margin (top, bottom).
16201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdochconst int kVerticalMargin = 3;
17201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch
18513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch}  // namespace
19513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch
20513209b27ff55e2841eac0e4120199c23acce758Ben Murdochnamespace chromeos {
21513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch
22201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben MurdochTextfieldWithMargin::TextfieldWithMargin() {
2321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  CorrectTextfieldFontSize(this);
2421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen}
2521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
2621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian MonsenTextfieldWithMargin::TextfieldWithMargin(views::Textfield::StyleFlags style)
2721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen    : Textfield(style) {
2821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  CorrectTextfieldFontSize(this);
29201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch}
30201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch
31513209b27ff55e2841eac0e4120199c23acce758Ben Murdochvoid TextfieldWithMargin::Layout() {
32513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  int margin = GetPreferredSize().height() * kTextMarginRate;
33513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  SetHorizontalMargins(margin, margin);
34201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch  SetVerticalMargins(kVerticalMargin, kVerticalMargin);
35513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  views::Textfield::Layout();
36513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch}
37513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch
3872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsenbool TextfieldWithMargin::OnKeyPressed(const views::KeyEvent& e) {
3972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  if (e.key_code() == ui::VKEY_ESCAPE && !text().empty()) {
4072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen    SetText(string16());
4172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen    return true;
4272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  }
4372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  return false;
4472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen}
4572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
46513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch}  // namespace chromeos
47