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.ReferenceSyntaxException;
009    
010    import edu.nrao.sss.webapp.faces.component.NotesUIComponent;
011    
012    public class NotesTag extends UIComponentTag
013    {
014            private String value = null, 
015                    headerClass,
016                    styleClass,
017                    collapseLinkClass,
018                    enabled = null;
019    
020            public String getComponentType() { return "edu.nrao.sss.Notes"; }
021            public String getRendererType() { return null; }
022            
023            @SuppressWarnings("unchecked")
024            protected void setProperties(UIComponent c)
025            {
026                    super.setProperties(c);
027                    
028                    NotesUIComponent component = (NotesUIComponent)c;
029    
030                    FacesContext context = FacesContext.getCurrentInstance();
031                    Application app = context.getApplication();
032    
033                    if (value != null) 
034                    { 
035                            if (isValueReference(value))
036                            {
037                                    ValueBinding vb = app.createValueBinding(value);
038    
039                                    component.setValueBinding("value", vb);
040                            }
041                            
042                            else
043                            {
044                                    throw new ReferenceSyntaxException(value + " is not a valid EL expression");
045                            }
046                    }
047                    
048                    if (enabled != null) 
049                    { 
050                            if (isValueReference(enabled))
051                            {
052                                    ValueBinding vb = app.createValueBinding(enabled);
053    
054                                    component.setValueBinding("enabled", vb);
055                            }
056                            
057                            else
058                            {
059                                    component.setEnabled(Boolean.valueOf(enabled));
060                            }
061                    }
062    
063                    if (styleClass != null) 
064                    { 
065                            if (isValueReference(styleClass))
066                            {
067                                    ValueBinding vb = app.createValueBinding(styleClass);
068    
069                                    component.setValueBinding("styleClass", vb);
070                            }
071                            
072                            else
073                            {
074                                    component.getAttributes().put("styleClass", styleClass);
075                            }
076                    }
077                    
078                    if (headerClass != null) 
079                    { 
080                            if (isValueReference(headerClass))
081                            {
082                                    ValueBinding vb = app.createValueBinding(headerClass);
083    
084                                    component.setValueBinding("headerClass", vb);
085                            }
086                            
087                            else
088                            {
089                                    component.getAttributes().put("headerClass", headerClass);
090                            }
091                    }
092                    
093                    if (collapseLinkClass != null) 
094                    { 
095                            if (isValueReference(collapseLinkClass))
096                            {
097                                    ValueBinding vb = app.createValueBinding(collapseLinkClass);
098    
099                                    component.setValueBinding("collapseLinkClass", vb);
100                            }
101                            
102                            else
103                            {
104                                    component.getAttributes().put("collapseLinkClass", collapseLinkClass);
105                            }
106                    }
107            }
108            
109            public void release()
110            {
111                    super.release();
112                    this.enabled = null;
113                    this.value = null;
114                    this.styleClass = null;
115                    this.headerClass = null;
116                    this.collapseLinkClass = null;
117            }
118            
119            public void setValue(String v)
120            {
121                    this.value = v;
122            }
123            
124            public void setEnabled(String e)
125            {
126                    this.enabled = e;
127            }
128            
129            public void setStyleClass(String c)
130            {
131                    this.styleClass = c;
132            }
133            
134            public void setHeaderClass(String c)
135            {
136                    this.headerClass = c;
137            }
138            
139            public void setCollapseLinkClass(String c)
140            {
141                    this.collapseLinkClass = c;
142            }
143    }