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