package net.tasksnow.view.slidingmenu;
import net.tasksnow.view.reuse.GenericListAdapter.ListItem;
import net.tasksnow.view.slidingmenu.SlidingMenuListView.MenuItem;
import java.util.ArrayList;
import java.util.List;
/**
* @author D056943
* @since 17:21:59 - 29.12.2012
* @project cFoldersDemo
*/
public class MenuContent implements OnListItemStateChangeListener {
// ===========================================================
// Constants
// ===========================================================
// ===========================================================
// Fields
// ===========================================================
private final List<MenuCategory> categories = new ArrayList<MenuCategory>();
private MenuItem selectedItem;
protected OnListItemStateChangeListener listItemStateChangeListener;
// ===========================================================
// Constructors
// ===========================================================
// ===========================================================
// Methods for/from SuperClass/Interfaces
// ===========================================================
@Override
public void onListItemStateChange(ListItem listItem) {
if (this.listItemStateChangeListener != null) {
this.listItemStateChangeListener.onListItemStateChange(listItem);
}
}
// ===========================================================
// Methods
// ===========================================================
public void addCategory(MenuItem categoryItem) {
this.categories.add(new MenuCategory(categoryItem));
}
public void addCategory(MenuCategory category) {
this.categories.add(category);
}
public void cleanSelection(MenuItem newSelection) {
if (this.selectedItem != null) {
this.selectedItem.setSelected(false);
}
if (newSelection != null) {
newSelection.setSelected(true);
this.selectedItem = newSelection;
}
}
// ===========================================================
// Getter & Setter
// ===========================================================
public void setOnListItemStateChangeListener(OnListItemStateChangeListener listItemStateChangeListener) {
this.listItemStateChangeListener = listItemStateChangeListener;
}
public MenuItem getSelectedItem() {
return this.selectedItem;
}
public void setSelectedItem(MenuItem selectedItem) {
this.selectedItem = selectedItem;
}
public List<MenuCategory> getCategories() {
return this.categories;
}
// ===========================================================
// Inner and Anonymous Classes
// ===========================================================
public class MenuCategory {
private MenuItem categoryItem;
private final List<MenuItem> items = new ArrayList<MenuItem>();
public MenuCategory(MenuItem categoryItem) {
this.setCategoryItem(categoryItem);
}
public MenuItem getCategoryItem() {
return this.categoryItem;
}
public void setCategoryItem(MenuItem categoryItem) {
categoryItem.setOnListItemStateChangeListener(MenuContent.this);
this.categoryItem = categoryItem;
}
public void addItem(MenuItem item) {
item.setOnListItemStateChangeListener(MenuContent.this);
this.items.add(item);
}
public List<MenuItem> getItems() {
return this.items;
}
public void setItems(List<MenuItem> items) {
for (MenuItem item : items) {
this.addItem(item);
}
}
}
}