You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by iv...@apache.org on 2010/11/25 05:11:20 UTC

svn commit: r1038911 - /wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/form/upload/UploadProgressBar.java

Author: ivaynberg
Date: Thu Nov 25 04:11:20 2010
New Revision: 1038911

URL: http://svn.apache.org/viewvc?rev=1038911&view=rev
Log:

Issue: WICKET-3181

Modified:
    wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/form/upload/UploadProgressBar.java

Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/form/upload/UploadProgressBar.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/form/upload/UploadProgressBar.java?rev=1038911&r1=1038910&r2=1038911&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/form/upload/UploadProgressBar.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/form/upload/UploadProgressBar.java Thu Nov 25 04:11:20 2010
@@ -17,13 +17,10 @@
 package org.apache.wicket.extensions.ajax.markup.html.form.upload;
 
 import org.apache.wicket.Application;
-import org.apache.wicket.Component;
 import org.apache.wicket.IInitializer;
-import org.apache.wicket.behavior.AbstractBehavior;
-import org.apache.wicket.behavior.IBehavior;
-import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.html.IHeaderResponse;
 import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.WicketEventReference;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.upload.FileUploadField;
 import org.apache.wicket.markup.html.panel.Panel;
@@ -88,6 +85,12 @@ public class UploadProgressBar extends P
 
 	private final FileUploadField uploadField;
 
+	@Override
+	protected void onInitialize()
+	{
+		super.onInitialize();
+		form.getRootForm().setOutputMarkupId(true);
+	}
 
 	/**
 	 * Constructor that will display the upload progress bar for every submit of the given form.
@@ -142,13 +145,6 @@ public class UploadProgressBar extends P
 		}
 	}
 
-	@Override
-	protected void onInitialize()
-	{
-		super.onInitialize();
-		form.getRootForm().add(new FormEnabler(this, statusDiv, barDiv, uploadField));
-	}
-
 	/**
 	 * Override this to provide your own CSS, or return null to avoid including the default.
 	 * 
@@ -163,69 +159,24 @@ public class UploadProgressBar extends P
 	public void renderHead(IHeaderResponse response)
 	{
 		super.renderHead(response);
+		response.renderJavascriptReference(WicketEventReference.INSTANCE);
 		response.renderJavascriptReference(JS);
 		ResourceReference css = getCss();
 		if (css != null)
 		{
 			response.renderCSSReference(css);
 		}
-	}
 
-	/** {@inheritDoc} */
-	@Override
-	protected void onRemove()
-	{
-		// remove formenabler we added to the form
-		for (IBehavior behavior : form.getBehaviors())
-		{
-			if (behavior instanceof FormEnabler)
-			{
-				if (((FormEnabler)behavior).getUploadProgressBar() == this)
-				{
-					form.remove(behavior);
-					break;
-				}
-			}
-		}
-		super.onRemove();
-	}
-
-	/**
-	 * Hooks into form onsubmit and triggers the progress bar updates
-	 * 
-	 * @author igor.vaynberg
-	 */
-	private static class FormEnabler extends AbstractBehavior
-	{
-		private static final long serialVersionUID = 1L;
+		ResourceReference ref = new SharedResourceReference(RESOURCE_NAME);
 
-		private final Component status, bar, uploadField;
-		private final UploadProgressBar pbar;
+		final String uploadFieldId = (uploadField == null) ? "" : uploadField.getMarkupId();
 
-		public FormEnabler(UploadProgressBar pbar, Component status, Component bar,
-			Component uploadField)
-		{
-			this.pbar = pbar;
-			this.bar = bar;
-			this.status = status;
-			this.uploadField = uploadField;
-		}
-
-		@Override
-		public void onComponentTag(Component component, ComponentTag tag)
-		{
-			ResourceReference ref = new SharedResourceReference(RESOURCE_NAME);
-			final String uploadFieldId = (uploadField == null) ? "" : uploadField.getMarkupId();
-			tag.put("onsubmit", "var def=new Wicket.WUPB.Def('" + component.getMarkupId() + "', '" +
-				status.getMarkupId() + "', '" + bar.getMarkupId() + "', '" +
-				component.getPage().urlFor(ref, null) + "','" + uploadFieldId +
-				"'); Wicket.WUPB.start(def);");
-		}
-
-		public UploadProgressBar getUploadProgressBar()
-		{
-			return pbar;
-		}
+		response.renderOnDomReadyJavascript("Wicket.Event.add(document.getElementById('" +
+			form.getRootForm().getMarkupId() + "'), 'submit', function() {" +
+			"if (!document.getElementById('" + statusDiv.getMarkupId() + "')) return;" +
+			"var def=new Wicket.WUPB.Def('" + getMarkupId() + "', '" + statusDiv.getMarkupId() +
+			"', '" + barDiv.getMarkupId() + "', '" + urlFor(ref, null) + "','" + uploadFieldId +
+			"'); Wicket.WUPB.start(def);});");
 
 
 	}