package br.gov.frameworkdemoiselle.menu.configuration;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import br.gov.frameworkdemoiselle.annotation.Ignore;
import br.gov.frameworkdemoiselle.annotation.Name;
import br.gov.frameworkdemoiselle.configuration.Configuration;
@Configuration(resource = "demoiselle", prefix = "menucontext.")
public class MenuContextConfig implements Serializable {
private static final long serialVersionUID = 1L;
@Name("selectedStyleClass")
private String selectedStyleClass;
@Name("selectItems")
private List<String> selectItems;
@Ignore
private List<String[]> selectItemsList;
@Name("singleSelect")
private boolean singleSelect = true;
@Name("permitUnselect")
private boolean permitUnselect = false;
@Name("filter.enabled")
private boolean filterEnabled = true;
@Name("filter.menuName")
private String filterMenuName = "URL";
@Name("filter.menuItems")
private List<String> filterMenuItems = new ArrayList<String>();
@Ignore
private Map<String, String> filterMenuItemsMap;
public boolean isFilterEnabled() {
return filterEnabled;
}
public String getFilterMenuItem(String url) {
if (filterMenuItemsMap == null && filterMenuItems != null) {
filterMenuItemsMap = new HashMap<String, String>();
for (String item : filterMenuItems) {
String[] itemArray = item.split(":");
filterMenuItemsMap.put(itemArray[1], itemArray[0]);
}
}
return filterMenuItemsMap.get(url);
}
/**
* The list of menu items that will be seleteds on startup For each
* selectItems property like menuName:menuItem:true:false
*
* The return is a String[] with four elements: [1] menuName [2] menuItem
* [3] singleSelect - default is true [4] permitUnselect - default is false
*
* @return menucontext.selectItems property;
*/
public List<String[]> getSelectItems() {
if (selectItemsList == null && selectItems != null) {
selectItemsList = new ArrayList<String[]>();
for (String item : selectItems) {
String[] itemArray = item.split(":");
if (itemArray.length > 1) {
String[] resultArray = new String[] { itemArray[0], itemArray[1], "true", "false" };
if (itemArray.length > 2 && itemArray[2].toLowerCase().equals("false"))
resultArray[2] = "false";
if (itemArray.length > 3 && itemArray[3].toLowerCase().equals("true"))
resultArray[3] = "true";
selectItemsList.add(resultArray);
}
}
}
return selectItemsList;
}
/**
* The default styleClass for select menu item
*
* @return menucontext.selectedStyleClass property;
*/
public String getSelectedStyleClass() {
return selectedStyleClass;
}
/**
* The default behavior for multiselect support
*
* @return menucontext.singleSelect property;
*/
public boolean isSingleSelect() {
return singleSelect;
}
/**
* The default behavior for unselect support
*
* @return menucontext.permitUnselect property;
*/
public boolean isPermitedUnselect() {
return permitUnselect;
}
/**
* The menu name to set current URL
*
* @return menucontext.filter.menu.name;
*/
public String getFilterMenuName() {
return filterMenuName;
}
}