package org.pyneo.tabulae.gui;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageButton;
import org.pyneo.tabulae.Base;
import org.pyneo.tabulae.R;
import org.pyneo.tabulae.Tabulae;
import static org.pyneo.tabulae.gui.Constants.*;
public class Controller extends Base {
private Animation popOutAnimation;
private Animation popInAnimation;
private boolean optionsOut;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if (DEBUG) Log.d(TAG, "Controller.onCreateView");
View view = inflater.inflate(R.layout.controller, container, false);
View.OnClickListener clickListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
int e = view.getId();
// if (DEBUG) Log.d(TAG, "Controller.onClick e=" + e);
switch (e) {
case R.id.event_do_attribute: {
if (!optionsOut) {
getActivity().findViewById(R.id.attributes).startAnimation(popOutAnimation);
optionsOut = true;
return;
}
}
break;
}
((Tabulae) getActivity()).inform(e, null);
}
};
for (int resourceId : new int[]{
R.id.event_do_attribute_blue,
R.id.event_do_attribute_green,
R.id.event_do_attribute_red,
R.id.event_do_attribute_white,
R.id.event_do_attribute_yellow,
R.id.event_do_attribute,
R.id.event_do_autofollow,
R.id.event_do_overlay,
R.id.event_do_zoom_in,
R.id.event_do_zoom_out,
}) {
view.findViewById(resourceId).setOnClickListener(clickListener);
}
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (DEBUG) Log.d(TAG, "Controller.onActivityCreated");
popOutAnimation = AnimationUtils.loadAnimation(getActivity(), R.anim.attributes_open);
popInAnimation = AnimationUtils.loadAnimation(getActivity(), R.anim.attributes_close);
((Tabulae)getActivity()).inform(R.id.event_request_autofollow, null);
}
public void inform(int event, Bundle extra) {
//if (DEBUG) Log.d(TAG, "Controller.inform event=" + event + ", extra=" + extra);
switch (event) {
case R.id.event_do_attribute_red: {
((ImageButton) getActivity().findViewById(R.id.event_do_attribute)).setImageResource(R.drawable.attribute_red);
}
break;
case R.id.event_do_attribute_yellow: {
((ImageButton) getActivity().findViewById(R.id.event_do_attribute)).setImageResource(R.drawable.attribute_yellow);
}
break;
case R.id.event_do_attribute_green: {
((ImageButton) getActivity().findViewById(R.id.event_do_attribute)).setImageResource(R.drawable.attribute_green);
}
break;
case R.id.event_do_attribute_blue: {
((ImageButton) getActivity().findViewById(R.id.event_do_attribute)).setImageResource(R.drawable.attribute_blue);
}
break;
case R.id.event_do_attribute_white: {
((ImageButton) getActivity().findViewById(R.id.event_do_attribute)).setImageResource(R.drawable.attribute_white);
}
break;
case R.id.event_do_attribute:
case R.id.event_do_overlay:
case R.id.event_do_zoom_in:
case R.id.event_do_zoom_out:
case R.id.event_do_autofollow:
break;
case R.id.event_notify_autofollow: {
Activity activity = getActivity();
if (activity != null) {
activity.findViewById(R.id.event_do_autofollow).setVisibility(
extra.getBoolean("autofollow")? View.INVISIBLE : View.VISIBLE);
}
}
break;
default: // prevent closing attributes on unknown events
return;
}
if (optionsOut) {
getActivity().findViewById(R.id.attributes).startAnimation(popInAnimation);
optionsOut = false;
}
}
}