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); } } } }