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.taglib.component;
021    
022    import org.apache.myfaces.tobago.component.ComponentUtil;
023    import org.apache.myfaces.tobago.component.UIData;
024    import org.apache.myfaces.tobago.util.Deprecation;
025    
026    import javax.faces.component.UIComponent;
027    
028    import static org.apache.myfaces.tobago.TobagoConstants.ATTR_COLUMNS;
029    import static org.apache.myfaces.tobago.TobagoConstants.ATTR_DIRECT_LINK_COUNT;
030    import static org.apache.myfaces.tobago.TobagoConstants.ATTR_FIRST;
031    import static org.apache.myfaces.tobago.TobagoConstants.ATTR_FORCE_VERTICAL_SCROLLBAR;
032    import static org.apache.myfaces.tobago.TobagoConstants.ATTR_ROWS;
033    import static org.apache.myfaces.tobago.TobagoConstants.ATTR_SELECTABLE;
034    import static org.apache.myfaces.tobago.TobagoConstants.ATTR_SHOW_DIRECT_LINKS;
035    import static org.apache.myfaces.tobago.TobagoConstants.ATTR_SHOW_HEADER;
036    import static org.apache.myfaces.tobago.TobagoConstants.ATTR_SHOW_PAGE_RANGE;
037    import static org.apache.myfaces.tobago.TobagoConstants.ATTR_SHOW_ROW_RANGE;
038    import static org.apache.myfaces.tobago.TobagoConstants.ATTR_STATE;
039    import static org.apache.myfaces.tobago.TobagoConstants.ATTR_VALUE;
040    import static org.apache.myfaces.tobago.TobagoConstants.ATTR_VAR;
041    
042    
043    public class SheetTag extends TobagoTag implements SheetTagDeclaration {
044    
045      private String var;
046      private String showRowRange = "none";
047      private String showPageRange = "none";
048      private String showDirectLinks = "none";
049      private String directLinkCount = "9";
050      private String showHeader;
051      private String first = "0";
052      private String rows = "100";
053      private String columns;
054      private String value;
055      private String forceVerticalScrollbar;
056      private String state;
057      private String stateChangeListener;
058      private String sortActionListener;
059      private String selectable;
060    
061      public String getComponentType() {
062        // TODO: implement uidata with overridden processUpdates to store state
063        return UIData.COMPONENT_TYPE;
064      }
065    
066      public void release() {
067        super.release();
068        var = null;
069        showRowRange = "none";
070        showPageRange = "none";
071        showDirectLinks = "none";
072        directLinkCount = "9";
073        showHeader = null;
074        first = "0";
075        rows = "100";
076        columns = null;
077        value = null;
078        forceVerticalScrollbar = null;
079        state = null;
080        stateChangeListener = null;
081        sortActionListener = null;
082        selectable = null;
083      }
084    
085      protected void setProperties(UIComponent component) {
086        super.setProperties(component);
087        UIData data = (UIData) component;
088        ComponentUtil.setStringProperty(data, ATTR_SHOW_ROW_RANGE, showRowRange);
089        ComponentUtil.setStringProperty(data, ATTR_SHOW_PAGE_RANGE, showPageRange);
090        ComponentUtil.setStringProperty(data, ATTR_SHOW_DIRECT_LINKS, showDirectLinks);
091        ComponentUtil.setIntegerProperty(data, ATTR_DIRECT_LINK_COUNT, directLinkCount);
092        ComponentUtil.setBooleanProperty(data, ATTR_SHOW_HEADER, showHeader);
093        ComponentUtil.setIntegerProperty(data, ATTR_FIRST, first);
094        ComponentUtil.setIntegerProperty(data, ATTR_ROWS, rows);
095        ComponentUtil.setStringProperty(data, ATTR_COLUMNS, columns);
096        ComponentUtil.setStringProperty(data, ATTR_VALUE, value);
097        ComponentUtil.setStringProperty(data, ATTR_FORCE_VERTICAL_SCROLLBAR, forceVerticalScrollbar);
098        ComponentUtil.setStringProperty(data, ATTR_VAR, var);
099        ComponentUtil.setValueBinding(component, ATTR_STATE, state);
100        ComponentUtil.setStateChangeListener(data, stateChangeListener);
101        ComponentUtil.setSortActionListener(data, sortActionListener);
102        ComponentUtil.setStringProperty(data, ATTR_SELECTABLE, selectable);
103      }
104    
105      public String getColumns() {
106        return columns;
107      }
108    
109      public void setColumns(String columns) {
110        this.columns = columns;
111      }
112    
113      public String getShowHeader() {
114        return showHeader;
115      }
116    
117      public void setShowHeader(String showHeader) {
118        this.showHeader = showHeader;
119      }
120    
121      public String getPagingLength() {
122        return rows;
123      }
124    
125      public void setPagingLength(String pagingLength) {
126        Deprecation.LOG.error("The attribute 'pagingLength' of 'UISheet' is deprecated, please use 'rows' instead. "
127            + "Refer the documentation for further information.");
128        this.rows = pagingLength;
129      }
130    
131      public void setRows(String pagingLength) {
132        this.rows = pagingLength;
133      }
134    
135      public String getPagingStart() {
136        return first;
137      }
138    
139      public String getStateChangeListener() {
140        return stateChangeListener;
141      }
142    
143      public void setPagingStart(String pagingStart) {
144        Deprecation.LOG.error("The attribute 'pagingStart' of 'UISheet' is deprecated, please use 'first' instead. "
145            + "Refer the documentation for further information.");
146        this.first = pagingStart;
147      }
148    
149      public void setFirst(String pagingStart) {
150        this.first = pagingStart;
151      }
152    
153      public String getValue() {
154        return value;
155      }
156    
157      public void setValue(String value) {
158        this.value = value;
159      }
160    
161      public String getVar() {
162        return var;
163      }
164    
165      public void setVar(String var) {
166        this.var = var;
167      }
168    
169      public void setDirectLinkCount(String directLinkCount) {
170        this.directLinkCount = directLinkCount;
171      }
172    
173      public void setForceVerticalScrollbar(String forceVerticalScrollbar) {
174        this.forceVerticalScrollbar = forceVerticalScrollbar;
175      }
176    
177      public void setShowDirectLinks(String showDirectLinks) {
178        this.showDirectLinks = showDirectLinks;
179      }
180    
181      public void setShowPageRange(String showPageRange) {
182        this.showPageRange = showPageRange;
183      }
184    
185      public void setShowRowRange(String showRowRange) {
186        this.showRowRange = showRowRange;
187      }
188    
189      public void setState(String state) {
190        this.state = state;
191      }
192    
193      public void setStateChangeListener(String stateChangeListener) {
194        this.stateChangeListener = stateChangeListener;
195      }
196    
197      public void setSortActionListener(String sortActionListener) {
198        this.sortActionListener = sortActionListener;
199      }
200    
201      public void setSelectable(String selectable) {
202        this.selectable = selectable;
203      }
204    }
205