001 package edu.nrao.sss.webapp.faces.tag; 002 003 import javax.faces.webapp.UIComponentTag; 004 import javax.faces.component.UIComponent; 005 import javax.faces.context.FacesContext; 006 import javax.faces.application.Application; 007 import javax.faces.el.ValueBinding; 008 import javax.faces.el.MethodBinding; 009 import javax.faces.el.ReferenceSyntaxException; 010 import javax.faces.event.ValueChangeEvent; 011 012 import edu.nrao.sss.webapp.faces.component.TimeOfDayIntervalUIComponent; 013 014 public class TimeOfDayIntervalTag extends UIComponentTag 015 { 016 private String value = null, 017 valueChangeListener = null, 018 enabled = null, 019 disabledTimeStyleClass = null, 020 timeStyleClass = null, 021 timeFieldStyleClass = null; 022 023 024 public String getComponentType() { return "edu.nrao.sss.TimeOfDayInterval"; } 025 public String getRendererType() { return null; } 026 027 @SuppressWarnings("unchecked") 028 protected void setProperties(UIComponent c) 029 { 030 super.setProperties(c); 031 032 TimeOfDayIntervalUIComponent component = (TimeOfDayIntervalUIComponent)c; 033 034 FacesContext context = FacesContext.getCurrentInstance(); 035 Application app = context.getApplication(); 036 037 if (value != null) 038 { 039 if (isValueReference(value)) 040 { 041 ValueBinding vb = app.createValueBinding(value); 042 043 component.setValueBinding("value", vb); 044 } 045 046 else 047 { 048 throw new ReferenceSyntaxException(value + " is not a valid EL expression"); 049 } 050 } 051 052 if (valueChangeListener != null) 053 { 054 Class[] params = new Class[1]; 055 params[0] = ValueChangeEvent.class; 056 057 MethodBinding mb = app.createMethodBinding(valueChangeListener, params); 058 059 component.setValueChangeListener(mb); 060 } 061 062 if (enabled != null) 063 { 064 if (isValueReference(enabled)) 065 { 066 ValueBinding vb = app.createValueBinding(enabled); 067 068 component.setValueBinding("enabled", vb); 069 } 070 071 else 072 { 073 component.setEnabled(isTrue(enabled)); 074 } 075 } 076 077 if (disabledTimeStyleClass != null) 078 { 079 if (isValueReference(disabledTimeStyleClass)) 080 { 081 ValueBinding vb = app.createValueBinding(disabledTimeStyleClass); 082 083 component.setValueBinding("disabledTimeStyleClass", vb); 084 } 085 086 else 087 { 088 component.getAttributes().put("disabledTimeStyleClass", disabledTimeStyleClass); 089 } 090 } 091 092 if (timeStyleClass != null) 093 { 094 if (isValueReference(timeStyleClass)) 095 { 096 ValueBinding vb = app.createValueBinding(timeStyleClass); 097 098 component.setValueBinding("timeStyleClass", vb); 099 } 100 101 else 102 { 103 component.getAttributes().put("timeStyleClass", timeStyleClass); 104 } 105 } 106 107 if (timeFieldStyleClass != null) 108 { 109 if (isValueReference(timeFieldStyleClass)) 110 { 111 ValueBinding vb = app.createValueBinding(timeFieldStyleClass); 112 113 component.setValueBinding("timeFieldStyleClass", vb); 114 } 115 116 else 117 { 118 component.getAttributes().put("timeFieldStyleClass", timeFieldStyleClass); 119 } 120 } 121 } 122 123 public void release() 124 { 125 super.release(); 126 this.enabled = null; 127 this.value = null; 128 this.valueChangeListener = null; 129 this.disabledTimeStyleClass = null; 130 this.timeStyleClass = null; 131 this.timeFieldStyleClass = null; 132 } 133 134 public void setValue(String v) 135 { 136 this.value = v; 137 } 138 139 public void setValueChangeListener(String l) 140 { 141 this.valueChangeListener = l; 142 } 143 144 public void setEnabled(String e) 145 { 146 this.enabled = e; 147 } 148 149 public void setDisabledTimeStyleClass(String s) 150 { 151 this.disabledTimeStyleClass = s; 152 } 153 154 public void setTimeStyleClass(String s) 155 { 156 this.timeStyleClass = s; 157 } 158 159 public void setTimeFieldStyleClass(String s) 160 { 161 this.timeFieldStyleClass = s; 162 } 163 164 public boolean isTrue(String v) 165 { 166 return ("true".equalsIgnoreCase(v) || "1".equals(v)); 167 } 168 }