[richfaces-svn-commits] JBoss Rich Faces SVN: r6188 - in trunk/sandbox/ui/fileUpload/src/main: java/org/richfaces/org/jboss/seam/ui/component and 1 other directories.

richfaces-svn-commits at lists.jboss.org richfaces-svn-commits at lists.jboss.org
Wed Feb 20 05:28:49 EST 2008


Author: akushunin
Date: 2008-02-20 05:28:49 -0500 (Wed, 20 Feb 2008)
New Revision: 6188

Added:
   trunk/sandbox/ui/fileUpload/src/main/config/component/listener.ent
Modified:
   trunk/sandbox/ui/fileUpload/src/main/config/component/fileUpload.xml
   trunk/sandbox/ui/fileUpload/src/main/java/org/richfaces/org/jboss/seam/ui/component/UIFileUpload.java
   trunk/sandbox/ui/fileUpload/src/main/java/org/richfaces/org/jboss/seam/ui/renderkit/FileUploadRendererBase.java
Log:


Modified: trunk/sandbox/ui/fileUpload/src/main/config/component/fileUpload.xml
===================================================================
--- trunk/sandbox/ui/fileUpload/src/main/config/component/fileUpload.xml	2008-02-20 09:48:22 UTC (rev 6187)
+++ trunk/sandbox/ui/fileUpload/src/main/config/component/fileUpload.xml	2008-02-20 10:28:49 UTC (rev 6188)
@@ -1,5 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE components PUBLIC "-//AJAX4JSF//CDK Generator config/EN"  "https://ajax4jsf.dev.java.net/nonav/dtds/component-config.dtd" >
+<!DOCTYPE components PUBLIC "-//AJAX4JSF//CDK Generator config/EN"  "https://ajax4jsf.dev.java.net/nonav/dtds/component-config.dtd" 
+[
+<!ENTITY listeners SYSTEM "listener.ent">
+]
+>
 <components>
 	<component>
 		<name>org.richfaces.component.FileUpload</name>
@@ -136,6 +140,15 @@
 			<name>cleanStyleDisabled</name>
 			<classname>java.lang.String</classname>
 			<description>CSS style for clean button disabled</description>
+		</property>
+		<property>
+			<name>fileUploadListener</name>
+			<classname>javax.el.MethodExpression</classname>
+			<description>
+				MethodExpression representing an action listener method
+				that will be notified after file uploaded.
+			</description>
 		</property>
-	</component>
+	</component>
+	&listeners;
 </components>

Added: trunk/sandbox/ui/fileUpload/src/main/config/component/listener.ent
===================================================================
--- trunk/sandbox/ui/fileUpload/src/main/config/component/listener.ent	                        (rev 0)
+++ trunk/sandbox/ui/fileUpload/src/main/config/component/listener.ent	2008-02-20 10:28:49 UTC (rev 6188)
@@ -0,0 +1,17 @@
+<listener>
+		<name>fileUploadListener</name>
+		<listenerclass>
+			org.richfaces.event.FileUploadListener	
+		</listenerclass>
+		<componentclass>
+			org.richfaces.org.jboss.seam.ui.component.UIFileUpload		
+		</componentclass>
+		<eventclass>
+			org.richfaces.event.UploadEvent
+		</eventclass>
+		<taghandler generate="true">
+			<classname>
+				org.richfaces.taglib.FileUploadListenerTagHandler
+			</classname>
+		</taghandler>
+</listener>
\ No newline at end of file

Modified: trunk/sandbox/ui/fileUpload/src/main/java/org/richfaces/org/jboss/seam/ui/component/UIFileUpload.java
===================================================================
--- trunk/sandbox/ui/fileUpload/src/main/java/org/richfaces/org/jboss/seam/ui/component/UIFileUpload.java	2008-02-20 09:48:22 UTC (rev 6187)
+++ trunk/sandbox/ui/fileUpload/src/main/java/org/richfaces/org/jboss/seam/ui/component/UIFileUpload.java	2008-02-20 10:28:49 UTC (rev 6188)
@@ -3,119 +3,152 @@
 import java.io.InputStream;
 
 import javax.faces.component.UIInput;
+import javax.faces.context.FacesContext;
+import javax.faces.el.MethodBinding;
+import javax.faces.event.FacesEvent;
 
+import org.richfaces.event.FileUploadListener;
+import org.richfaces.event.UploadEvent;
+
 /**
  * JSF component class
  * 
  */
 public abstract class UIFileUpload extends UIInput {
-    
-    private String localContentType;
 
-    private String localFileName;
+	private String localContentType;
 
-    private Integer localFileSize;
-    
-    private InputStream localInputStream;
-    
-   
-    
-//    @Override
-//    public void processUpdates(FacesContext context) {
-//	ValueExpression dataBinding = getValueExpression("data");
-//	if (dataBinding != null) {
-//	    Class clazz = dataBinding.getType(context.getELContext());
-//	    if (clazz.isAssignableFrom(InputStream.class)) {
-//		dataBinding.setValue(context.getELContext(),
-//			getLocalInputStream());
-//	    } else if (clazz.isAssignableFrom(byte[].class)) {
-//		byte[] bytes = null;
-//		if (getLocalInputStream() != null) {
-//		    ByteArrayOutputStream bos = new ByteArrayOutputStream();
-//		    try {
-//			byte[] buffer = new byte[512];
-//			int read = getLocalInputStream().read(buffer);
-//			while (read != -1) {
-//			    bos.write(buffer, 0, read);
-//			    read = getLocalInputStream().read(buffer);
-//			}
-//			bytes = bos.toByteArray();
-//		    } catch (IOException e) {
-//			throw new RuntimeException(e);
-//		    }
-//		}
-//		dataBinding.setValue(context.getELContext(), bytes);
-//	    }
-//
-//	    if (getLocalContentType() != null) {
-//		ValueExpression valueExpression = getValueExpression("contentType");
-//		if (valueExpression != null) {
-//		    valueExpression.setValue(context.getELContext(),
-//			    getLocalContentType());
-//		}
-//	    }
-//
-//	    if (getLocalFileName() != null) {
-//		ValueExpression valueExpression = getValueExpression("fileName");
-//		if (valueExpression != null) {
-//		    valueExpression.setValue(context.getELContext(),
-//			    getLocalFileName());
-//		}
-//	    }
-//
-//	    if (getLocalFileSize() != null) {
-//		ValueExpression valueExpression = getValueExpression("fileSize");
-//		if (valueExpression != null) {
-//		    valueExpression.setValue(context.getELContext(),
-//			    getLocalFileSize());
-//		}
-//	    }
-//	}
-//    }
-    
-    public String getLocalContentType() {
-	return localContentType;
-    }
+	private String localFileName;
 
-    public void setLocalContentType(String localContentType) {
-	this.localContentType = localContentType;
-    }
+	private Integer localFileSize;
 
-    public String getLocalFileName() {
-	return localFileName;
-    }
+	private InputStream localInputStream;
 
-    public void setLocalFileName(String localFileName) {
-	this.localFileName = localFileName;
-    }
+	// @Override
+	// public void processUpdates(FacesContext context) {
+	// ValueExpression dataBinding = getValueExpression("data");
+	// if (dataBinding != null) {
+	// Class clazz = dataBinding.getType(context.getELContext());
+	// if (clazz.isAssignableFrom(InputStream.class)) {
+	// dataBinding.setValue(context.getELContext(),
+	// getLocalInputStream());
+	// } else if (clazz.isAssignableFrom(byte[].class)) {
+	// byte[] bytes = null;
+	// if (getLocalInputStream() != null) {
+	// ByteArrayOutputStream bos = new ByteArrayOutputStream();
+	// try {
+	// byte[] buffer = new byte[512];
+	// int read = getLocalInputStream().read(buffer);
+	// while (read != -1) {
+	// bos.write(buffer, 0, read);
+	// read = getLocalInputStream().read(buffer);
+	// }
+	// bytes = bos.toByteArray();
+	// } catch (IOException e) {
+	// throw new RuntimeException(e);
+	// }
+	// }
+	// dataBinding.setValue(context.getELContext(), bytes);
+	// }
+	//
+	// if (getLocalContentType() != null) {
+	// ValueExpression valueExpression = getValueExpression("contentType");
+	// if (valueExpression != null) {
+	// valueExpression.setValue(context.getELContext(),
+	// getLocalContentType());
+	// }
+	// }
+	//
+	// if (getLocalFileName() != null) {
+	// ValueExpression valueExpression = getValueExpression("fileName");
+	// if (valueExpression != null) {
+	// valueExpression.setValue(context.getELContext(),
+	// getLocalFileName());
+	// }
+	// }
+	//
+	// if (getLocalFileSize() != null) {
+	// ValueExpression valueExpression = getValueExpression("fileSize");
+	// if (valueExpression != null) {
+	// valueExpression.setValue(context.getELContext(),
+	// getLocalFileSize());
+	// }
+	// }
+	// }
+	// }
 
-    public Integer getLocalFileSize() {
-	return localFileSize;
-    }
+	public String getLocalContentType() {
+		return localContentType;
+	}
 
-    public void setLocalFileSize(Integer localFileSize) {
-	this.localFileSize = localFileSize;
-    }
+	public void setLocalContentType(String localContentType) {
+		this.localContentType = localContentType;
+	}
 
-    public InputStream getLocalInputStream() {
-	return localInputStream;
-    }
+	public String getLocalFileName() {
+		return localFileName;
+	}
 
-    public void setLocalInputStream(InputStream localInputStream) {
-	this.localInputStream = localInputStream;
-    }
+	public void setLocalFileName(String localFileName) {
+		this.localFileName = localFileName;
+	}
 
-    public abstract void setAccept(String accept);
+	public Integer getLocalFileSize() {
+		return localFileSize;
+	}
 
-    public abstract String getAccept();
+	public void setLocalFileSize(Integer localFileSize) {
+		this.localFileSize = localFileSize;
+	}
 
-    public abstract String getStyleClass();
+	public InputStream getLocalInputStream() {
+		return localInputStream;
+	}
 
-    public abstract String getStyle();
+	public void setLocalInputStream(InputStream localInputStream) {
+		this.localInputStream = localInputStream;
+	}
 
-    public abstract void setStyleClass(String styleClass);
+	public abstract void setAccept(String accept);
 
-    public abstract void setStyle(String style);
+	public abstract String getAccept();
 
-       
+	public abstract String getStyleClass();
+
+	public abstract String getStyle();
+
+	public abstract void setStyleClass(String styleClass);
+
+	public abstract void setStyle(String style);
+
+	public abstract MethodBinding getFileUploadListener();
+
+	public abstract void setFileUploadListener(MethodBinding scrollerListener);
+
+	public void addFileUploadListener(FileUploadListener listener) {
+		addFacesListener(listener);
+	}
+
+	public FileUploadListener[] getFileUploadListeners() {
+		return (FileUploadListener[]) getFacesListeners(FileUploadListener.class);
+	}
+
+	public void removeFileUploadListener(FileUploadListener listener) {
+		removeFacesListener(listener);
+	}
+
+	public void broadcast(FacesEvent e) {
+
+		if (e instanceof UploadEvent) {
+
+			FacesContext facesContext = FacesContext.getCurrentInstance();
+			MethodBinding binding = getFileUploadListener();
+			if (binding != null) {
+				binding.invoke(facesContext, new Object[] { e });
+			}
+		} else {
+			super.broadcast(e);
+		}
+
+	}
 }

Modified: trunk/sandbox/ui/fileUpload/src/main/java/org/richfaces/org/jboss/seam/ui/renderkit/FileUploadRendererBase.java
===================================================================
--- trunk/sandbox/ui/fileUpload/src/main/java/org/richfaces/org/jboss/seam/ui/renderkit/FileUploadRendererBase.java	2008-02-20 09:48:22 UTC (rev 6187)
+++ trunk/sandbox/ui/fileUpload/src/main/java/org/richfaces/org/jboss/seam/ui/renderkit/FileUploadRendererBase.java	2008-02-20 10:28:49 UTC (rev 6188)
@@ -21,6 +21,7 @@
 import org.ajax4jsf.renderkit.AjaxRendererUtils;
 import org.ajax4jsf.renderkit.RendererUtils;
 import org.richfaces.component.UIProgressBar;
+import org.richfaces.event.UploadEvent;
 import org.richfaces.org.jboss.seam.ui.component.UIFileUpload;
 import org.richfaces.org.jboss.seam.web.MultipartRequest;
 import org.richfaces.renderkit.TemplateEncoderRendererBase;
@@ -69,12 +70,11 @@
 //
 //	AjaxContext ajaxContext = AjaxContextImpl.getCurrentInstance(context);
 
-	new AjaxEvent(component).queue();
-
+	new AjaxEvent(component).queue();	
 	if (!(request instanceof MultipartRequest)) {
 	    request = unwrapMultipartRequest(request);
 	}
-
+	
 	if (request instanceof MultipartRequest) {
 	    MultipartRequest multipartRequest = (MultipartRequest) request;
 	    clientId = clientId + ":file";
@@ -84,6 +84,7 @@
 		    .getFileContentType(clientId));
 	    fileUpload.setLocalFileName(multipartRequest.getFileName(clientId));
 	    fileUpload.setLocalFileSize(multipartRequest.getFileSize(clientId));
+	    new UploadEvent(component, multipartRequest.getFile(clientId)).queue();
 	    onUploadComplete(context, multipartRequest.getFile(clientId),
 		    fileUpload);
 	}
@@ -104,7 +105,7 @@
 
     private void onUploadComplete(FacesContext context, File file,
 	    UIFileUpload fileUpload) {
-	storeData(context, fileUpload, file);
+	storeData(context, fileUpload, file);	
 	try {
 	    context.responseComplete();
 	} catch (Exception e) {




More information about the richfaces-svn-commits mailing list