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) {
Show replies by date