package edu.mit.mitmobile2; import android.content.Context; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.widget.LinearLayout; import android.widget.TextView; public class TitleBarSwitch extends LinearLayout { public interface OnToggledListener { public void onToggled(String label); } TextView mTextView1; TextView mTextView2; View mSelectedView; View mUnselectedView; String mLabel1; String mLabel2; OnToggledListener mListener; boolean mTouchEventsComplete = true; public TitleBarSwitch(Context context) { super(context); LayoutInflater inflator = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); inflator.inflate(R.layout.title_bar_switch, this); mTextView1 = (TextView) findViewById(R.id.titleBarSwitchLabel1); mTextView2 = (TextView) findViewById(R.id.titleBarSwitchLabel2); } public void setLabels(String label1, String label2) { mLabel1 = label1; mLabel2 = label2; mTextView1.setText(label1); mTextView2.setText(label2); setSelected(label1); } public void setSelected(String label) { if (label.equals(mLabel1)) { mTextView1.setSelected(true); mTextView2.setSelected(false); mSelectedView = mTextView1; mUnselectedView = mTextView2; } else if (label.equals(mLabel2)) { mTextView1.setSelected(false); mTextView2.setSelected(true); mSelectedView = mTextView2; mUnselectedView = mTextView1; } } public void setOnToggledListener(OnToggledListener listener) { mListener = listener; } @Override public boolean onTouchEvent(MotionEvent event) { int action = event.getAction(); switch(action) { case MotionEvent.ACTION_DOWN: mTouchEventsComplete = false; mUnselectedView.setPressed(true); break; case MotionEvent.ACTION_UP: if (!mTouchEventsComplete) { mUnselectedView.setPressed(false); handleClick(); mTouchEventsComplete = true; } break; case MotionEvent.ACTION_CANCEL: mTouchEventsComplete = true; mUnselectedView.setPressed(false); break; case MotionEvent.ACTION_MOVE: float x = event.getX(); float y = event.getY(); if (x < 0 || y < 0 || x > getWidth() || y > getHeight()) { mUnselectedView.setPressed(false); mTouchEventsComplete = true; } } return true; } public void handleClick() { if (mUnselectedView == mTextView1) { setSelected(mLabel1); if (mListener != null) { mListener.onToggled(mLabel1); } } else if (mUnselectedView == mTextView2) { setSelected(mLabel2); if (mListener != null) { mListener.onToggled(mLabel2); } } } }