001    package org.apache.myfaces.tobago.component;
002    
003    /*
004     * Licensed to the Apache Software Foundation (ASF) under one or more
005     * contributor license agreements.  See the NOTICE file distributed with
006     * this work for additional information regarding copyright ownership.
007     * The ASF licenses this file to You under the Apache License, Version 2.0
008     * (the "License"); you may not use this file except in compliance with
009     * the License.  You may obtain a copy of the License at
010     *
011     *      http://www.apache.org/licenses/LICENSE-2.0
012     *
013     * Unless required by applicable law or agreed to in writing, software
014     * distributed under the License is distributed on an "AS IS" BASIS,
015     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
016     * See the License for the specific language governing permissions and
017     * limitations under the License.
018     */
019    
020    import javax.faces.context.FacesContext;
021    import javax.faces.el.ValueBinding;
022    
023    import static org.apache.myfaces.tobago.TobagoConstants.ATTR_ALIGN;
024    import static org.apache.myfaces.tobago.TobagoConstants.ATTR_LABEL;
025    import static org.apache.myfaces.tobago.TobagoConstants.ATTR_RESIZABLE;
026    import static org.apache.myfaces.tobago.TobagoConstants.ATTR_SORTABLE;
027    import static org.apache.myfaces.tobago.TobagoConstants.ATTR_WIDTH;
028    
029    
030    /*
031     * Date: 18.04.2006
032     * Time: 21:50:29
033     */
034    public class UIColumn extends javax.faces.component.UIColumn implements SupportsMarkup {
035      public static final String COMPONENT_TYPE = "org.apache.myfaces.tobago.Column";
036      private Boolean sortable;
037      private Boolean resizable;
038      private String align;
039      private String label;
040      private String[] markup;
041      private String width;
042    
043      public void restoreState(FacesContext context, Object state) {
044        Object[] values = (Object[]) state;
045        super.restoreState(context, values[0]);
046        align = (String) values[1];
047        sortable = (Boolean) values[2];
048        resizable = (Boolean) values[3];
049        label = (String) values[4];
050        markup = (String[]) values[5];
051        width = (String) values[6];
052      }
053    
054      public Object saveState(FacesContext context) {
055        Object[] values = new Object[7];
056        values[0] = super.saveState(context);
057        values[1] = align;
058        values[2] = sortable;
059        values[3] = resizable;
060        values[4] = label;
061        values[5] = markup;
062        values[6] = width;
063        return values;
064      }
065    
066      public String[] getMarkup() {
067        if (markup != null) {
068          return markup;
069        }
070        return ComponentUtil.getMarkupBinding(getFacesContext(), this);
071      }
072    
073      public void setMarkup(String[] markup) {
074        this.markup = markup;
075      }
076    
077      public boolean isSortable() {
078        if (sortable != null) {
079          return sortable;
080        }
081        ValueBinding vb = getValueBinding(ATTR_SORTABLE);
082        if (vb != null) {
083          return (Boolean.TRUE.equals(vb.getValue(getFacesContext())));
084        } else {
085          return false;
086        }
087      }
088    
089      public void setSortable(boolean sortable) {
090        this.sortable = sortable;
091      }
092    
093      public boolean isResizable() {
094        if (resizable != null) {
095          return resizable;
096        }
097        ValueBinding vb = getValueBinding(ATTR_RESIZABLE);
098        if (vb != null) {
099          return (Boolean.TRUE.equals(vb.getValue(getFacesContext())));
100        } else {
101          return true;
102        }
103      }
104    
105      public void setResizable(boolean resizable) {
106        this.resizable = resizable;
107      }
108    
109      public String getAlign() {
110        if (align != null) {
111          return align;
112        }
113        ValueBinding vb = getValueBinding(ATTR_ALIGN);
114        if (vb != null) {
115          return (String) vb.getValue(getFacesContext());
116        } else {
117          return align;
118        }
119      }
120    
121      public void setAlign(String align) {
122        this.align = align;
123      }
124    
125      public String getLabel() {
126        if (label != null) {
127          return label;
128        }
129        ValueBinding vb = getValueBinding(ATTR_LABEL);
130        if (vb != null) {
131          return (String) vb.getValue(getFacesContext());
132        } else {
133          return label;
134        }
135      }
136    
137      public void setLabel(String label) {
138        this.label = label;
139      }
140    
141      public String getWidth() {
142        if (width != null) {
143          return width;
144        }
145        ValueBinding vb = getValueBinding(ATTR_WIDTH);
146        if (vb != null) {
147          return (String) vb.getValue(getFacesContext());
148        } else {
149          return RelativeLayoutToken.DEFAULT_TOKEN_STRING;
150        }
151      }
152    
153      public void setWidth(String width) {
154        this.width = width;
155      }
156    
157    }