Infobar material design refresh: layout
[chromium-blink-merge.git] / chrome / browser / ui / views / edit_search_engine_dialog.h
blob04379491cd0826ee7410f82d5cb019334915308e
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 // EditSearchEngineDialog provides text fields for editing a keyword: the title,
6 // url and actual keyword. It is used by the KeywordEditorView of the Options
7 // dialog, and also on its own to confirm the addition of a keyword added by
8 // the ExternalJSObject via the RenderView.
10 #ifndef CHROME_BROWSER_UI_VIEWS_EDIT_SEARCH_ENGINE_DIALOG_H_
11 #define CHROME_BROWSER_UI_VIEWS_EDIT_SEARCH_ENGINE_DIALOG_H_
13 #include "ui/views/controls/textfield/textfield_controller.h"
14 #include "ui/views/window/dialog_delegate.h"
16 namespace views {
17 class Label;
18 class ImageView;
21 class EditSearchEngineController;
22 class EditSearchEngineControllerDelegate;
23 class Profile;
24 class TemplateURL;
26 class EditSearchEngineDialog : public views::TextfieldController,
27 public views::DialogDelegateView {
28 public:
29 // The |template_url| and/or |delegate| may be NULL.
30 EditSearchEngineDialog(TemplateURL* template_url,
31 EditSearchEngineControllerDelegate* delegate,
32 Profile* profile);
33 ~EditSearchEngineDialog() override;
35 // Shows the dialog to the user.
36 static void Show(gfx::NativeWindow parent,
37 TemplateURL* template_url,
38 EditSearchEngineControllerDelegate* delegate,
39 Profile* profile);
41 // views::DialogDelegate:
42 ui::ModalType GetModalType() const override;
43 base::string16 GetWindowTitle() const override;
44 bool IsDialogButtonEnabled(ui::DialogButton button) const override;
45 bool Cancel() override;
46 bool Accept() override;
48 // views::TextfieldController:
49 // Updates whether the user can accept the dialog as well as updating image
50 // views showing whether value is valid.
51 void ContentsChanged(views::Textfield* sender,
52 const base::string16& new_contents) override;
53 bool HandleKeyEvent(views::Textfield* sender,
54 const ui::KeyEvent& key_event) override;
56 private:
57 void Init();
59 // Create a Label containing the text with the specified message id.
60 views::Label* CreateLabel(int message_id);
62 // Creates a text field with the specified text.
63 views::Textfield* CreateTextfield(const base::string16& text);
65 // Invokes UpdateImageView for each of the images views.
66 void UpdateImageViews();
68 // Updates the tooltip and image of the image view based on is_valid. If
69 // is_valid is false the tooltip of the image view is set to the message with
70 // id invalid_message_id, otherwise the tooltip is set to the empty text.
71 void UpdateImageView(views::ImageView* image_view,
72 bool is_valid,
73 int invalid_message_id);
75 // Text fields.
76 views::Textfield* title_tf_;
77 views::Textfield* keyword_tf_;
78 views::Textfield* url_tf_;
80 // Shows error images.
81 views::ImageView* title_iv_;
82 views::ImageView* keyword_iv_;
83 views::ImageView* url_iv_;
85 scoped_ptr<EditSearchEngineController> controller_;
87 DISALLOW_COPY_AND_ASSIGN(EditSearchEngineDialog);
90 #endif // CHROME_BROWSER_UI_VIEWS_EDIT_SEARCH_ENGINE_DIALOG_H_