package v2.simpleUi;
import java.util.ArrayList;
import v2.simpleUi.uiDecoration.UiDecoratable;
import v2.simpleUi.uiDecoration.UiDecorator;
import android.content.Context;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
public abstract class M_ImageGallery implements ModifierInterface,
UiDecoratable {
private int selectedItemNr = -1;
private ArrayList<Integer> r;
private UiDecorator myDecorator;
@Override
public View getView(final Context context) {
LayoutParams p = new LinearLayout.LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT, 1);
LinearLayout l = new LinearLayout(context);
l.setPadding(DEFAULT_PADDING, DEFAULT_PADDING, DEFAULT_PADDING,
DEFAULT_PADDING);
l.setOrientation(LinearLayout.VERTICAL);
TextView t = new TextView(context);
t.setGravity(Gravity.CENTER_HORIZONTAL);
t.setText(getVarName());
l.addView(t);
final Gallery g = new Gallery(context);
g.setLayoutParams(p);
g.setSpacing(10);
// g.setUnselectedAlpha(0.1f);
r = getImageIds();
// TypedArray a = obtainStyledAttributes(android.R.style.Theme);
// mGalleryItemBackground = a.getResourceId(
// android.R.styleable.Theme_galleryItemBackground, 0);
// a.recycle();
g.setAdapter(new BaseAdapter() {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView iv;
if (convertView instanceof ImageView) {
iv = (ImageView) convertView;
} else {
iv = new ImageView(context);
iv.setLayoutParams(new Gallery.LayoutParams(64, 64));
iv.setScaleType(ImageView.ScaleType.FIT_XY);
}
iv.setImageResource(r.get(position));
return iv;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public int getCount() {
return r.size();
}
});
g.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View item,
int position, long id) {
selectedItemNr = position;
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
});
if (myDecorator != null) {
int level = myDecorator.getCurrentLevel();
myDecorator.decorate(context, l, level + 1,
UiDecorator.TYPE_CONTAINER);
myDecorator.decorate(context, t, level + 1,
UiDecorator.TYPE_INFO_TEXT);
}
l.addView(g);
return l;
}
@Override
public boolean assignNewDecorator(UiDecorator decorator) {
myDecorator = decorator;
return true;
}
@Override
public boolean save() {
if (selectedItemNr == -1)
return true;
return save(r.get(selectedItemNr));
}
public abstract boolean save(int selectedItemId);
public abstract ArrayList<Integer> getImageIds();
public abstract String getVarName();
}