001: /*
002: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
003: *
004: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
005: *
006: * The contents of this file are subject to the terms of either the GNU
007: * General Public License Version 2 only ("GPL") or the Common
008: * Development and Distribution License("CDDL") (collectively, the
009: * "License"). You may not use this file except in compliance with the
010: * License. You can obtain a copy of the License at
011: * http://www.netbeans.org/cddl-gplv2.html
012: * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
013: * specific language governing permissions and limitations under the
014: * License. When distributing the software, include this License Header
015: * Notice in each file and include the License file at
016: * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
017: * particular file as subject to the "Classpath" exception as provided
018: * by Sun in the GPL Version 2 section of the License file that
019: * accompanied this code. If applicable, add the following below the
020: * License Header, with the fields enclosed by brackets [] replaced by
021: * your own identifying information:
022: * "Portions Copyrighted [year] [name of copyright owner]"
023: *
024: * Contributor(s):
025: *
026: * The Original Software is NetBeans. The Initial Developer of the Original
027: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
028: * Microsystems, Inc. All Rights Reserved.
029: *
030: * If you wish your version of this file to be governed by only the CDDL
031: * or only the GPL Version 2, indicate your decision by adding
032: * "[Contributor] elects to include this software in this distribution
033: * under the [CDDL or GPL Version 2] license." If you do not indicate a
034: * single choice of license, a recipient has the option to distribute
035: * your version of this file under either the CDDL, the GPL Version 2 or
036: * to extend the choice of license to its licensees as provided above.
037: * However, if you add GPL Version 2 code and therefore, elected the GPL
038: * Version 2 license, then the option applies only if the new code is
039: * made subject to such option by the copyright holder.
040: */
041: package com.sun.rave.web.ui.component;
042:
043: import java.io.IOException;
044: import javax.faces.component.UIComponent;
045: import javax.faces.context.FacesContext;
046: import javax.faces.el.MethodBinding;
047: import javax.faces.el.ValueBinding;
048:
049: /**
050: * Use the <code>ui:skipLink</code>
051: * tag to render a single-pixel transparent image (not visible within the browser page) which is hyperlinked to an anchor beyond the section to skip. This tag is used to achieve 508-compliance (paragraph o). It is designed to be used by components such as masthead, tabs, calendar and other components with repetitive links.
052: * <br>
053: * <h3>HTML Elements and Layout</h3>
054: * <p>The rendered HTML page displays an image hyperlink at the top, followed by an anchor at the end of the region to skip.
055: * </p>
056: * <h3>Theme Identifiers</h3>
057: * None.
058: * <h3>Client-side JavaScript functions</h3>
059: * None.
060: * <h3>Examples</h3>
061: * <b>Example 1: An example showing how to skip over the masthead:</b><br>
062: * <code>
063: * <ui:skipHyperlink id="skip1234" description="skip over the masthead" >
064: * <ui:masthead id=masthead1" productImageURL="../images/webconsole.png"
065: * productImageDescription="Java Web Console"
066: * userInfo="test_user" serverInfo="test_server" />
067: * </ui: skipHyperlink>
068: * </code>
069: * <p>Auto-generated component class.
070: * Do <strong>NOT</strong> modify; all changes
071: * <strong>will</strong> be lost!</p>
072: */
073:
074: public abstract class SkipHyperlinkBase extends
075: javax.faces.component.UICommand {
076:
077: /**
078: * <p>Construct a new <code>SkipHyperlinkBase</code>.</p>
079: */
080: public SkipHyperlinkBase() {
081: super ();
082: setRendererType("com.sun.rave.web.ui.SkipHyperlink");
083: }
084:
085: /**
086: * <p>Return the identifier of the component family to which this
087: * component belongs. This identifier, in conjunction with the value
088: * of the <code>rendererType</code> property, may be used to select
089: * the appropriate {@link Renderer} for this component instance.</p>
090: */
091: public String getFamily() {
092: return "com.sun.rave.web.ui.SkipHyperlink";
093: }
094:
095: // description
096: private String description = null;
097:
098: /**
099: * <p>Textual description of the purpose of this skip hyperlink, including a description of the section that is being skipped.</p>
100: */
101: public String getDescription() {
102: if (this .description != null) {
103: return this .description;
104: }
105: ValueBinding _vb = getValueBinding("description");
106: if (_vb != null) {
107: return (String) _vb.getValue(getFacesContext());
108: }
109: return null;
110: }
111:
112: /**
113: * <p>Textual description of the purpose of this skip hyperlink, including a description of the section that is being skipped.</p>
114: * @see #getDescription()
115: */
116: public void setDescription(String description) {
117: this .description = description;
118: }
119:
120: // style
121: private String style = null;
122:
123: /**
124: * <p>CSS style(s) to be applied when this component is rendered.</p>
125: */
126: public String getStyle() {
127: if (this .style != null) {
128: return this .style;
129: }
130: ValueBinding _vb = getValueBinding("style");
131: if (_vb != null) {
132: return (String) _vb.getValue(getFacesContext());
133: }
134: return null;
135: }
136:
137: /**
138: * <p>CSS style(s) to be applied when this component is rendered.</p>
139: * @see #getStyle()
140: */
141: public void setStyle(String style) {
142: this .style = style;
143: }
144:
145: // styleClass
146: private String styleClass = null;
147:
148: /**
149: * <p>CSS style class(es) to be applied when this component is rendered.</p>
150: */
151: public String getStyleClass() {
152: if (this .styleClass != null) {
153: return this .styleClass;
154: }
155: ValueBinding _vb = getValueBinding("styleClass");
156: if (_vb != null) {
157: return (String) _vb.getValue(getFacesContext());
158: }
159: return null;
160: }
161:
162: /**
163: * <p>CSS style class(es) to be applied when this component is rendered.</p>
164: * @see #getStyleClass()
165: */
166: public void setStyleClass(String styleClass) {
167: this .styleClass = styleClass;
168: }
169:
170: // tabIndex
171: private int tabIndex = Integer.MIN_VALUE;
172: private boolean tabIndex_set = false;
173:
174: /**
175: * <p>The position of this component in the tabbing order sequence</p>
176: */
177: public int getTabIndex() {
178: if (this .tabIndex_set) {
179: return this .tabIndex;
180: }
181: ValueBinding _vb = getValueBinding("tabIndex");
182: if (_vb != null) {
183: Object _result = _vb.getValue(getFacesContext());
184: if (_result == null) {
185: return Integer.MIN_VALUE;
186: } else {
187: return ((Integer) _result).intValue();
188: }
189: }
190: return Integer.MIN_VALUE;
191: }
192:
193: /**
194: * <p>The position of this component in the tabbing order sequence</p>
195: * @see #getTabIndex()
196: */
197: public void setTabIndex(int tabIndex) {
198: this .tabIndex = tabIndex;
199: this .tabIndex_set = true;
200: }
201:
202: /**
203: * <p>Restore the state of this component.</p>
204: */
205: public void restoreState(FacesContext _context, Object _state) {
206: Object _values[] = (Object[]) _state;
207: super .restoreState(_context, _values[0]);
208: this .description = (String) _values[1];
209: this .style = (String) _values[2];
210: this .styleClass = (String) _values[3];
211: this .tabIndex = ((Integer) _values[4]).intValue();
212: this .tabIndex_set = ((Boolean) _values[5]).booleanValue();
213: }
214:
215: /**
216: * <p>Save the state of this component.</p>
217: */
218: public Object saveState(FacesContext _context) {
219: Object _values[] = new Object[6];
220: _values[0] = super .saveState(_context);
221: _values[1] = this .description;
222: _values[2] = this .style;
223: _values[3] = this .styleClass;
224: _values[4] = new Integer(this .tabIndex);
225: _values[5] = this.tabIndex_set ? Boolean.TRUE : Boolean.FALSE;
226: return _values;
227: }
228:
229: }
|