diff --git a/modules/fields/atom_reference/atom_reference.css b/modules/fields/atom_reference/atom_reference.css
index 4fef707..f052fa5 100644
--- a/modules/fields/atom_reference/atom_reference.css
+++ b/modules/fields/atom_reference/atom_reference.css
@@ -7,3 +7,15 @@
   border: #ccc 2px dashed;
   padding: 2px;
 }
+
+div.atom_reference_operations ul.buttons {
+  margin: 0;
+}
+
+div.atom_reference_operations ul.buttons li:first-child {
+  padding-left: 0;
+}
+
+.vertical-tabs .form-type-textfield div.atom_reference_operations ul.buttons > li.remove input {
+  width: auto;
+}
diff --git a/modules/fields/atom_reference/atom_reference.js b/modules/fields/atom_reference/atom_reference.js
index ca6876b..107aa23 100644
--- a/modules/fields/atom_reference/atom_reference.js
+++ b/modules/fields/atom_reference/atom_reference.js
@@ -3,15 +3,54 @@
  *   Provides the JavaScript behaviors for the Atom Reference field.
  */
 (function($) {
+
+  var $edit_link_model = $('<a target="_blank">')
+    .html(Drupal.t('Edit resource'))
+    .addClass('ctools-use-modal ctools-modal-custom-style atom-reference-edit');
+  var $view_link_model = $('<a target="_blank">')
+    .html(Drupal.t('View resource'))
+    .addClass('atom-reference-view');
+
 Drupal.behaviors.atom_reference = {
-  attach: function(context) {
-    $("div.atom_reference_drop_zone:not(.atom_reference_processed)").each(function() {
+  attach: function(context, settings) {
+    var atom_reference_attach = this;
+
+    // Record if the edit target link modal frame is updated
+    $('.ctools-modal-content form').bind('formUpdated', function() {
+      atom_reference_attach['update_atom_reference_drop_zone'] = true;
+    });
+
+    // Update drop zone (especially when returning from the edit modal frame).
+    if (typeof(this.update_atom_reference_drop_zone) !== 'undefined') {
+      $('div.atom_reference_drop_zone.atom_reference_processed').each(function() {
+        var $this = $(this);
+        var match_atom_id = /<!-- scald=(\d+):.*-->/g.exec($this.html());
+        if (match_atom_id) {
+          var atom_id = match_atom_id[1];
+          Drupal.dnd.fetchAtom('sdl_editor_representation', atom_id, function() {
+            $this
+              .empty()
+              .append(Drupal.dnd.Atoms[atom_id].editor);
+          });
+        }
+      });
+    }
+
+    $("div.atom_reference_drop_zone:not(.atom_reference_processed)", context).each(function() {
       var $this = $(this);
-      var $reset = $("<input type='button' />")
-        .val(Drupal.t('Delete'))
+
+      // Build Remove button and Edit/View links container
+      var $operation_wrapper = $('<div class="atom_reference_operations">')
+        .append($('<div class="description">')
+          .html(Drupal.t('Modifications you make using the edit link will globally change the settings of the atom.')));
+      var $buttons = $('<ul class="inline buttons"><li class="remove"><li class="edit"><li class="view"></ul>')
+        .prependTo($operation_wrapper);
+
+      // Remove button
+      $("<input type='button' />")
+        .val(Drupal.t('Remove resource reference'))
         .click(function() {
-          $(this)
-            .hide()
+          $buttons
             .closest('div.form-item')
             .find('input:text')
             .val('')
@@ -19,11 +58,43 @@ Drupal.behaviors.atom_reference = {
             .find('div.atom_reference_drop_zone')
             .empty()
             .append(Drupal.t('Drop a resource here'))
+            .end()
+            .find('div.atom_reference_operations')
+            .hide();
+        })
+        .appendTo($buttons.find('li.remove'));
+
+      var match_atom_id = /<!-- scald=(\d+):.*-->/g.exec($this.html());
+      if (match_atom_id) {
+        var atom_id = match_atom_id[1];
+
+        Drupal.dnd.fetchAtom('', atom_id, function() {
+
+          // Edit link
+          if ($.grep(Drupal.dnd.Atoms[atom_id].actions, function(e){ return e == 'edit'; }).length > 0) {
+            // Permission granted for edit
+
+            $edit_link_model.clone()
+              .attr('href', settings.basePath + 'atom/' + atom_id + '/edit/nojs')
+              .appendTo($buttons.find('li.edit'));
+            Drupal.behaviors.ZZCToolsModal.attach($buttons);
+          }
+
+          // View link
+          if ($.grep(Drupal.dnd.Atoms[atom_id].actions, function(e){ return e == 'view'; }).length > 0) {
+            // Permission granted for view
+
+            $view_link_model.clone()
+              .attr('href', settings.basePath + 'atom/' + atom_id + '/view')
+              .appendTo($buttons.find('li.view'));
+          }
         });
-      // If the element doesn't have a value yet, hide the Delete button
+      }
+
+      // If the element doesn't have a value yet, hide the operations wrapper
       // by default
       if (!$this.closest('div.form-item').find('input:text').val()) {
-        $reset.css('display', 'none');
+        $operation_wrapper.css('display', 'none');
       }
       $this
         .addClass('atom_reference_processed')
@@ -41,7 +112,7 @@ Drupal.behaviors.atom_reference = {
               .find('input:text')
               .val(dt)
               .end()
-              .find('input:button')
+              .find('.atom_reference_operations')
               .show();
           }
           else {
@@ -56,7 +127,7 @@ Drupal.behaviors.atom_reference = {
         .find('input')
         .css('display', 'none')
         .end()
-        .append($reset);
+        .append($operation_wrapper);
     });
   }
 }
@@ -71,6 +142,38 @@ if (!Drupal.atom_reference) {
       if (jQuery.inArray(type, accept) == -1) {
         retVal.keepgoing = false;
       }
+
+      Drupal.dnd.fetchAtom('', ressource_id, function() {
+        var $buttons = $(field).closest('.form-item').find('.buttons');
+
+        // Process Edit link
+        if ($.grep(Drupal.dnd.Atoms[ressource_id].actions, function(e){ return e == 'edit'; }).length > 0) {
+          // Permission granted for edit
+
+          var atom_edit_link = Drupal.settings.basePath + 'atom/' + ressource_id + '/edit/nojs';
+          $edit_link_model.clone()
+            .attr('href', atom_edit_link)
+            .appendTo($buttons.find('li.edit').empty());
+          Drupal.behaviors.ZZCToolsModal.attach($buttons);
+        }
+        else {
+          $buttons.find('li.edit').empty();
+        }
+
+        // Process View link
+        if ($.grep(Drupal.dnd.Atoms[ressource_id].actions, function(e){ return e == 'view'; }).length > 0) {
+          // Permission granted for view
+
+          var atom_view_link = Drupal.settings.basePath + 'atom/' + ressource_id + '/view';
+          $view_link_model.clone()
+            .attr('href', atom_view_link)
+            .appendTo($buttons.find('li.view').empty());
+        }
+        else {
+          $buttons.find('li.view').empty();
+        }
+      });
+
       retVal.type = type;
     }
     else {
