diff --git a/panels_ipe/css/panels_ipe.css b/panels_ipe/css/panels_ipe.css
index e7896e267c64ee120d4af8ad68c9081eee0315d9..eb16d152ebe988d70db5fc6db066eeb2cfed1559 100644
--- a/panels_ipe/css/panels_ipe.css
+++ b/panels_ipe/css/panels_ipe.css
@@ -382,10 +382,10 @@ div.panels-ipe-control .form-submit {
   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:focus, div.panels-ipe-control input.panels-ipe-cancel:focus,
-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:focus, div.panels-ipe-control input.panels-ipe-cancel:focus, div.panels-ipe-control input.panels-ipe-preview:focus, div.panels-ipe-control input.panels-ipe-preview-off:focus,
+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;
 }

@@ -431,6 +431,29 @@ div.panels-ipe-control .panels-ipe-cancel {
   );
 }

+#panels-ipe-preview {
+  background-image: url(../images/icon_preview.png),-webkit-gradient(linear,left bottom,left top,color-stop(0,#383838),color-stop(1,#666));
+  background-repeat: no-repeat;
+}
+
+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,
 div.panels-ipe-pseudobutton-container:focus,
@@ -452,6 +475,24 @@ div.panels-ipe-control .form-submit:focus {
   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,
 div.panels-ipe-pseudobutton-container a:focus {
   color: #FFF;
@@ -486,6 +527,23 @@ div.panels-ipe-control .panels-ipe-save:focus {
     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,
     color-stop(0, #3D3D3D),
     color-stop(1, #999999)
   );
diff --git a/panels_ipe/images/icon_preview.png b/panels_ipe/images/icon_preview.png
new file mode 100644
index 0000000000000000000000000000000000000000..4000da1dec7a6af07250500bb571df9f73d3941b
GIT binary patch
literal 591
zcmV-V0<iswP)<h;3K|Lk000e1NJLTq000>P000>X1^@s6#OZ}&00006VoOIv0RI60
z0RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru-UI>^5*j7YJFx%&0o+MM
zK~zY`?UYZC(m)u-pXo4dr?go_F2utgxOgyGbz_VqhW#4E&)4A5yC=LTd(aT@V!S{I
zgkVBTrzvgck0&<kzYQYZ_+4k7_m}t0I|H0JapJ_C^!t4p$MFLp#FY@DU6y6-XvOFA
zIRSt;jz3B%lg(zM(ljlNG2es`AO4iH{zkIhZtq1=lu9X|%w{t`%Q7oTlFDQ<xo=t4
z^Rg^Q!{LzroFn@R27>`@wOZF&>!(smc%FB2W{kmly+*Uy1b{B*{PjVS<#O4yZTm}-
zB>ql72)U6ELXf5@>h-$xeV^UVR`!)Br5+MOszp(NQVK!{j4?lsg%D6mf2p~*gb<Pg
z&;Y1X>bG}{F_2Q?U<qUFv(|d;x^83F$?b7zt)Y}cp68o`x2w@;#6?kj<(wnWb1=rh
z7=vxws8lK_iUL6p7|-*r4&JUEtJP{`S=OT@Nx&F`F$PL01VLb?(<zxwr<1d@vx`or
z6Cd<W0AR6LTu3Qjan3ikZNqUKIF2)?lwOX<<5`wv=R%10|J2D{^m@H>Ddos<oWS?}
z>sqb$qTOz5>zI;mw>z;c>#`^cq-pvrilR41?_@_9hL4RgpIp~PwOV~k{?|_(hT%)C
d^*hda`W@8D;62by3#0%5002ovPDHLkV1mS;4+a1L

literal 0
HcmV?d00001

diff --git a/panels_ipe/js/panels_ipe.js b/panels_ipe/js/panels_ipe.js
index b203f5e5a0dafc0831ca78998051dfd6c9b3f268..afe1c6fb06285fa0d0e603dd867eccb34495afb6 100644
--- a/panels_ipe/js/panels_ipe.js
+++ b/panels_ipe/js/panels_ipe.js
@@ -428,6 +428,23 @@ $(function() {
       }
     }

+    // Enable Preview buttom in container control
+    if ($(this.element).attr('id') == 'panels-ipe-preview') {
+      if($(this.element).hasClass( "panels-ipe-preview")) {
+        $('.panels-ipe-placeholder, .panels-ipe-handlebar-wrapper').hide();
+        $('.panels-ipe-editing').removeClass('panels-ipe-editing').addClass('panels-ipe-previewing');
+        $(this.element).removeClass('panels-ipe-preview').addClass('panels-ipe-preview-off');
+        $(this.element).attr('value', 'Preview off');
+      } else {
+        $('.panels-ipe-placeholder, .panels-ipe-handlebar-wrapper').show();
+        $('.panels-ipe-editing').removeClass('panels-ipe-previewing').addClass('panels-ipe-editing');
+        $(this.element).removeClass('panels-ipe-preview-off').addClass('panels-ipe-preview');
+        $(this.element).attr('value', 'Preview');
+        Drupal.PanelsIPE.editors[this.element_settings.ipe_cache_key].showContainer();
+      }
+      return false;
+    }
+
     var retval = this.ipeReplacedEventResponse(element, event);
     if (this.ajaxing && this.element_settings.ipe_cache_key) {
       // Move the throbber so that it appears outside our container.
diff --git a/panels_ipe/plugins/display_renderers/panels_renderer_ipe.class.php b/panels_ipe/plugins/display_renderers/panels_renderer_ipe.class.php
index 5f33fcd30fad98726224d55e58872e972ff47c8b..e3a8777e7ca91106bb1daa2989bfe764a8f1b891 100644
--- a/panels_ipe/plugins/display_renderers/panels_renderer_ipe.class.php
+++ b/panels_ipe/plugins/display_renderers/panels_renderer_ipe.class.php
@@ -468,5 +468,17 @@ function panels_ipe_edit_control_form($form, &$form_state) {
     '#attributes' => array('class' => array('panels-ipe-cancel')),
     '#value' => t('Cancel'),
   );
+
+  $form['buttons']['preview'] = array(
+    '#type' => 'button',
+    '#id' => 'panels-ipe-preview',
+    '#attributes' => array(
+      'class' => array(
+        '0' => 'panels-ipe-preview',
+        ),
+      ),
+    '#value' => 'Preview',
+  );
+
   return $form;
 }
