1// Copyright 2013 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
5package org.chromium.chrome.browser.infobar;
6
7import android.content.Context;
8
9import org.chromium.chrome.R;
10
11/**
12 * A simple infobar that contains a message and a close icon on the right side.
13 * This is used only in the context of Java code and is not associated with any native
14 * InfoBarDelegate.
15 */
16public class MessageInfoBar extends InfoBar {
17    private final CharSequence mTitle;
18
19    /**
20     * Creates and returns an infobar with a white background and a close button on the right.
21     * @param title the text displayed in the infobar
22     * @return the infobar.
23     */
24    public static MessageInfoBar createInfoBar(CharSequence title) {
25        return new MessageInfoBar(null, 0, title, BACKGROUND_TYPE_INFO);
26    }
27
28    /**
29     * Creates and returns an infobar with a white background and a close button on the right.
30     * @param iconResourceId the icon shown on the right
31     * @param title the text displayed in the infobar
32     * @return the infobar.
33     */
34    public static MessageInfoBar createInfoBar(int iconResourceId, CharSequence title) {
35        return new MessageInfoBar(null, iconResourceId, title, BACKGROUND_TYPE_INFO);
36    }
37
38    /**
39     * Creates a warning infobar, with a yellow background and a warning icon on the right.
40     * @param title the text displayed in the infobar
41     * @return the infobar.
42     */
43    public static MessageInfoBar createWarningInfoBar(CharSequence title) {
44        return createWarningInfoBar(null, title);
45    }
46
47    /**
48     * Creates a warning infobar, with a yellow background and a warning icon on the right.
49     * @param listener an infobar dismissed listener
50     * @param title the text displayed in the infobar
51     * @return the infobar.
52     */
53    public static MessageInfoBar createWarningInfoBar(InfoBarListeners.Dismiss listener,
54            CharSequence title) {
55        return new MessageInfoBar(listener, R.drawable.warning, title, BACKGROUND_TYPE_WARNING);
56    }
57
58    protected MessageInfoBar(InfoBarListeners.Dismiss listener, int iconResourceId,
59            CharSequence title, int backgroundType) {
60        super(listener, backgroundType, iconResourceId);
61        mTitle = title;
62    }
63
64    @Override
65    public CharSequence getMessageText(Context context) {
66        return mTitle;
67    }
68
69    @Override
70    public void onCloseButtonClicked() {
71        super.dismissJavaOnlyInfoBar();
72    }
73}
74