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: * <p>Use the <code>ui:icon</code> tag to display a theme-specific image in the
051: * rendered HTML page. The icon attribute used in the <code>ui:icon</code> tag is
052: * a key value that is mapped to a URL in theme properties file. The key is used
053: * to look up the appropriate image source and related attributes from the current
054: * theme. By specifying a key, you avoid the need to specify predefined constants
055: * such as height and width. The image can also be seamlessly changed when a
056: * different theme is selected.</p>
057: * <p>Note: currently the list of icons that you can use is not publicly
058: * supported, but the icon names are specified in the
059: * <code>/com/sun/rave/web/ui/suntheme/SunTheme.properties</code> file. The names are
060: * listed as resource keys of the format <code>image.ICON_NAME</code>. Use only
061: * the part of the key that follows image. For example, if the key is
062: * <code>image.ALARM_CRITICAL_SMALL</code>, you should specify
063: * <code>ALARM_CRITICAL_SMALL</code> as the value of the icon attribute of the
064: * <code>ui:icon</code> tag. A list of supported icon values will be published in
065: * the near future.<br>
066: * <h3>HTML Elements and Layout</h3>
067: * The rendered HTML page displays an XHTML compliant <code><img></code>
068: * element with any applicable element attributes. Some attributes are determined
069: * by the theme, and others can be specified through the <code>ui:icon</code> tag
070: * attributes.<br>
071: * <h3>Theme Identifiers</h3>
072: * TBD.
073: * <h3>Client Side Javascript Functions</h3>
074: * None.
075: * <br>
076: * <h3>Examples</h3>
077: * <h4>Example 1: Create an icon</h4>
078: * <code><ui:icon icon="ALARM_CRITICAL_SMALL" />
079: * <br>
080: * <br>
081: * </code>This will generate the following img element: <br>
082: * <br>
083: * <code><img src="com_sun_rave_web_ui/images/alarms/alarm_critical_small.gif" height="10" width="10" />
084: * </code><br>
085: * <p>Auto-generated component class.
086: * Do <strong>NOT</strong> modify; all changes
087: * <strong>will</strong> be lost!</p>
088: */
089:
090: public abstract class IconBase extends
091: com.sun.rave.web.ui.component.ImageComponent {
092:
093: /**
094: * <p>Construct a new <code>IconBase</code>.</p>
095: */
096: public IconBase() {
097: super ();
098: setRendererType("com.sun.rave.web.ui.Icon");
099: }
100:
101: /**
102: * <p>Return the identifier of the component family to which this
103: * component belongs. This identifier, in conjunction with the value
104: * of the <code>rendererType</code> property, may be used to select
105: * the appropriate {@link Renderer} for this component instance.</p>
106: */
107: public String getFamily() {
108: return "com.sun.rave.web.ui.Icon";
109: }
110:
111: /**
112: * <p>Restore the state of this component.</p>
113: */
114: public void restoreState(FacesContext _context, Object _state) {
115: Object _values[] = (Object[]) _state;
116: super .restoreState(_context, _values[0]);
117: }
118:
119: /**
120: * <p>Save the state of this component.</p>
121: */
122: public Object saveState(FacesContext _context) {
123: Object _values[] = new Object[1];
124: _values[0] = super.saveState(_context);
125: return _values;
126: }
127:
128: }
|