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 2007/08/21 16:15:04 UTC

svn commit: r568140 - /wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/link/DownloadLink.java

Author: ivaynberg
Date: Tue Aug 21 07:15:04 2007
New Revision: 568140

URL: http://svn.apache.org/viewvc?rev=568140&view=rev
Log:
better model support

Modified:
    wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/link/DownloadLink.java

Modified: wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/link/DownloadLink.java
URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/link/DownloadLink.java?rev=568140&r1=568139&r2=568140&view=diff
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/link/DownloadLink.java (original)
+++ wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/link/DownloadLink.java Tue Aug 21 07:15:04 2007
@@ -18,6 +18,8 @@
 
 import java.io.File;
 
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
 import org.apache.wicket.request.target.resource.ResourceStreamRequestTarget;
 import org.apache.wicket.util.resource.FileResourceStream;
 import org.apache.wicket.util.resource.IResourceStream;
@@ -38,14 +40,9 @@
 	private static final long serialVersionUID = 1L;
 
 	/**
-	 * File to stream
-	 */
-	private final File file;
-
-	/**
 	 * File name to stream
 	 */
-	private final String fileName;
+	private String fileName;
 
 
 	/**
@@ -64,10 +61,41 @@
 		{
 			throw new IllegalArgumentException("file cannot be null");
 		}
-		this.file = file;
-		this.fileName = file.getName();
+		setModel(new Model(file));
+	}
+
+	/**
+	 * Constructor. File name used will be the result of
+	 * <code>file.getName()</code>
+	 * 
+	 * @param id
+	 *            component id
+	 * @param model
+	 *            model that contains the file object
+	 */
+	public DownloadLink(String id, IModel model)
+	{
+		super(id, model);
+	}
+
+	/**
+	 * Constructor. File name used will be the result of
+	 * <code>file.getName()</code>
+	 * 
+	 * @param id
+	 *            component id
+	 * @param model
+	 *            model that contains the file object
+	 * @param fileName
+	 *            name of the file
+	 */
+	public DownloadLink(String id, IModel model, String fileName)
+	{
+		super(id, model);
+		this.fileName = fileName;
 	}
 
+
 	/**
 	 * Constructor
 	 * 
@@ -89,7 +117,7 @@
 		{
 			throw new IllegalArgumentException("fileName cannot be an empty string");
 		}
-		this.file = file;
+		setModel(new Model(file));
 		this.fileName = fileName;
 	}
 
@@ -100,11 +128,21 @@
 	 */
 	public void onClick()
 	{
-		IResourceStream resourceStream = new FileResourceStream(new org.apache.wicket.util.file.File(file));
-		getRequestCycle().setRequestTarget(new ResourceStreamRequestTarget(resourceStream) {
+		final File file = (File)getModelObject();
+		if (file == null)
+		{
+			throw new IllegalStateException(getClass().getName() +
+					" failed to retrieve a File object from model");
+		}
+		final String fn = (fileName != null) ? fileName : file.getName();
+
+		IResourceStream resourceStream = new FileResourceStream(
+				new org.apache.wicket.util.file.File(file));
+		getRequestCycle().setRequestTarget(new ResourceStreamRequestTarget(resourceStream)
+		{
 			public String getFileName()
 			{
-				return fileName;
+				return fn;
 			}
 		});
 	}