1 package fr.improve.struts.taglib.layout.crumb; 2 3 import java.util.Iterator ; 4 5 import javax.servlet.http.HttpServletRequest ; 6 import javax.servlet.jsp.JspException ; 7 8 import fr.improve.struts.taglib.layout.PanelTag; 9 import fr.improve.struts.taglib.layout.event.EndLayoutEvent; 10 import fr.improve.struts.taglib.layout.event.StartLayoutEvent; 11 import fr.improve.struts.taglib.layout.util.ICrumbRenderer; 12 import fr.improve.struts.taglib.layout.util.LayoutUtils; 13 import fr.improve.struts.taglib.layout.util.TagUtils; 14 18 public class CrumbsTag extends PanelTag { 19 24 protected boolean needSeparator = false; 25 26 30 protected int level = 0; 31 32 36 protected String separator = "|"; 37 38 41 protected String separatorClass; 42 protected String separatorWidth; 43 protected String separatorHeight; 44 protected String separatorDivTag; 45 46 49 protected String crumbsName; 50 protected String crumbsProperty; 51 52 public int doEndLayoutTag() throws JspException { 53 StringBuffer buffer = new StringBuffer (); 54 if (crumbsName!=null && crumbsName.length()!=0) { 55 Iterator lc_iterator = LayoutUtils.getIterator(pageContext, crumbsName, crumbsProperty); 56 while (lc_iterator.hasNext()) { 57 Crumb lc_crumb = (Crumb) lc_iterator.next(); 58 printCrumb(null, lc_crumb); 59 } 60 } 61 TagUtils.write(pageContext, buffer.toString()); 62 63 ICrumbRenderer renderer = getSkin().getCrumbRenderer(getModel()); 64 renderer.doEndCrumbs(pageContext, this); 65 66 new EndLayoutEvent(this, null).send(); 67 68 needSeparator = false; 70 level = 0; 71 72 return EVAL_PAGE; 73 } 74 public int doStartLayoutTag() throws JspException { 75 new StartLayoutEvent(this, null).send(); 76 ICrumbRenderer renderer = getSkin().getCrumbRenderer(getModel()); 77 renderer.doStartCrumbs(pageContext, this); 78 return EVAL_BODY_INCLUDE; 79 } 80 public int getLevel() { 81 return level; 82 } 83 84 90 public java.lang.String getSeparator() { 91 if (separatorClass==null) return separator; 92 if (separatorDivTag==null) { 93 StringBuffer buffer = new StringBuffer (); 94 buffer.append("<div class=\""); 95 buffer.append(separatorClass); 96 buffer.append("\" width=\""); 97 buffer.append(separatorWidth); 98 buffer.append("\" height=\""); 99 buffer.append(separatorHeight); 100 buffer.append("\"> </div>"); 101 separatorDivTag = buffer.toString(); 102 } 103 return separatorDivTag; 104 } 105 106 110 public void printCrumb(StringBuffer in_buffer, Crumb in_crumb) throws JspException { 111 ICrumbRenderer renderer = getSkin().getCrumbRenderer(getModel()); 112 renderer.doRenderCrumb(pageContext, this, in_crumb); 113 } 114 115 120 public java.lang.String getSeparatorClass() { 121 return separatorClass; 122 } 123 128 public java.lang.String getSeparatorHeight() { 129 return separatorHeight; 130 } 131 136 public java.lang.String getSeparatorWidth() { 137 return separatorWidth; 138 } 139 public boolean needSeparator() { 140 boolean value = needSeparator; 141 needSeparator = true; 142 level++; 143 return value; 144 } 145 public void release() { 146 super.release(); 147 148 needSeparator = false; 149 level = 0; 150 separatorClass = null; 151 separatorHeight = null; 152 separatorWidth = null; 153 separatorDivTag = null; 154 155 crumbsName = null; 156 crumbsProperty = null; 157 } 158 163 public void setSeparator(java.lang.String newSeparator) { 164 separator = newSeparator; 165 } 166 171 public void setSeparatorClass(java.lang.String newSeparatorClass) { 172 separatorClass = newSeparatorClass; 173 } 174 179 public void setSeparatorHeight(java.lang.String newSeparatorHeight) { 180 separatorHeight = newSeparatorHeight; 181 } 182 187 public void setSeparatorWidth(java.lang.String newSeparatorWidth) { 188 separatorWidth = newSeparatorWidth; 189 } 190 194 public String getCrumbsName() { 195 return crumbsName; 196 } 197 198 202 public void setCrumbsName(String crumbsName) { 203 this.crumbsName = crumbsName; 204 } 205 206 210 public String getCrumbsProperty() { 211 return crumbsProperty; 212 } 213 214 218 public void setCrumbsProperty(String crumbsProperty) { 219 this.crumbsProperty = crumbsProperty; 220 } 221 222 } 223 | Popular Tags |