Index: profiles/panopoly/modules/contrib/panels/panels_ipe/js/panels_ipe.js
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- profiles/panopoly/modules/contrib/panels/panels_ipe/js/panels_ipe.js	(revision ea8329ad6d16a6c4ec0e98751ce20d4d0071cf66)
+++ profiles/panopoly/modules/contrib/panels/panels_ipe/js/panels_ipe.js	(revision )
@@ -1,4 +1,3 @@
-
 // Ensure the $ alias is owned by jQuery.
 (function($) {
 
@@ -421,11 +420,28 @@
       element.ipeCancelThis = null;
       return false;
     }
-
-    if ($(this.element).attr('id') == 'panels-ipe-cancel') {
+    var thisElement = $(this.element);
+    if (thisElement.attr('id') == 'panels-ipe-cancel') {
       if (!Drupal.PanelsIPE.editors[this.element_settings.ipe_cache_key].cancelEditing()) {
         return false;
       }
+    }
+
+    // Enable Preview buttom in container control
+    if (thisElement.attr('id') == 'panels-ipe-preview') {
+      if(thisElement.hasClass("panels-ipe-preview")) {
+        $('.panels-ipe-placeholder, .panels-ipe-handlebar-wrapper').hide();
+        $('.panels-ipe-editing').removeClass('panels-ipe-editing').addClass('panels-ipe-previewing');
+        thisElement.removeClass('panels-ipe-preview').addClass('panels-ipe-preview-off');
+        thisElement.attr('value', Drupal.t('Preview off'));
+      } else {
+        $('.panels-ipe-placeholder, .panels-ipe-handlebar-wrapper').show();
+        $('.panels-ipe-editing').removeClass('panels-ipe-previewing').addClass('panels-ipe-editing');
+        thisElement.removeClass('panels-ipe-preview-off').addClass('panels-ipe-preview');
+        thisElement.attr('value',  Drupal.t('Preview'));
+        Drupal.PanelsIPE.editors[this.element_settings.ipe_cache_key].showForm();
+      }
+      return false;
     }
 
     var retval = this.ipeReplacedEventResponse(element, event);
Index: profiles/panopoly/modules/contrib/panels/panels_ipe/css/panels_ipe.css
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- profiles/panopoly/modules/contrib/panels/panels_ipe/css/panels_ipe.css	(revision ea8329ad6d16a6c4ec0e98751ce20d4d0071cf66)
+++ profiles/panopoly/modules/contrib/panels/panels_ipe/css/panels_ipe.css	(revision )
@@ -380,9 +380,9 @@
   padding: 0 0.8em 2px 34px;
 }
 
-div.panels-ipe-control input.panels-ipe-save, div.panels-ipe-control input.panels-ipe-cancel,
-div.panels-ipe-control input.panels-ipe-save:hover, div.panels-ipe-control input.panels-ipe-cancel:hover,
-div.panels-ipe-control input.panels-ipe-save:active, div.panels-ipe-control input.panels-ipe-cancel:active {
+div.panels-ipe-control input.panels-ipe-save, div.panels-ipe-control input.panels-ipe-cancel, div.panels-ipe-control input.panels-ipe-preview, div.panels-ipe-control input.panels-ipe-preview-off,
+div.panels-ipe-control input.panels-ipe-save:hover, div.panels-ipe-control input.panels-ipe-cancel:hover, div.panels-ipe-control input.panels-ipe-preview:hover, div.panels-ipe-control input.panels-ipe-preview-off:hover,
+div.panels-ipe-control input.panels-ipe-save:active, div.panels-ipe-control input.panels-ipe-cancel:active, div.panels-ipe-control input.panels-ipe-preview:active, div.panels-ipe-control input.panels-ipe-preview-off:active {
   background-repeat: no-repeat;
 }
 
@@ -428,6 +428,24 @@
   );
 }
 
+div.panels-ipe-control input.panels-ipe-preview,
+div.panels-ipe-control input.panels-ipe-preview-off {
+  background-image: url(../images/icon_preview.png);
+  background-image: url(../images/icon_preview.png), linear-gradient(bottom, #383838 0%, #666666 100%);
+  background-image: url(../images/icon_preview.png), -o-linear-gradient(bottom, #383838 0%, #666666 100%);
+  background-image: url(../images/icon_preview.png), -moz-linear-gradient(bottom, #383838 0%, #666666 100%);
+  background-image: url(../images/icon_preview.png), -webkit-linear-gradient(bottom, #383838 0%, #666666 100%);
+  background-image: url(../images/icon_preview.png), -ms-linear-gradient(bottom, #383838 0%, #666666 100%);
+
+  background-image: url(../images/icon_preview.png), -webkit-gradient(
+    linear,
+    left bottom,
+    left top,
+    color-stop(0, #383838),
+    color-stop(1, #666666)
+  );
+}
+
 div.panels-ipe-pseudobutton-container:hover,
 div.panels-ipe-control .form-submit:hover {
   background: #999999;
@@ -447,6 +465,22 @@
   color: #FFF;
 }
 
+div.panels-ipe-control input.panels-ipe-preview:hover,
+div.panels-ipe-control input.panels-ipe-preview-off:hover {
+  background-image: url(../images/icon_preview.png), linear-gradient(bottom, #3D3D3D 0%, #999999 100%);
+  background-image: url(../images/icon_preview.png), -o-linear-gradient(bottom, #3D3D3D 0%, #999999 100%);
+  background-image: url(../images/icon_preview.png), -moz-linear-gradient(bottom, #3D3D3D 0%, #999999 100%);
+  background-image: url(../images/icon_preview.png), -webkit-linear-gradient(bottom, #3D3D3D 0%, #999999 100%);
+  background-image: url(../images/icon_preview.png), -ms-linear-gradient(bottom, #3D3D3D 0%, #999999 100%);
+
+  background-image: url(../images/icon_preview.png), -webkit-gradient(
+    linear,
+    left bottom,
+    left top,
+    color-stop(0, #3D3D3D),
+    color-stop(1, #999999)
+  );
+}
 div.panels-ipe-pseudobutton-container a:hover {
   color: #FFF;
 }
@@ -531,6 +565,23 @@
   background-image: url(../images/icon-save.png), -ms-linear-gradient(bottom, #616161 0%, #333333 100%);
 
   background-image: url(../images/icon-save.png), -webkit-gradient(
+    linear,
+    left bottom,
+    left top,
+    color-stop(0, #616161),
+    color-stop(1, #333333)
+  );
+}
+
+div.panels-ipe-control input.panels-ipe-preview:active,
+div.panels-ipe-control input.panels-ipe-preview-off:active {
+  background-image: url(../images/icon_preview.png), linear-gradient(bottom, #616161 0%, #333333 100%);
+  background-image: url(../images/icon_preview.png), -o-linear-gradient(bottom, #616161 0%, #333333 100%);
+  background-image: url(../images/icon_preview.png), -moz-linear-gradient(bottom, #616161 0%, #333333 100%);
+  background-image: url(../images/icon_preview.png), -webkit-linear-gradient(bottom, #616161 0%, #333333 100%);
+  background-image: url(../images/icon_preview.png), -ms-linear-gradient(bottom, #616161 0%, #333333 100%);
+
+  background-image: url(../images/icon_preview.png), -webkit-gradient(
     linear,
     left bottom,
     left top,
Index: profiles/panopoly/modules/contrib/panels/panels_ipe/plugins/display_renderers/panels_renderer_ipe.class.php
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- profiles/panopoly/modules/contrib/panels/panels_ipe/plugins/display_renderers/panels_renderer_ipe.class.php	(revision ea8329ad6d16a6c4ec0e98751ce20d4d0071cf66)
+++ profiles/panopoly/modules/contrib/panels/panels_ipe/plugins/display_renderers/panels_renderer_ipe.class.php	(revision )
@@ -462,5 +462,15 @@
     '#attributes' => array('class' => array('panels-ipe-cancel')),
     '#value' => t('Cancel'),
   );
+  $form['buttons']['preview'] = array(
+    '#type' => 'button',
+    '#id' => 'panels-ipe-preview',
+    '#attributes' => array(
+      'class' => array(
+          'panels-ipe-preview',
+        ),
+      ),
+    '#value' => t('Preview'),
+  );
   return $form;
 }
