| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 package org.chromium.chrome.browser.infobar; | 5 package org.chromium.chrome.browser.infobar; |
| 6 | 6 |
| 7 import android.content.Context; | |
| 8 import android.text.SpannableStringBuilder; | |
| 9 import android.text.Spanned; | |
| 10 import android.text.TextUtils; | |
| 11 import android.text.style.ClickableSpan; | |
| 12 import android.view.View; | |
| 13 | |
| 14 /** | 7 /** |
| 15 * An infobar that presents the user with 2 buttons (typically OK, Cancel). | 8 * An infobar that presents the user with several buttons. |
| 9 * |
| 10 * TODO(newt): merge this into InfoBar.java. |
| 16 */ | 11 */ |
| 17 public class ConfirmInfoBar extends TwoButtonInfoBar { | 12 public class ConfirmInfoBar extends InfoBar { |
| 18 // Message to prompt the user. | 13 /** Text shown on the primary button, e.g. "OK". */ |
| 19 private final String mMessage; | |
| 20 | |
| 21 // Link text shown to the user, in addition to the message. | |
| 22 private final String mLinkText; | |
| 23 | |
| 24 // Typically set to "OK", or some other positive action. | |
| 25 private final String mPrimaryButtonText; | 14 private final String mPrimaryButtonText; |
| 26 | 15 |
| 27 // Typically set to "Cancel", or some other negative action. | 16 /** Text shown on the secondary button, e.g. "Cancel".*/ |
| 28 private final String mSecondaryButtonText; | 17 private final String mSecondaryButtonText; |
| 29 | 18 |
| 30 // Listens for when either of the buttons is clicked. | 19 /** Text shown on the extra button, e.g. "More info". */ |
| 20 private final String mTertiaryButtonText; |
| 21 |
| 22 /** Notified when one of the buttons is clicked. */ |
| 31 private final InfoBarListeners.Confirm mConfirmListener; | 23 private final InfoBarListeners.Confirm mConfirmListener; |
| 32 | 24 |
| 33 public ConfirmInfoBar(InfoBarListeners.Confirm confirmListener, int backgrou
ndType, | |
| 34 int iconDrawableId, String message, String primaryButtonText, | |
| 35 String secondaryButtonText) { | |
| 36 this(confirmListener, iconDrawableId, message, primaryButtonText, second
aryButtonText); | |
| 37 } | |
| 38 | |
| 39 public ConfirmInfoBar(InfoBarListeners.Confirm confirmListener, int iconDraw
ableId, | |
| 40 String message, String primaryButtonText, String secondaryButtonText
) { | |
| 41 this(confirmListener, iconDrawableId, message, null, primaryButtonText, | |
| 42 secondaryButtonText); | |
| 43 } | |
| 44 | |
| 45 public ConfirmInfoBar(InfoBarListeners.Confirm confirmListener, int iconDraw
ableId, | |
| 46 String message, String linkText, String primaryButtonText, String se
condaryButtonText) { | |
| 47 this(0, confirmListener, iconDrawableId, message, linkText, primaryButto
nText, | |
| 48 secondaryButtonText); | |
| 49 } | |
| 50 | |
| 51 public ConfirmInfoBar(long nativeInfoBar, InfoBarListeners.Confirm confirmLi
stener, | 25 public ConfirmInfoBar(long nativeInfoBar, InfoBarListeners.Confirm confirmLi
stener, |
| 52 int iconDrawableId, String message, String linkText, String primaryB
uttonText, | 26 int iconDrawableId, String message, String linkText, String primaryB
uttonText, |
| 53 String secondaryButtonText) { | 27 String secondaryButtonText) { |
| 54 super(confirmListener, iconDrawableId); | 28 super(confirmListener, iconDrawableId, message); |
| 55 mMessage = message; | |
| 56 mLinkText = linkText; | |
| 57 mPrimaryButtonText = primaryButtonText; | 29 mPrimaryButtonText = primaryButtonText; |
| 58 mSecondaryButtonText = secondaryButtonText; | 30 mSecondaryButtonText = secondaryButtonText; |
| 31 mTertiaryButtonText = linkText; |
| 59 mConfirmListener = confirmListener; | 32 mConfirmListener = confirmListener; |
| 60 setNativeInfoBar(nativeInfoBar); | 33 setNativeInfoBar(nativeInfoBar); |
| 61 } | 34 } |
| 62 | 35 |
| 63 @Override | 36 @Override |
| 64 public CharSequence getMessageText(Context context) { | 37 public void createContent(InfoBarLayout layout) { |
| 65 // Construct text to be displayed on the infobar. | 38 layout.setButtons(mPrimaryButtonText, mSecondaryButtonText, mTertiaryBut
tonText); |
| 66 SpannableStringBuilder infobarMessage = new SpannableStringBuilder(mMess
age); | |
| 67 | |
| 68 // If we have a link text to display, append it. | |
| 69 if (!TextUtils.isEmpty(mLinkText)) { | |
| 70 SpannableStringBuilder spannableLinkText = new SpannableStringBuilde
r(mLinkText); | |
| 71 ClickableSpan onLinkClicked = new ClickableSpan() { | |
| 72 @Override | |
| 73 public void onClick(View view) { | |
| 74 onLinkClicked(); | |
| 75 } | |
| 76 }; | |
| 77 spannableLinkText.setSpan(onLinkClicked, 0, spannableLinkText.length
(), | |
| 78 Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); | |
| 79 infobarMessage.append(" "); | |
| 80 infobarMessage.append(spannableLinkText); | |
| 81 } | |
| 82 return infobarMessage; | |
| 83 } | 39 } |
| 84 | 40 |
| 85 @Override | 41 @Override |
| 86 public String getPrimaryButtonText(Context context) { | |
| 87 return mPrimaryButtonText; | |
| 88 } | |
| 89 | |
| 90 @Override | |
| 91 public String getSecondaryButtonText(Context context) { | |
| 92 return mSecondaryButtonText; | |
| 93 } | |
| 94 | |
| 95 @Override | |
| 96 public void onButtonClicked(boolean isPrimaryButton) { | 42 public void onButtonClicked(boolean isPrimaryButton) { |
| 97 if (mConfirmListener != null) { | 43 if (mConfirmListener != null) { |
| 98 mConfirmListener.onConfirmInfoBarButtonClicked(this, isPrimaryButton
); | 44 mConfirmListener.onConfirmInfoBarButtonClicked(this, isPrimaryButton
); |
| 99 } | 45 } |
| 100 | 46 |
| 101 if (mNativeInfoBarPtr != 0) { | 47 if (mNativeInfoBarPtr != 0) { |
| 102 int action = isPrimaryButton ? InfoBar.ACTION_TYPE_OK : InfoBar.ACTI
ON_TYPE_CANCEL; | 48 int action = isPrimaryButton ? InfoBar.ACTION_TYPE_OK : InfoBar.ACTI
ON_TYPE_CANCEL; |
| 103 nativeOnButtonClicked(mNativeInfoBarPtr, action, ""); | 49 nativeOnButtonClicked(mNativeInfoBarPtr, action, ""); |
| 104 } | 50 } |
| 105 } | 51 } |
| 106 | 52 |
| 107 @Override | 53 @Override |
| 108 public void onCloseButtonClicked() { | 54 public void onCloseButtonClicked() { |
| 109 if (mNativeInfoBarPtr != 0) { | 55 if (mNativeInfoBarPtr != 0) { |
| 110 nativeOnCloseButtonClicked(mNativeInfoBarPtr); | 56 nativeOnCloseButtonClicked(mNativeInfoBarPtr); |
| 111 } else { | 57 } else { |
| 112 super.dismissJavaOnlyInfoBar(); | 58 super.dismissJavaOnlyInfoBar(); |
| 113 } | 59 } |
| 114 } | 60 } |
| 115 } | 61 } |
| OLD | NEW |