htmlbasicrenderkit.java

来自「RESIN 3.2 最新源码」· Java 代码 · 共 236 行

JAVA
236
字号
/* * Copyright (c) 1998-2008 Caucho Technology -- all rights reserved * * This file is part of Resin(R) Open Source * * Each copy or derived work must preserve the copyright notice and this * notice unmodified. * * Resin Open Source is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 * as published by the Free Software Foundation. * * Resin Open Source is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty * of NON-INFRINGEMENT.  See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License * along with Resin Open Source; if not, write to the * *   Free Software Foundation, Inc. *   59 Temple Place, Suite 330 *   Boston, MA 02111-1307  USA * * @author Scott Ferguson */package com.caucho.jsf.html;import java.io.*;import java.util.*;import javax.faces.context.*;import javax.faces.render.*;import com.caucho.util.*;import com.caucho.vfs.*;public class HtmlBasicRenderKit extends RenderKit{  private static final L10N L = new L10N(HtmlBasicRenderKit.class);    private ResponseStateManager _responseStateManager    = new ResponseStateManagerImpl();    private HashMap<Key,Renderer> _rendererMap    = new HashMap<Key,Renderer>();  private Key _key = new Key();  public HtmlBasicRenderKit()  {    addRenderer("javax.faces.Command", "javax.faces.Button",		HtmlCommandButtonRenderer.RENDERER);        addRenderer("javax.faces.Command", "javax.faces.Link",		HtmlCommandLinkRenderer.RENDERER);        addRenderer("javax.faces.Data", "javax.faces.Table",		HtmlDataTableRenderer.RENDERER);        addRenderer("javax.faces.Form", "javax.faces.Form",		HtmlFormRenderer.RENDERER);        addRenderer("javax.faces.Graphic", "javax.faces.Image",		HtmlGraphicImageRenderer.RENDERER);        addRenderer("javax.faces.Input", "javax.faces.Secret",		HtmlInputSecretRenderer.RENDERER);        addRenderer("javax.faces.Input", "javax.faces.Hidden",		HtmlInputHiddenRenderer.RENDERER);        addRenderer("javax.faces.Input", "javax.faces.Text",		HtmlInputTextRenderer.RENDERER);        addRenderer("javax.faces.Input", "javax.faces.Textarea",		HtmlInputTextareaRenderer.RENDERER);        addRenderer("javax.faces.Message", "javax.faces.Message",		HtmlMessageRenderer.RENDERER);        addRenderer("javax.faces.Messages", "javax.faces.Messages",		HtmlMessagesRenderer.RENDERER);        addRenderer("javax.faces.Output", "javax.faces.Format",		HtmlOutputFormatRenderer.RENDERER);        addRenderer("javax.faces.Output", "javax.faces.Label",		HtmlOutputLabelRenderer.RENDERER);        addRenderer("javax.faces.Output", "javax.faces.Link",		HtmlOutputLinkRenderer.RENDERER);        addRenderer("javax.faces.Output", "javax.faces.Text",		HtmlOutputTextRenderer.RENDERER);    addRenderer("javax.faces.Output", "javax.faces.Format",		HtmlOutputFormatRenderer.RENDERER);    addRenderer("javax.faces.Panel", "javax.faces.Grid",		HtmlPanelGridRenderer.RENDERER);        addRenderer("javax.faces.Panel", "javax.faces.Group",		HtmlPanelGroupRenderer.RENDERER);        addRenderer("javax.faces.SelectBoolean", "javax.faces.Checkbox",		HtmlBooleanCheckboxRenderer.RENDERER);        addRenderer("javax.faces.SelectMany", "javax.faces.Checkbox",		HtmlSelectManyCheckboxRenderer.RENDERER);        addRenderer("javax.faces.SelectMany", "javax.faces.Listbox",		HtmlSelectManyListboxRenderer.RENDERER);        addRenderer("javax.faces.SelectMany", "javax.faces.Menu",		HtmlSelectManyMenuRenderer.RENDERER);        addRenderer("javax.faces.SelectOne", "javax.faces.Listbox",		HtmlSelectOneListboxRenderer.RENDERER);        addRenderer("javax.faces.SelectOne", "javax.faces.Menu",		HtmlSelectOneMenuRenderer.RENDERER);        addRenderer("javax.faces.SelectOne", "javax.faces.Radio",		HtmlSelectOneRadioRenderer.RENDERER);  }    public void addRenderer(String family,			  String rendererType,			  Renderer renderer)  {    _rendererMap.put(new Key(family, rendererType), renderer);  }    public Renderer getRenderer(String family,			      String rendererType)  {    if (family == null || rendererType == null)      return null;    _key.init(family, rendererType);        Renderer renderer = _rendererMap.get(_key);        return renderer;  }  public ResponseStateManager getResponseStateManager()  {    return _responseStateManager;  }  public ResponseWriter createResponseWriter(Writer writer,					     String contentTypeList,					     String characterEncoding)  {    // jsf/2003    /*    if (contentTypeList != null	&& contentTypeList.indexOf("text/html") < 0	&& contentTypeList.indexOf("application/xhtml+xml") < 0	&& contentTypeList.indexOf("application/xml") < 0	&& contentTypeList.indexOf("text/xml") < 0) {      throw new IllegalArgumentException(L.l("'{0}' does not have a matching ResponseWriter.",					     contentTypeList));    }    */    if (characterEncoding != null) {	if (Encoding.getWriteEncoding(characterEncoding) == null)	  throw new IllegalArgumentException(L.l("'{0}' is an unknown character encoding for ResponseWriter.",						 characterEncoding));    }        return new HtmlResponseWriter(writer, contentTypeList, characterEncoding);  }  public ResponseStream createResponseStream(OutputStream out)  {    return new HtmlResponseStream(out);  }  public String toString()  {    return "HtmlBasicRenderKit[]";  }  static final class Key {    private String _family;    private String _type;    Key()    {    }          Key(String family, String type)    {      _family = family;      _type = type;    }    public void init(String family, String type)    {      _family = family;      _type = type;    }    @Override    public int hashCode()    {      if (_type != null)	return _family.hashCode() * 65521 + _type.hashCode();      else	return _family.hashCode();    }    public boolean equals(Object o)    {      Key key = (Key) o;      if (_type != null)	return _family.equals(key._family) && _type.equals(key._type);      else	return _family.equals(key._family) && key._type != null;    }    public String toString()    {      return "Key[" + _family + ", " + _type + "]";    }  }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?