1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
| public class UIMenuItem extends UIComponentBase {
/**
* @see javax.faces.component.UIComponent#getFamily()
*/
@Override
public String getFamily() {
return "menuItem";
}
/**
* @see javax.faces.component.UIComponentBase#encodeEnd(javax.faces.context.FacesContext)
*/
public void encodeEnd(FacesContext facesContext) throws IOException {
ResponseWriter responseWriter = facesContext.getResponseWriter();
String clientId = this.getClientId(facesContext);
Integer levelMin = Integer.parseInt((String) FacesUtil.getValueOfElExp((String) this.getAttributes().get("levelMin")));
String id = (String) FacesUtil.getValueOfElExp((String) this.getAttributes().get("id"));
String styleClass = (String) FacesUtil.getValueOfElExp((String) this.getAttributes().get("styleClass"));
String value = (String) FacesUtil.getValueOfElExp((String) this.getAttributes().get("value"));
String active = (String) FacesUtil.getValueOfElExp((String) this.getParent().getAttributes().get("activeStyleClass"));
if (active != null) {
if ((styleClass != null) && (isCurrentPage(id))) {
styleClass = styleClass + " " + active;
} else if ((styleClass == null) && (isCurrentPage(id))) {
styleClass = active;
}
}
UserController usrCtrl = (UserController) FacesUtil.getBean("userCtrl");
if (usrCtrl.getUser().getStatus() >= levelMin) {
responseWriter.startElement("li", this);
if (styleClass != null) {
responseWriter.writeAttribute("class", styleClass, "class");
}
responseWriter.startElement("a", this);
responseWriter.writeAttribute("href", "javascript:document.forms['" + this.getParent().getParent().getClientId(facesContext) + "'].submit();", "href");
responseWriter.writeAttribute("onclick", "document.getElementById('" + clientId + "').value = 'true';return true;", "onclick");
if (value != null) {
responseWriter.write(value);
}
responseWriter.endElement("a");
} else {
String disabled = (String) FacesUtil.getValueOfElExp((String) this.getParent().getAttributes().get("disabledStyleClass"));
responseWriter.startElement("li", this);
if (disabled != null) {
responseWriter.writeAttribute("class", disabled, "class");
}
responseWriter.startElement("a", this);
responseWriter.writeAttribute("href", "#", "href");
if (value != null) {
responseWriter.write(value);
}
responseWriter.endElement("a");
}
responseWriter.endElement("li");
// Input Hidden
responseWriter.startElement("input", this);
responseWriter.writeAttribute("id", clientId, "id");
responseWriter.writeAttribute("name", clientId, "name");
responseWriter.writeAttribute("type", "hidden", "type");
responseWriter.writeAttribute("value", "false", "value");
responseWriter.endElement("input");
}
/**
* @see javax.faces.component.UIComponentBase#decode(javax.faces.context.FacesContext)
*/
@SuppressWarnings("unchecked")
public void decode(FacesContext facesContext) {
String clientId = this.getClientId(facesContext);
Map parametersMap = facesContext.getExternalContext().getRequestParameterMap();
Object val = parametersMap.get(clientId);
if (val != null) {
Boolean cmd = Boolean.parseBoolean(val.toString());
if (cmd) {
String action = (String) this.getAttributes().get("action");
String redirect = (String) FacesUtil.getValueOfElExpMethod(action);
facesContext.getApplication().getNavigationHandler().handleNavigation(facesContext, null, redirect);
}
}
}
/**
* @see javax.faces.component.UIComponentBase#getRendersChildren()
*/
public boolean getRendersChildren() {
return true;
}
/**
* Check if this item is the current page.
*
* @param inId
* @return true if this item is the current page
*/
private boolean isCurrentPage(String inId) {
if (inId.compareToIgnoreCase("home") == 0) {
if (MenuUtil.isHome()) {
return true;
}
} else if (inId.compareToIgnoreCase("report") == 0) {
if (MenuUtil.isReport()) {
return true;
}
} else if (inId.compareToIgnoreCase("task") == 0) {
if (MenuUtil.isTask()) {
return true;
}
} else if (inId.compareToIgnoreCase("customer") == 0) {
if (MenuUtil.isCustomer()) {
return true;
}
} else if (inId.compareToIgnoreCase("user") == 0) {
if (MenuUtil.isUser()) {
return true;
}
} else if (inId.compareToIgnoreCase("history") == 0) {
if (MenuUtil.isHistory()) {
return true;
}
}
return false;
} |
Partager