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);});");
 
 
        }


Reply via email to