package com.greenaddress.greenbits.ui; import android.app.Activity; import android.widget.Button; import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; public final class CB { public static <T> void after(final ListenableFuture<T> f, final FutureCallback<? super T> cb) { Futures.addCallback(f, cb); } /** A FutureCallback that does nothing by default */ public static class Op<T> implements FutureCallback<T> { @Override public void onSuccess(final T result) { /* No-op */ } @Override public void onFailure(final Throwable t) { t.printStackTrace(); } } /** A FutureCallback that shows a toast (and optionally * enables a button) on failure */ public static class Toast<T> extends Op<T> { final Activity mActivity; final Button mEnabler; Toast(final Activity activity) { this(activity, null); } Toast(final Activity activity, final Button enabler) { super(); mActivity = activity; mEnabler = enabler; } @Override public void onFailure(final Throwable t) { t.printStackTrace(); UI.toast(mActivity, t, mEnabler); } } /** A runnable that takes 1 argument */ public interface Runnable1T<T> { void run(final T arg); } }