package com.joe.jsf.helper; import java.util.List; import java.util.Map; import javax.faces.application.Application; import javax.faces.context.FacesContext; import com.joe.jsf.web.view.BreadCrumbBean; import com.joe.jsf.web.view.BreadCrumbInfo; /** * This class provides utility functionality to populate the breadcrumbview managed bean * in session scope. * * @author John J. Jones III * @version 1.0 * * Creation date: Mar 14, 2007 * Copyright (c) 2007 MEDecision, Inc. All rights reserved. */ public class BreadCrumbHelper { public static void popBreadCrumb() { BreadCrumbBean breadCrumbBean = getBreadCrumbBeanFromContext(); List<BreadCrumbInfo> crumbs = breadCrumbBean.getBreadCrumbHistory(); crumbs.remove(crumbs.size()-1); } /** * This method takes parameters necessary for a bread crumb, creates the bread crumb, * and adds the object to the bread Crumb bean in session scope. * * @param breadCrumbDisplayText * @param methodBindingName * @param params * @throws RuntimeException */ public static void addBreadCrumb(String breadCrumbDisplayText, String methodBindingName, Map<String,String> params) throws RuntimeException{ if (breadCrumbDisplayText==null || breadCrumbDisplayText.equals("")) throw new RuntimeException("Bread Crumb Display text must contain a value"); BreadCrumbBean breadCrumbBean = getBreadCrumbBeanFromContext(); // create bread crumb object // add bread crumb object to managed bean breadCrumbBean.addBreadCrumb(breadCrumbDisplayText,methodBindingName,params); } /** * Return the last bread crumb * @return the last bread crumb */ public static BreadCrumbInfo getLastBreadCrumb() { return getBreadCrumbBeanFromContext().getLastBreadCrumb(); } /** * This method gets the BreadCrumb managed bean from session scope and returns the * reference to the bean. * * @return */ private static BreadCrumbBean getBreadCrumbBeanFromContext() { // obtain faces context and neutral application session FacesContext ctx = FacesContext.getCurrentInstance(); Application app = ctx.getApplication(); // obtain instance of HeaderBean from session context BreadCrumbBean breadCrumbBean = (BreadCrumbBean) app.createValueBinding("#{BreadCrumbBean}").getValue(ctx); return breadCrumbBean; } public static void clearBreadCrumbHistroy() throws RuntimeException{ BreadCrumbBean breadCrumbBean = getBreadCrumbBeanFromContext(); if (breadCrumbBean.getBreadCrumbHistory()!=null) breadCrumbBean.getBreadCrumbHistory().clear(); } }