⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tabbedpane2renderer.java

📁 It is a java server faces tab component.
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/*
 * Fixed Bug: A user clicked sub-menu item, but GUI appeared wrong page.
 */
package com.cim.jsf.component.tabbedPane2;

import java.io.IOException;
import java.text.MessageFormat;
import java.util.Iterator;
import java.util.List;
import java.util.ResourceBundle;

import javax.faces.component.UIComponent;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
import javax.faces.render.Renderer;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

import com.cim.jsf.model.TabNode;
import com.cim.jsf.servlet.Resource;
import com.cim.jsf.util.Messages;
import com.cim.jsf.util.RendererUtil;

public class TabbedPane2Renderer
		extends Renderer {
	public final static String TAIL_CURRENT_TAB = "_currentTab";
	private final static String TAIL_JS_OBJECT = "_obj";
	private final static String TAIL_ID_FORM = "_formID";
	private final static String TAIL_ID_ITEM = "_itemID";
	private final static String TAIL_ID_ARROW = "_arrowID";
	private final static String TAIL_ID_ITEMS = "_itemsID";
	final static private String PATHFILE_TAB_LEFT = "images/tabl.gif";
	final static private String PATHFILE_TAB_LEFT_CURRENT = "images/tabl_cur.gif";
	final static private String PATHFILE_TAB_RIGHT = "images/tabr.gif";
	final static private String PATHFILE_TAB_RIGHT_CURRENT = "images/tabr_cur.gif";
	final static private String PATHFILE_TAB_ARROW_DN = "images/arrowdn.gif";
	final static private String PATHFILE_CSS = "css/tabbedPane.css";
	final static private String PATHFILE_JS = "js/tabbedPane.js";

	/**
	 * redersChildren
	 *
	 * @return boolean
	 */
	public boolean getRendersChildren() {
		return true;
	}

	public void encodeBegin( FacesContext context, UIComponent component ) throws
			IOException {
		ResponseWriter writer = context.getResponseWriter();

		// encode header
		encodeHeader( context );
		//
		writer.write("\n");
		writer.startElement( "table", component );
		writer.writeAttribute( "width", "100%", "width" );
		writer.writeAttribute( "cellpadding", "0", "cellpadding" );
		writer.writeAttribute( "cellspacing", "1", "cellspacing" );
		writer.writeAttribute( "border", "0", "border" );
	}

	/**
	 * encodeChildren
	 *
	 * @param context FacesContext
	 * @param component UIComponent
	 */
	public void encodeChildren( FacesContext context, UIComponent component ) throws
			IOException {
		UITabbedPane2 uiTabbedPane2 = ( UITabbedPane2 )component;
		TabNode node = ( TabNode )uiTabbedPane2.getValue();
		//
		ResponseWriter writer = context.getResponseWriter();
		writer.write("\n");
		writer.startElement( "tr", component );
		writer.write("\n");
		writer.startElement( "td", component );

		writer.write("\n");
		writer.startElement( "table", component );
		writer.writeAttribute( "width", "100%", "width" );
		writer.writeAttribute( "cellpadding", "0", "cellpadding" );
		writer.writeAttribute( "cellspacing", "0", "cellspacing" );
		writer.writeAttribute( "border", "0", "border" );
		writer.write("\n");
		writer.startElement( "tr", component );
		//
		Iterator itNode = node.getChildren().iterator();
		while ( itNode.hasNext() ) {
			TabNode tab = ( TabNode )itNode.next();
			encodeTab( context, writer, tab, component );
		}
		//
		writer.write("\n");
		writer.startElement( "td", component );
		writer.writeAttribute( "width", "95%", "width" );
		writer.writeAttribute( "align", "right", "align" );
		writer.writeAttribute( "class", "tabnone", "class" );
		writer.write( " " );
		writer.endElement( "td" );
		writer.write( "\n" ); // to make generated HTML easier to read
		//
		writer.endElement( "tr" );
		writer.endElement( "table" );
		writer.endElement( "td" );
		writer.endElement( "tr" );
	}

	public void encodeEnd( FacesContext context, UIComponent component ) throws
			IOException {
		ResponseWriter writer = context.getResponseWriter();
		//
		writer.write("\n");
		writer.startElement( "tr", component );
		writer.write("\n");
		writer.startElement( "td", component );
		//
		RendererUtil.renderChildren( context, component );
		//
		writer.write("\n");
		writer.endElement( "td" );
		writer.endElement( "tr" );
		// Close off the column, row, and table elements
		writer.write("\n");
		writer.endElement( "table" );
	}

	private void encodeHeader( FacesContext context )
			throws IOException {
		ResponseWriter writer = context.getResponseWriter();
		String cssHeader = Resource.getHeader( context, this.getClass(),
													  PATHFILE_CSS );
		String jsHeader = Resource.getHeader( context, this.getClass(),
													  PATHFILE_JS );
		writer.write("\n");
		writer.write( cssHeader );
		writer.write("\n");
		writer.write( jsHeader );
		writer.write("\n");
	}

	/**
	 * encodeTab
	 *
	 * @param context FacesContext
	 * @param writer ResponseWriter
	 * @param tabItem TabItem
	 * @param component UIComponent
	 */
	public void encodeTab( FacesContext context, ResponseWriter writer,
						   TabNode tab, UIComponent component ) throws
			IOException {
		UITabbedPane2 uiTabbedPane2 = ( UITabbedPane2 )component;
		String name = tab.getName();
		boolean hasChildren = tab.hasChildren();
		boolean isDisabled = tab.isDisabled();
		//
		String currentTabName = uiTabbedPane2.getCurrentTabName();
		if ( currentTabName == null ) {
			if ( isDisabled ) {
				uiTabbedPane2.setCurrentTab( null );
				tab.setCurrentTab( false );
			} else {
				uiTabbedPane2.setCurrentTabName( name );
				uiTabbedPane2.setCurrentTab( tab );
				tab.setCurrentTab( true );
			}
		} else {
			TabNode currentTab = findCurrentTab( currentTabName, tab );
			if ( currentTab != null ) {
				uiTabbedPane2.setCurrentTab( currentTab );
				tab.setCurrentTab( true );
			} else {
				tab.setCurrentTab( false );
			}
		}
		boolean isCurrentTab = tab.isCurrentTab();
		//
		final String imgTabLeft = Resource.getResourceString( context,
				this.getClass(), PATHFILE_TAB_LEFT );
		final String imgTabLeftCurrent = Resource.getResourceString( context,
				this.getClass(), PATHFILE_TAB_LEFT_CURRENT );
		final String imgTabRight = Resource.getResourceString( context,
				this.getClass(), PATHFILE_TAB_RIGHT );
		final String imgTabRightCurrent = Resource.getResourceString( context,
				this.getClass(), PATHFILE_TAB_RIGHT_CURRENT );
		//
		writer.write("\n");
		writer.startElement( "td", component );
		writer.write("\n");
		writer.startElement( "img", component );
		writer.writeAttribute( "src", ( isCurrentTab ? imgTabLeftCurrent : imgTabLeft ), null );
		writer.writeAttribute( "alt", "", null );
		writer.endElement( "img" );
		writer.endElement( "td" );
		//
		writer.write("\n");
		writer.startElement( "td", component );
		writer.writeAttribute( "class", ( isCurrentTab ? "curBtn" : "tabBtn" ), null );
		if ( hasChildren ) {
			encodeTabSelect( context, component, tab );
		} else {
			encodeTabButton( context, component, tab );
		}
		writer.endElement( "td" );
		//
		writer.write("\n");
		writer.startElement( "td", component );
		writer.write("\n");
		writer.startElement( "img", component );
		writer.writeAttribute( "src", ( isCurrentTab ? imgTabRightCurrent : imgTabRight ), null );
		writer.writeAttribute( "alt", "", null );
		writer.endElement( "img" );
		writer.endElement( "td" );
	}

	private TabNode findCurrentTab( String currentTabName, TabNode tab ) {
		String name = tab.getName();
		if ( currentTabName.equals( name ) ) {
			return tab;
		}
		Iterator itChildren = tab.getChildren().iterator();
		while ( itChildren.hasNext() ) {

⌨️ 快捷键说明

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