jsf自定义toolbar组件

原创 2007年09月11日 21:29:00
package com.cfcc.jaf.webx.component.toolbar;

import javax.faces.application.Application;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.el.ValueBinding;
import javax.faces.webapp.UIComponentTag;

/** *//**
 * 
@author qinjinwei
 * 
 
*/

public class UIToolBarTag extends UIComponentTag ...{

       
private String size;
       
private String value;

       
public String getComponentType() ...{
              
return "com.cfcc.jaf.webx.component.toolbar.UIToolBar";
       }


       
public String getRendererType() ...{
              
return null;
       }


       
public void setProperties(UIComponent component) ...{
              
super.setProperties(component);
              setStringProperty(component, 
"value", value);
              setStringProperty(component, 
"size", size);
       }


       
private void setStringProperty(UIComponent component, String attrName,
                     String attrValue) 
...{
              
if (attrValue == null)
                     
return;
              
if (isValueReference(attrValue)) ...{
                     FacesContext context 
= FacesContext.getCurrentInstance();
                     Application application 
= context.getApplication();
                     ValueBinding binding 
= application.createValueBinding(attrValue);
                     component.setValueBinding(attrName, binding);
              }
 else ...{
                     component.getAttributes().put(attrName, attrValue);
              }

       }


       
public void release() ...{
              
super.release();
              value 
= null;
              size  
= null;
       }


       
public String getValue() ...{
              
return value;
       }


       
public void setValue(String value) ...{
              
this.value = value;
       }


       
public String getSize() ...{
              
return size;
       }


       
public void setSize(String size) ...{
              
this.size = size;
       }


}


package com.cfcc.jaf.webx.component.toolbar;

import java.io.IOException;
import java.util.List;
import java.util.Map;

import javax.faces.component.UICommand;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
import javax.faces.el.MethodBinding;
import javax.faces.event.ActionEvent;

import org.apache.myfaces.custom.navmenu.NavigationMenuUtils;
import org.apache.myfaces.renderkit.html.util.AddResource;
import org.apache.myfaces.renderkit.html.util.AddResourceFactory;
import org.apache.myfaces.shared_tomahawk.el.SimpleActionMethodBinding;
import org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils;
import org.apache.myfaces.shared_tomahawk.renderkit.html.util.FormInfo;

import com.cfcc.jaf.webx.faces.ToolBarItem;

/** *//**
 * 
@author qinjinwei
 * 
 
*/

public class UIToolBar extends UICommand ...{

       
public static final String COMPONENT_TYPE = "com.cfcc.jaf.webx.component.toolbar.UIToolBar";

       
public static final String COMPONENT_FAMILY = "javax.faces.Command";

       
private static final String ToolBar_Index = "toolbar_index";

       
private static String size = null;

       
private static int width = 0;

       
private static int height = 0;

       
public UIToolBar() ...{
              setRendererType(
null);
       }


       
public String getFamily() ...{
              
return COMPONENT_FAMILY;
       }


       
public void encodeBegin(FacesContext context) throws IOException ...{

              AddResource addResource 
= AddResourceFactory.getInstance(context);
              addResource.addJavaScriptAtPosition(context, AddResource.HEADER_BEGIN,
                            
"js/toolbar.js");

              ResponseWriter writer 
= context.getResponseWriter();
              String clientId 
= getClientId(context);

              FormInfo parentFormInfo 
= RendererUtils.findNestingForm(this, context);
              String name 
= parentFormInfo.getFormName();

              Object obj 
= getValue();
              List list 
= (List) obj;

              size 
= findSize();
              
if (size != null && size.indexOf(","> -1...{
                     String[] ss 
= size.split(",");
                     width 
= Integer.parseInt(ss[0]);
                     height 
= Integer.parseInt(ss[1]);

              }


              
if (list != null && list.size() > 0...{
                     writer.write(
"<table id="" + clientId + ""><tr> ");
                     
for (int i = 0; i < list.size(); i++...{

                            ToolBarItem element 
= (ToolBarItem) list.get(i);

                            writeItem(writer, element, name, i);

                     }

                     writer.write(
" </tr></table>");
              }


              writer.write(
"<input type="hidden" name="");
              writer.write(ToolBar_Index);
              writer.write(
"" />");

       }


       
public String findSize() ...{
              
if (size != null)
                     
return size;

              size 
= (String) this.getAttributes().get("size");
              
return size;
       }


       
private void writeItem(ResponseWriter writer, ToolBarItem element,
                     String clientId, 
int index) throws IOException ...{

              writer.write(
"<td ");
              writer.write(
"onmouseup="jump(" + "'" + clientId + "'," + index
                            
+ ");" ");

              writer.write(
"onmouseover="mover(this);" ");

              writer.write(
"onmouseout="mout(this);" ");

              writer.write(
" class="toolbarout" ");
              
              writer.write(
" >");

              writer.startElement(
"image"this);
              writer.writeAttribute(
"id", clientId + "_" + index, null);
              writer.writeAttribute(
"src", element.getImage(), null);
              writer.writeAttribute(
"alt", element.getLabel(), null);

              
if (width > 0...{
                     writer.writeAttribute(
"width", width + ""null);
              }


              
if (height > 0...{
                     writer.writeAttribute(
"height", height + ""null);
              }


              writer.endElement(
"image");
              writer.write(
"</td>");
              writer.write(
" ");

       }


       
public void decode(FacesContext context) ...{

              Map parameter 
= context.getExternalContext().getRequestParameterMap();
              String si 
= (String) parameter.get(ToolBar_Index);
              
if (si == null || si.equals(""))
                     
return;

              
int i = Integer.parseInt(si);

              Object obj 
= getValue();
              List list 
= (List) obj;
              ToolBarItem element 
= (ToolBarItem) list.get(i);

              
// ********************

              String action 
= element.getAction();

              MethodBinding mb;
              
if (NavigationMenuUtils.isValueReference(action)) ...{
                     mb 
= context.getApplication().createMethodBinding(action, null);
              }
 else ...{
                     mb 
= new SimpleActionMethodBinding(action);
              }

              
this.setAction(mb);

              
this.queueEvent(new ActionEvent(this));

              
// ************************

       }


       
public Object saveState(FacesContext context) ...{
              Object values[] 
= new Object[1];
              values[
0= super.saveState(context);
              
return values;
       }


       
public void restoreState(FacesContext context, Object state) ...{
              Object values[] 
= (Object[]) state;
              
super.restoreState(context, values[0]);

       }


}


 

function jump(form,index)
{
                 var dummyForm = document.forms[form];
        dummyForm.elements['toolbar_index'].value = index;
        dummyForm.submit();

}

function mover(obj)
{
     obj.className = "toolbarover";
}

function mout(obj)
{
     obj.className = "toolbarout";
}

 

.toolbarover0 {
     FILTER: alpha(opacity =     100, style =     3, finishopacity =     0)
           ;
     background-color: BLACK;
     cursor: hand;
}

.toolbarout {
     border: 1px solid white;
     FILTER: alpha(opacity =     100, style =     3, finishopacity =     0) gray
           ;
     background-color: WHITE;
     cursor: hand;
}

.toolbarover2 {
     FILTER: flipv;
     background-color: #EFEBDE;
     cursor: hand;
}

.toolbarover {
     border: 1px dashed black;
     background-color: #BLACK;
     cursor: hand;
}

.toolbarout1 {
     border: 1px solid white;
     FILTER: alpha(opacity =     100, style =     3, finishopacity =     0)
           ;
     background-color: WHITE;
     cursor: hand;
}

 

 <tag>
           <name>toolbar</name>
           <tag-class>com.cfcc.jaf.webx.component.toolbar.UIToolBarTag</tag-class>
           <body-content>empty</body-content>
           <attribute>
                 <name>size</name>
           </attribute>
           <attribute>
                 <name>value</name>
                 <required>true</required>
           </attribute>
     </tag>

 

<!-- added by qinjinwei,toolbar -->
     <component>
           <component-type>
                 com.cfcc.jaf.webx.component.toolbar.UIToolBar
           </component-type>
           <component-class>
                 com.cfcc.jaf.webx.component.toolbar.UIToolBar
           </component-class>
     </component>

相关文章推荐

JSF2.0实战 - 4、自定义组件

  • 2014年05月03日 14:59
  • 8KB
  • 下载

JSF中为dataTable组件指定自定义行样式

HtmlDataTable组件属于UIData家族的HTML数据列表实现,组件中提供了rowStyleClass等方法来控制行的显示,,如果你在rowStyleClass中加入两个样式类,并使用逗号分...
  • hurryin
  • hurryin
  • 2011年08月16日 20:43
  • 966

JSF自定义文件上传组件

  • 2008年09月18日 22:02
  • 1.84MB
  • 下载

《JSF自定义组件》

  • 2007年12月07日 09:41
  • 202KB
  • 下载

JSF自定义组件中ResponseWriter.writeAttribute方法说明

最近学习JSF遇到很多奇怪的问题,就比如说ResponseWriter类里面的writeAttribute方法,Java EE 6 官方文档都没有具体的说明。API对这个方法的描述是: public...

RichFaces JSF自定义分页组件(简洁版)

使用原有的组件分页,所有的数据都要从数据库取出来,当大量数据的时候比较消耗资源,下边例子实现了从数据库的分页,采用RichFaces4实现,改到其他的版本只要修改显示的部分即可。 Abstr...
  • eilent
  • eilent
  • 2012年03月08日 22:52
  • 1436

JSF2自定义组件编程系列 第七部分

JSF Customized Composite Component,校验,日志以及debug信息

JSF2自定义组件编程系列 第八部分

JSF 自定义复合组件 国际化 Ajax

JSF2.0实战 - 4、自定义组件

项目环境: 1、JSF2.1+ 2、JDK1.6+ 3、Tomcat6.0+ 4、Eclipse3.6+ 我用的Indigo
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:jsf自定义toolbar组件
举报原因:
原因补充:

(最多只允许输入30个字)