diff --git a/includes/MediaBrowserView.inc b/includes/MediaBrowserView.inc
index 0321a11..214f970 100644
--- a/includes/MediaBrowserView.inc
+++ b/includes/MediaBrowserView.inc
@@ -43,13 +43,19 @@ class MediaBrowserView extends MediaBrowserPlugin {
    */
   public function view() {
     if (!empty($this->view)) {
-      $build['#markup'] = $this->view->preview();
-
+      $this->view->execute();
+      $results = $this->view->result;
+      // Load all the files
+      foreach ($results as $result) {
+        $file = file_load($result->fid);
+        media_browser_build_media_item($file);
+        $files[$file->fid] = $file;
+      }
+      $build['form'] = drupal_get_form('media_view_library_form', $files);
       // Allow the View title to override the plugin title.
       if ($title = $this->view->get_title()) {
         $build['#title'] = $title;
       }
-
       return $build;
     }
   }
diff --git a/js/plugins/media.views.js b/js/plugins/media.views.js
index 1d497ac..d32106a 100644
--- a/js/plugins/media.views.js
+++ b/js/plugins/media.views.js
@@ -4,35 +4,40 @@
  * support multiple file selection
  */
 
-
 (function ($) {
 
 Drupal.behaviors.mediaViews = {
   attach: function (context, settings) {
 
-    // Container for the files that get passed back to the browser
-    var files = {};
+    // On page load we hide the checkboxes on the page
+    $('#media-view-library-form .form-type-checkbox').hide();
 
-    // Disable the links on media items list
-    $('.view-content ul.media-list-thumbnails a').click(function() {
+    // Handle the clicks on the files
+    $('a.media-views-preview').bind('click', function () {
+      // Get the FID for the clicked file
+      var fid = $(this).attr('data-fid');
+      var $checkbox = $('input:checkbox[data-fid="' + fid + '"]');
+      if (! $(this).hasClass('selected')) {
+        $('.media-item', this).addClass('selected');
+        $checkbox.attr('checked', 'checked');
+        $(this).addClass('selected');
+        var file = Drupal.settings.media.files[fid];
+        var files = new Array();
+        files.push(file);
+        Drupal.media.browser.selectMedia(files);
+      }
+      // Element is currently selected
+      else {
+        $(this).removeClass('selected');
+        $('.media-item', this).removeClass('selected');
+        $checkbox.attr('checked', false);
+        // @TODO remove the file from
+        // Drupal.media.browser.selectMedia(files);
+      }
       return false;
     });
 
-    // Catch the click on a media item
-    $('.media-item').bind('click', function () {
-      // Remove all currently selected files
-      $('.media-item').removeClass('selected');
-      // Set the current item to active
-      $(this).addClass('selected');
-      // Add this FID to the array of selected files
-      var fid = $(this).parent('a[data-fid]').attr('data-fid');
-      // Get the file from the settings which was stored in
-      // template_preprocess_media_views_view_media_browser()
-      var file = Drupal.settings.media.files[fid];
-      var files = new Array();
-      files.push(file);
-      Drupal.media.browser.selectMedia(files);
-    });
+
   }
 }
 
diff --git a/media.module b/media.module
index db1dec1..933d13d 100644
--- a/media.module
+++ b/media.module
@@ -572,6 +572,7 @@ function media_form_alter(&$form, &$form_state, $form_id) {
   }
 }
 
+
 function media_browser_form_submit($form, &$form_state) {
   if (!empty($form_state['file'])) {
     $file = $form_state['file'];
@@ -1268,3 +1269,66 @@ function media_get_remote_stream_wrappers() {
   $wrappers = array_diff_key($wrappers, file_get_stream_wrappers(STREAM_WRAPPERS_LOCAL_HIDDEN));
   return $wrappers;
 }
+
+/**
+ * Form callback function for the view plugin
+ *
+ * @param array $form
+ * @param type $form_state
+ * @param type $markup
+ * @return type
+ */
+function media_view_library_form ($form, &$form_state, $files = array()) {
+  $form['views_files'] = array(
+    '#tree' => TRUE,
+  );
+  foreach ($files as $file) {
+    $form['views_files'][$file->fid] = array(
+      '#title' => t('Select file: !file', array('!fid' => $file->fid)),
+      '#type' => 'checkbox',
+      '#prefix' => l($file->preview, 'media/browser', array(
+        'html' => TRUE,
+        'attributes' => array(
+          'class' => array('media-views-preview'),
+          'data-fid' => $file->fid,
+        )
+      )),
+      '#attributes' => array('data-fid' => $file->fid),
+      '#attached' => array('js' => array(drupal_get_path('module', 'media') . '/js/plugins/media.views.js')),
+    );
+  }
+  $form['actions'] = array('#type' => 'actions');
+  $form['actions']['submit'] = array(
+    '#type' => 'submit',
+    '#value' => t('Submit'),
+  );
+  return $form;
+}
+
+/**
+ * Select the file and add it from the view library
+ */
+function media_view_library_form_submit($form, &$form_state) {
+  foreach ($form_state['values']['views_files'] as $fid) {
+    if (! empty($fid)) {
+      $form_state['file'] = file_load($fid);
+    }
+  }
+
+  if (!$file->fid) {
+    form_set_error('url', t('The file %file could not be saved. An unknown error has occurred.', array('%file' => $embed_code)));
+    return;
+  }
+  // Redirect to the file edit page after submission.
+  if (media_access('edit')) {
+    $destination = array('destination' => 'admin/content/file');
+    if (isset($_GET['destination'])) {
+      $destination = drupal_get_destination();
+      unset($_GET['destination']);
+    }
+    $form_state['redirect'] = array('file/' . $file->fid . '/edit', array('query' => $destination));
+  }
+  else {
+    $form_state['redirect'] = 'admin/content/file';
+  }
+}
\ No newline at end of file
