1 22 23 package org.meshcms.taglib; 24 25 import java.io.*; 26 import org.meshcms.core.*; 27 import org.meshcms.util.*; 28 29 32 public final class Breadcrumbs extends AbstractTag { 33 public static final String MODE_TITLES = "titles"; 34 public static final String MODE_LINKS = "links"; 35 public static final String DEFAULT_SEPARATOR = " "; 36 37 private String separator = DEFAULT_SEPARATOR; 38 private String mode; 39 private String style; 40 private String target; 41 private String current = "true"; 42 private String pre; 43 private String post; 44 45 public void setSeparator(String separator) { 46 this.separator = Utils.noNull(separator, DEFAULT_SEPARATOR); 47 } 48 49 public void setMode(String mode) { 50 this.mode = mode; 51 } 52 53 public void setStyle(String style) { 54 this.style = style; 55 } 56 57 public void setTarget(String target) { 58 this.target = target; 59 } 60 61 public void setPre(String pre) { 62 this.pre = pre; 63 } 64 65 public void setPost(String post) { 66 this.post = post; 67 } 68 69 public void writeTag() throws IOException { 70 PageInfo[] breadcrumbs = webSite.getSiteMap().getBreadcrumbs(pagePath); 71 String [] outs; 72 73 if (mode != null && mode.equals(MODE_LINKS)) { 74 outs = webSite.getLinkList(breadcrumbs, request.getContextPath(), target, 75 style); 76 } else { 77 outs = webSite.getTitles(breadcrumbs); 78 } 79 80 if (Utils.isTrue(current)) { 81 int last = 0; 82 83 if (outs == null) { 84 outs = new String [1]; 85 } else { 86 last = outs.length; 87 String [] temp = new String [last + 1]; 88 System.arraycopy(outs, 0, temp, 0, last); 89 outs = temp; 90 } 91 92 PageInfo pageInfo = webSite.getSiteMap().getPageInfo(pagePath); 93 outs[last] = (pageInfo == null) ? getPage().getTitle() : 94 webSite.getSiteInfo().getPageTitle(pageInfo); 95 } 96 97 Writer w = getOut(); 98 99 if (outs != null && outs.length > 0) { 100 if (pre != null) { 101 w.write(pre); 102 } 103 104 w.write(Utils.generateList(outs, separator)); 105 106 if (post != null) { 107 w.write(post); 108 } 109 } else { 110 w.write(" "); 111 } 112 } 113 114 public String getSeparator() { 115 return separator; 116 } 117 118 public String getMode() { 119 return mode; 120 } 121 122 public String getStyle() { 123 return style; 124 } 125 126 public String getTarget() { 127 return target; 128 } 129 130 public String getCurrent() { 131 return current; 132 } 133 134 public void setCurrent(String current) { 135 this.current = current; 136 } 137 138 public String getPre() { 139 return pre; 140 } 141 142 public String getPost() { 143 return post; 144 } 145 } 146
| Popular Tags
|