Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / views / edit_search_engine_dialog.h
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.
4
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.
9
10 #ifndef CHROME_BROWSER_UI_VIEWS_EDIT_SEARCH_ENGINE_DIALOG_H_
11 #define CHROME_BROWSER_UI_VIEWS_EDIT_SEARCH_ENGINE_DIALOG_H_
12
13 #include "ui/views/controls/textfield/textfield_controller.h"
14 #include "ui/views/window/dialog_delegate.h"
15
16 namespace views {
17 class Label;
18 class ImageView;
19 }
20
21 class EditSearchEngineController;
22 class EditSearchEngineControllerDelegate;
23 class Profile;
24 class TemplateURL;
25
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   virtual ~EditSearchEngineDialog();
34
35   // Shows the dialog to the user.
36   static void Show(gfx::NativeWindow parent,
37                    TemplateURL* template_url,
38                    EditSearchEngineControllerDelegate* delegate,
39                    Profile* profile);
40
41   // views::DialogDelegate:
42   virtual ui::ModalType GetModalType() const OVERRIDE;
43   virtual base::string16 GetWindowTitle() const OVERRIDE;
44   virtual bool IsDialogButtonEnabled(ui::DialogButton button) const OVERRIDE;
45   virtual bool Cancel() OVERRIDE;
46   virtual bool Accept() OVERRIDE;
47
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   virtual void ContentsChanged(views::Textfield* sender,
52                                const base::string16& new_contents) OVERRIDE;
53   virtual bool HandleKeyEvent(views::Textfield* sender,
54                               const ui::KeyEvent& key_event) OVERRIDE;
55  private:
56   void Init();
57
58   // Create a Label containing the text with the specified message id.
59   views::Label* CreateLabel(int message_id);
60
61   // Creates a text field with the specified text.
62   views::Textfield* CreateTextfield(const base::string16& text);
63
64   // Invokes UpdateImageView for each of the images views.
65   void UpdateImageViews();
66
67   // Updates the tooltip and image of the image view based on is_valid. If
68   // is_valid is false the tooltip of the image view is set to the message with
69   // id invalid_message_id, otherwise the tooltip is set to the empty text.
70   void UpdateImageView(views::ImageView* image_view,
71                        bool is_valid,
72                        int invalid_message_id);
73
74   // Text fields.
75   views::Textfield* title_tf_;
76   views::Textfield* keyword_tf_;
77   views::Textfield* url_tf_;
78
79   // Shows error images.
80   views::ImageView* title_iv_;
81   views::ImageView* keyword_iv_;
82   views::ImageView* url_iv_;
83
84   scoped_ptr<EditSearchEngineController> controller_;
85
86   DISALLOW_COPY_AND_ASSIGN(EditSearchEngineDialog);
87 };
88
89 #endif  // CHROME_BROWSER_UI_VIEWS_EDIT_SEARCH_ENGINE_DIALOG_H_