1 package net.sf.uitags.tag.calendar; 2 3 import javax.servlet.jsp.JspException ; 4 import javax.servlet.jsp.PageContext ; 5 6 import net.sf.uitags.tag.AbstractUiTag; 7 import net.sf.uitags.tagutil.AttributeSupport; 8 import net.sf.uitags.tagutil.AttributeSupportHelper; 9 import net.sf.uitags.tagutil.ScopedIdGenerator; 10 import net.sf.uitags.tagutil.TaglibProperties; 11 import net.sf.uitags.tagutil.i18n.MessageFinder; 12 import net.sf.uitags.tagutil.i18n.MessageFinderFactory; 13 import net.sf.uitags.util.ArrayUtils; 14 15 public class CalendarGridTag extends AbstractUiTag implements AttributeSupport { 16 20 23 private static final long serialVersionUID = 100L; 24 28 private static final String TAG_INSTANCE_ID_KEY = 29 "net.sf.uitags.tag.calendar.CalendarGridTag.instanceId"; 30 31 32 36 private static final String PROP_CSS_CLASS = 37 "calendar.calendarGrid.class"; 38 39 private static final String PROP_DAY_LABELS = 40 "calendar.calendarGrid.dayLabels"; 41 42 private static final String PROP_CLASS_RESOLVER = 43 "calendar.calendarGrid.classResolver"; 44 45 private static final String PROP_ACTION_RESOLVER = 46 "calendar.calendarGrid.actionResolver"; 47 48 49 53 56 private String cssClass; 57 60 private String [] dayLabels; 61 64 private String classResolver; 65 68 private String actionResolver; 69 72 private AttributeSupportHelper attributeHelper; 73 74 75 79 public void setId(String val) { 80 super.setId(val); 81 } 82 83 public void setClass(String val) { 84 this.cssClass = val; 85 } 86 87 public void setDayLabels(String [] val) { 88 this.dayLabels = val; 89 } 90 91 public void setClassResolver(String val) { 92 this.classResolver = val; 93 } 94 95 public void setActionResolver(String val) { 96 this.actionResolver = val; 97 } 98 99 100 104 public int doStartTag() throws JspException { 105 this.attributeHelper = new AttributeSupportHelper(); 106 107 return EVAL_BODY_INCLUDE; 108 } 109 110 public int doEndTag() throws JspException { 111 CalendarTag parentCalendar = (CalendarTag) findParent(CalendarTag.class); 112 parentCalendar.setCalendarGrid(this); 113 114 setId(null); 116 117 return EVAL_PAGE; 118 } 119 120 private String generateUniqueId() { 121 return "uiCalendar_calendarGrid" + ScopedIdGenerator.nextId( 122 PageContext.REQUEST_SCOPE, TAG_INSTANCE_ID_KEY, this.pageContext); 123 } 124 125 126 public void addAttribute(String attrName, String attrValue) { 127 this.attributeHelper.addAttribute(attrName, attrValue); 128 } 129 130 131 135 139 public String getId() { 140 if (super.getId() == null) { 141 super.setId(generateUniqueId()); 142 } 143 return super.getId(); 144 } 145 146 String getCssClass() { 147 TaglibProperties props = TaglibProperties.getInstance(); 148 props.setRuntimeProperty(PROP_CSS_CLASS, this.cssClass); 149 150 return props.get(PROP_CSS_CLASS); 151 } 152 153 String [] getDayLabels() { 154 if (this.dayLabels == null) { 155 TaglibProperties props = TaglibProperties.getInstance(); 156 MessageFinder messageFinder = 157 MessageFinderFactory.getInstance(this.pageContext); 158 this.dayLabels = 159 ArrayUtils.toArray(messageFinder.get(props.get(PROP_DAY_LABELS))); 160 } 161 162 return this.dayLabels; 163 } 164 165 String getClassResolver() { 166 TaglibProperties props = TaglibProperties.getInstance(); 167 props.setRuntimeProperty(PROP_CLASS_RESOLVER, this.classResolver); 168 169 return props.get(PROP_CLASS_RESOLVER); 170 } 171 172 String getActionResolver() { 173 TaglibProperties props = TaglibProperties.getInstance(); 174 props.setRuntimeProperty(PROP_ACTION_RESOLVER, this.actionResolver); 175 176 return props.get(PROP_ACTION_RESOLVER); 177 } 178 179 String getCustomHtmlAttributes() { 180 return this.attributeHelper.eval(); 181 } 182 } 183 | Popular Tags |