/*
* Copyright (C) 2011 Steven Luo
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.spartacusrex.spartacuside;
import java.util.Iterator;
import android.content.Context;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.View;
import android.widget.Toast;
import android.widget.ViewFlipper;
public class TermViewFlipper extends ViewFlipper implements Iterable<View> {
private Context context;
private Toast mToast;
class ViewFlipperIterator implements Iterator<View> {
int pos = 0;
public boolean hasNext() {
return (pos < getChildCount());
}
public View next() {
return getChildAt(pos++);
}
public void remove() {
throw new UnsupportedOperationException();
}
}
public TermViewFlipper(Context context) {
super(context);
this.context = context;
}
public TermViewFlipper(Context context, AttributeSet attrs) {
super(context, attrs);
this.context = context;
}
public Iterator<View> iterator() {
return new ViewFlipperIterator();
}
public void pauseCurrentView() {
EmulatorView view = (EmulatorView) getCurrentView();
if (view == null) {
return;
}
view.onPause();
}
public void resumeCurrentView() {
EmulatorView view = (EmulatorView) getCurrentView();
if (view == null) {
return;
}
view.onResume();
}
private void showTitle() {
if (getChildCount() == 0) {
return;
}
String title = "Terminal " + (getDisplayedChild()+1);
if (mToast == null) {
mToast = Toast.makeText(context, title, Toast.LENGTH_SHORT);
} else {
mToast.setText(title);
}
mToast.setGravity(Gravity.CENTER, 0, 0);
mToast.show();
}
@Override
public void showPrevious() {
pauseCurrentView();
super.showPrevious();
showTitle();
resumeCurrentView();
}
@Override
public void showNext() {
pauseCurrentView();
super.showNext();
showTitle();
resumeCurrentView();
}
@Override
public void setDisplayedChild(int position) {
pauseCurrentView();
super.setDisplayedChild(position);
showTitle();
resumeCurrentView();
}
}