package com.gueei.demos.markupDemo.viewModels;
import android.view.View;
import gueei.binding.markupDemoICS.R;
import gueei.binding.Command;
import gueei.binding.DependentObservable;
import gueei.binding.collections.ArrayListObservable;
import gueei.binding.observables.IntegerObservable;
import gueei.binding.observables.ObjectObservable;
import gueei.binding.viewAttributes.templates.Layout;
import gueei.binding.viewAttributes.templates.SingleTemplateLayout;
public class SwitchableItemTemplate {
public final ArrayListObservable<ArrayListItem> Items = new ArrayListObservable<ArrayListItem>(ArrayListItem.class);
public final ArrayListObservable<String> Templates = new ArrayListObservable<String>(String.class);
public SwitchableItemTemplate() {
for (int i = 0; i < 10; i++) {
Items.add(new ArrayListItem());
}
Templates.add("Template1");
Templates.add("Template2");
}
public final ObjectObservable SelectedTemplate = new ObjectObservable();
public final DependentObservable<Layout> ItemTemplate = new DependentObservable<Layout>(Layout.class, SelectedTemplate) {
@Override
public Layout calculateValue(Object... args) throws Exception {
if (SelectedTemplate.get() == null) {
return null;
}
if (SelectedTemplate.get().equals("Template1")) {
return new SingleTemplateLayout(R.layout.arraylist_item2);
}
return new SingleTemplateLayout(R.layout.arraylist_item1);
}
};
public final DependentObservable<Layout> SpinnerTemplate = new DependentObservable<Layout>(Layout.class, SelectedTemplate) {
@Override
public Layout calculateValue(Object... args) throws Exception {
if (SelectedTemplate.get() == null) {
return null;
}
if (SelectedTemplate.get().equals("Template1")) {
return new SingleTemplateLayout(R.layout.simple_spinner_item);
}
return new SingleTemplateLayout(R.layout.simple_spinner_item2);
}
};
public class ArrayListItem {
private static final String Prefix = "Item: ClickCount=";
public final Command ClickTitle = new Command() {
public void Invoke(View view, Object... args) {
ClickCount.set(ClickCount.get() + 1);
}
};
public final IntegerObservable ClickCount = new IntegerObservable(0);
public final DependentObservable<String> Title = new DependentObservable<String>(String.class, ClickCount) {
@Override
public String calculateValue(Object... args) throws Exception {
return Prefix + ClickCount.get();
}
};
@Override public String toString() {
// simple_spinner_item(2).xml has no binding to "Title"
return Title.get();
}
}
}