autofill_popup_view.h revision c2e0dbddbe15c98d52c4786dac06cb8952a8ae6d
130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun// Copyright (c) 2012 The Chromium Authors. All rights reserved.
230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun// Use of this source code is governed by a BSD-style license that can be
330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun// found in the LICENSE file.
430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun
530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun#ifndef CHROME_BROWSER_UI_AUTOFILL_AUTOFILL_POPUP_VIEW_H_
630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun#define CHROME_BROWSER_UI_AUTOFILL_AUTOFILL_POPUP_VIEW_H_
730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun
830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun#include "ui/gfx/native_widget_types.h"
930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun
1030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunnamespace gfx {
1130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunclass Rect;
1230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun}
1330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun
1430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunnamespace ui {
1530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunclass KeyEvent;
1630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun}
1730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun
1830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunnamespace autofill {
1930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun
2030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunclass AutofillPopupController;
2130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun
2230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun// The interface for creating and controlling a platform-dependent
2330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun// AutofillPopupView.
2430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunclass AutofillPopupView {
2530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun public:
2630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun  // The size of the border around the entire results popup, in pixels.
2730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun  static const int kBorderThickness = 1;
2830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun
2930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun  // The minimum amount of padding between the Autofill name and subtext,
3030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun  // in pixels.
3130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun  static const size_t kNamePadding = 15;
3230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun
3330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun  // The amount of padding between icons in pixels.
3430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun  static const int kIconPadding = 5;
3530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun
3630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun  // The amount of padding at the end of the popup in pixels.
3730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun  static const int kEndPadding = 3;
3830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun
3930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun  // Height of the delete icon in pixels.
4030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun  static const int kDeleteIconHeight = 16;
4130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun
4230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun  // Width of the delete icon in pixels.
4330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun  static const int kDeleteIconWidth = 16;
4430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun
4530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun  // Height of the Autofill icons in pixels.
4630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun  static const int kAutofillIconHeight = 16;
4730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun
4830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun  // Width of the Autofill icons in pixels.
4930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun  static const int kAutofillIconWidth = 25;
5030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun
5130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun  // Displays the Autofill popup and fills it in with data from the controller.
5230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun  virtual void Show() = 0;
5330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun
5430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun  // Hides the popup from view. This will cause the popup to be deleted.
5530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun  // TODO(csharp): Make Hide a pure virtual function again, once hide_call_ is
5630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun  // removed.
5730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun  virtual void Hide();
5830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun
5930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun  // Invalidates the given row and redraw it.
6030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun  virtual void InvalidateRow(size_t row) = 0;
6130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun
6230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun  // Refreshes the position of the popup.
6330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun  virtual void UpdateBoundsAndRedrawPopup() = 0;
6430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun
6530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun  // Factory function for creating the view.
6630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun  static AutofillPopupView* Create(AutofillPopupController* controller);
6730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun
6830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun protected:
6930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun  AutofillPopupView();
7030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun  virtual ~AutofillPopupView();
7130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun
7230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun private:
7330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun  // Used to check that the hide function was called, to check that the class
7430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun  // is only destroyed through the Hide function. Remove after Dev channel
7530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun  // release.
7630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun  bool hide_called_;
7730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun};
7830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun
7930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun}  // namespace autofill
8030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun
8130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun#endif  // CHROME_BROWSER_UI_AUTOFILL_AUTOFILL_POPUP_VIEW_H_
8230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun