// Path: app/src/main/java/com/bedrock/padder/model/tutorial/TimingListener.java
// public static void listen(Timing timing) {
//     if (timings.indexOf(timing) >= 0) {
//         timings.remove(timing);
//         Log.e("broadcast", "duplicate: listener removed for " + timing.toString());
//     }
//     timings.add(timing);
//     Log.i("broadcast", "listener added for " + timing.toString());
// }
// 
// Path: app/src/main/java/com/bedrock/padder/model/tutorial/Tutorial.java
// public static Animation ANIMATION_FADE = new AlphaAnimation(1, 0);
// 
// Path: app/src/main/java/com/bedrock/padder/model/tutorial/Tutorial.java
// public static int TUTORIAL_ANIMATION_DURATION = 400; // 400 ~ 500 seems legit


import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.view.animation.Animation;
import static com.bedrock.padder.model.tutorial.TimingListener.listen;
import static com.bedrock.padder.model.tutorial.Tutorial.ANIMATION_FADE;
import static com.bedrock.padder.model.tutorial.Tutorial.TUTORIAL_ANIMATION_DURATION;
package com.bedrock.padder.model.tutorial;



public class TutorialView {

    private View view;
    private Timing timing;

    private Animation animation = null;
    private Animation.AnimationListener listener = new Animation.AnimationListener() {

        boolean isOnAnimationEndCalled = false;
        boolean isAnimationCalled = false;

        @Override
        public void onAnimationStart(final Animation anim) {
            if (view != null) {
                view.setVisibility(View.VISIBLE);
                Log.d("TutorialView", "animation.onAnimationStart " + view.getTag());
            }

            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    onAnimationEnd(anim);
                }
            }, anim.getDuration());
        }

        @Override
        public void onAnimationEnd(Animation anim) {
            if (!isOnAnimationEndCalled) {
                Log.d("TutorialView", "animation.onAnimationEnd " + view.getTag());
                if (view != null) {

// Path: app/src/main/java/com/bedrock/padder/model/tutorial/TimingListener.java
// public static void listen(Timing timing) {
//     if (timings.indexOf(timing) >= 0) {
//         timings.remove(timing);
//         Log.e("broadcast", "duplicate: listener removed for " + timing.toString());
//     }
//     timings.add(timing);
//     Log.i("broadcast", "listener added for " + timing.toString());
// }
// 
// Path: app/src/main/java/com/bedrock/padder/model/tutorial/Tutorial.java
// public static Animation ANIMATION_FADE = new AlphaAnimation(1, 0);
// 
// Path: app/src/main/java/com/bedrock/padder/model/tutorial/Tutorial.java
// public static int TUTORIAL_ANIMATION_DURATION = 400; // 400 ~ 500 seems legit


// Path: app/src/main/java/com/bedrock/padder/model/tutorial/TutorialView.java
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.view.animation.Animation;
import static com.bedrock.padder.model.tutorial.TimingListener.listen;
import static com.bedrock.padder.model.tutorial.Tutorial.ANIMATION_FADE;
import static com.bedrock.padder.model.tutorial.Tutorial.TUTORIAL_ANIMATION_DURATION;

package com.bedrock.padder.model.tutorial;



public class TutorialView {

    private View view;
    private Timing timing;

    private Animation animation = null;
    private Animation.AnimationListener listener = new Animation.AnimationListener() {

        boolean isOnAnimationEndCalled = false;
        boolean isAnimationCalled = false;

        @Override
        public void onAnimationStart(final Animation anim) {
            if (view != null) {
                view.setVisibility(View.VISIBLE);
                Log.d("TutorialView", "animation.onAnimationStart " + view.getTag());
            }

            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    onAnimationEnd(anim);
                }
            }, anim.getDuration());
        }

        @Override
        public void onAnimationEnd(Animation anim) {
            if (!isOnAnimationEndCalled) {
                Log.d("TutorialView", "animation.onAnimationEnd " + view.getTag());
                if (view != null) {

                    Animation hide = ANIMATION_FADE;