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