You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2013/08/19 10:57:07 UTC

[1/2] git commit: ISIS-498: enhancing IsisBlobPanel to display images

Updated Branches:
  refs/heads/master 869668e2c -> 3bbaaab3f


ISIS-498: enhancing IsisBlobPanel to display images


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/70fd88a3
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/70fd88a3
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/70fd88a3

Branch: refs/heads/master
Commit: 70fd88a367beb6637aa277aa751407166dbb54a9
Parents: 869668e
Author: Dan Haywood <da...@apache.org>
Authored: Sun Aug 18 15:59:18 2013 +0100
Committer: Dan Haywood <da...@apache.org>
Committed: Sun Aug 18 15:59:18 2013 +0100

----------------------------------------------------------------------
 .../isisapplib/IsisBlobOrClobPanelAbstract.css  |  7 ++
 .../isisapplib/IsisBlobOrClobPanelAbstract.html |  1 +
 .../isisapplib/IsisBlobOrClobPanelAbstract.java | 85 +++++++++++++++++++-
 3 files changed, 91 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/70fd88a3/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.css
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.css b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.css
index d08ec3a..f50c06f 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.css
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.css
@@ -84,3 +84,10 @@
     padding-bottom: 0px;
     font-weight: bold;
 }
+
+
+.isisBlobPanel .scalarImage {
+	float:left;
+	margin-right: 10px;
+	margin-bottom: 10px;
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/70fd88a3/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.html
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.html b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.html
index 8986cd9..0a190ac 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.html
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.html
@@ -25,6 +25,7 @@
 			<div class="isisBlobPanel scalarNameAndValueComponentType">
 				<label for="scalarValue" wicket:id="scalarIfRegular">
 	      			<span wicket:id="scalarName" class="scalarName">[Label text]</span>
+                    <img class="scalarImage" wicket:id="scalarImage"></img>
 	      			<span class="scalarValue">
                         <span class="uploadFile">
                             <span wicket:id="scalarIfRegularUpload" class="uploadTitle">Upload</span>

http://git-wip-us.apache.org/repos/asf/isis/blob/70fd88a3/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java
index 94ed94d..022dafd 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java
@@ -18,8 +18,16 @@
  */
 package org.apache.isis.viewer.wicket.ui.components.scalars.isisapplib;
 
+import java.awt.image.BufferedImage;
+import java.io.BufferedInputStream;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
 import java.util.List;
 
+import javax.activation.MimeType;
+import javax.imageio.ImageIO;
+
 import org.apache.wicket.Application;
 import org.apache.wicket.Component;
 import org.apache.wicket.MarkupContainer;
@@ -32,14 +40,20 @@ import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.form.FormComponentLabel;
 import org.apache.wicket.markup.html.form.upload.FileUpload;
 import org.apache.wicket.markup.html.form.upload.FileUploadField;
+import org.apache.wicket.markup.html.image.Image;
+import org.apache.wicket.markup.html.image.resource.BufferedDynamicImageResource;
 import org.apache.wicket.markup.html.link.ResourceLink;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.request.resource.IResource;
+import org.apache.wicket.request.resource.ResourceReference;
+import org.apache.wicket.util.io.IOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import org.apache.isis.applib.value.Blob;
 import org.apache.isis.applib.value.NamedWithMimeType;
+import org.apache.isis.core.commons.lang.IoUtils;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
 import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelAbstract;
@@ -58,7 +72,7 @@ public abstract class IsisBlobOrClobPanelAbstract<T extends NamedWithMimeType> e
     private static final String ID_SCALAR_IF_REGULAR_CLEAR = "scalarIfRegularClear";
     private static final String ID_SCALAR_NAME = "scalarName";
     private static final String ID_SCALAR_VALUE = "scalarValue";
-    private static final String ID_FEEDBACK = "feedback";
+    private static final String ID_IMAGE = "scalarImage";
     private static final String ID_SCALAR_IF_COMPACT = "scalarIfCompact";
     private static final String ID_SCALAR_IF_COMPACT_DOWNLOAD = "scalarIfCompactDownload";
 
@@ -79,6 +93,13 @@ public abstract class IsisBlobOrClobPanelAbstract<T extends NamedWithMimeType> e
     
         final Label scalarName = new Label(ID_SCALAR_NAME, getModel().getName());
         labelIfRegular.add(scalarName);
+
+        final Image wicketImage = asWicketImage(ID_IMAGE);
+        if(wicketImage != null) {
+            labelIfRegular.addOrReplace(wicketImage);
+        } else {
+            Components.permanentlyHide(labelIfRegular, ID_IMAGE);
+        }
         
         updateDownloadLink(ID_SCALAR_IF_REGULAR_DOWNLOAD, labelIfRegular);
         
@@ -89,10 +110,70 @@ public abstract class IsisBlobOrClobPanelAbstract<T extends NamedWithMimeType> e
         return labelIfRegular;
     }
 
+    private Image asWicketImage(String id) {
+        
+        final ObjectAdapter adapter = getModel().getObject();
+        if(adapter == null) {
+            return null;
+        }
+        
+        final Object object = adapter.getObject();
+        if(!(object instanceof Blob)) {
+            return null;
+        } 
+        
+        final Blob blob = (Blob)object;
+        final MimeType mimeType = blob.getMimeType();
+        if(mimeType == null || !mimeType.getPrimaryType().equals("image")) {
+            return null;
+        } 
+        
+        final BufferedImage image = asBufferedImage(blob);
+        if(image == null) {
+            return null;
+        }
+        final BufferedDynamicImageResource imageResource = new BufferedDynamicImageResource();
+        imageResource.setImage(image);
+        
+        //return new Image(id, asResourceReference(id, imageResource));
+        return new Image(id, imageResource);
+    }
+
+    @SuppressWarnings("unused")
+    private ResourceReference asResourceReference(String id, final BufferedDynamicImageResource resource) {
+        return new ResourceReference(this.getClass(), id)
+        {
+            private static final long serialVersionUID = 1L;
+
+            @Override
+            public IResource getResource()
+            {
+                return resource;
+            }
+        };
+    }
+
+    private BufferedImage asBufferedImage(final Blob blob) {
+        final byte[] bytes = blob.getBytes();
+        if(bytes == null) {
+            return null;
+        }
+        
+        final ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
+        try {
+            return ImageIO.read(bais);
+        } catch (IOException ex) {
+            return null;
+        } finally {
+            IoUtils.closeSafely(bais);
+        }
+    }
+
     @Override
     protected void renderHead(IHeaderResponse response, Class<?> cls) {
         super.renderHead(response, IsisBlobOrClobPanelAbstract.class); // don't use the subclass
-        // also include JQuery
+        // TODO: is this also necessary?
+        // thought that JQuery was already included...
         response.render(JavaScriptHeaderItem.forReference(Application.get().getJavaScriptLibrarySettings()
                 .getJQueryReference()));
     }


[2/2] git commit: ISIS-498: show uploaded image Blobs

Posted by da...@apache.org.
ISIS-498: show uploaded image Blobs

* shows image as a thumbnail
* current image no longer shown in edit mode (else is confusing to user)

also:
* fixed upload in firefox
* minor IE improvements of styling of headers


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/3bbaaab3
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/3bbaaab3
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/3bbaaab3

Branch: refs/heads/master
Commit: 3bbaaab3fa958bb3188997ad47035d9195eeff39
Parents: 70fd88a
Author: Dan Haywood <da...@apache.org>
Authored: Mon Aug 19 09:56:24 2013 +0100
Committer: Dan Haywood <da...@apache.org>
Committed: Mon Aug 19 09:56:24 2013 +0100

----------------------------------------------------------------------
 .../CollectionContentsAsAjaxTablePanel.css      |  6 +--
 .../ajaxtable/MyHeadersToolbar.html             |  3 --
 .../entity/properties/EntityPropertiesForm.java |  6 +++
 .../isisapplib/IsisBlobOrClobPanelAbstract.css  |  6 +--
 .../isisapplib/IsisBlobOrClobPanelAbstract.html | 19 +++++++--
 .../isisapplib/IsisBlobOrClobPanelAbstract.java | 44 ++++++++------------
 .../viewer/wicket/ui/pages/PageAbstract.css     |  5 +++
 7 files changed, 47 insertions(+), 42 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/3bbaaab3/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.css
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.css b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.css
index 4be92ad..823dfbe 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.css
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.css
@@ -42,7 +42,7 @@
 	padding-right: 4px;
 }
 .collectionContentsAsAjaxTablePanel table.contents tr th,
-.collectionContentsAsAjaxTablePanel table.contents tr th a { 
+.collectionContentsAsAjaxTablePanel table.contents tr th a span { 
 	color: #FFFFFF;
 	background-color: #46423C;
 	text-align: left; 
@@ -51,8 +51,8 @@
 	font-weight:bold;
 }
 
-.collectionContentsAsAjaxTablePanel table.contents tr th.wicket_orderUp a,
-.collectionContentsAsAjaxTablePanel table.contents tr th.wicket_orderDown a {
+.collectionContentsAsAjaxTablePanel table.contents tr th.wicket_orderUp a span ,
+.collectionContentsAsAjaxTablePanel table.contents tr th.wicket_orderDown a span {
     background-color: #20B5C2;
 }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/3bbaaab3/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/MyHeadersToolbar.html
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/MyHeadersToolbar.html b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/MyHeadersToolbar.html
index 1a744eb..79ae3b8 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/MyHeadersToolbar.html
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/MyHeadersToolbar.html
@@ -19,9 +19,6 @@
     <tr class="headers">
         <wicket:container wicket:id="headers">
             <th wicket:id="header">
-                <!-- 
-                 input type="checkbox" xxxwicket:id="checkbox"/>
-                 -->
                 <span wicket:id="label">[header-label]</span>
             </th>
         </wicket:container>

http://git-wip-us.apache.org/repos/asf/isis/blob/3bbaaab3/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java
index 099bb0a..770b09d 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java
@@ -67,6 +67,7 @@ import org.apache.isis.viewer.wicket.model.models.ScalarModel;
 import org.apache.isis.viewer.wicket.ui.ComponentType;
 import org.apache.isis.viewer.wicket.ui.components.widgets.formcomponent.CancelHintRequired;
 import org.apache.isis.viewer.wicket.ui.errors.JGrowlBehaviour;
+import org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage;
 import org.apache.isis.viewer.wicket.ui.panels.ButtonWithPreValidateHook;
 import org.apache.isis.viewer.wicket.ui.panels.FormAbstract;
 import org.apache.isis.viewer.wicket.ui.util.Components;
@@ -364,6 +365,11 @@ class EntityPropertiesForm extends FormAbstract<ObjectAdapter> {
                 }
 
                 toViewMode(null);
+                
+                final EntityPage entityPage = new EntityPage(EntityPropertiesForm.this.getModelObject(), null);
+                
+                // "redirect-after-post"
+                EntityPropertiesForm.this.setResponsePage(entityPage);
             }
 
         };

http://git-wip-us.apache.org/repos/asf/isis/blob/3bbaaab3/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.css
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.css b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.css
index f50c06f..2ef6a93 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.css
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.css
@@ -36,10 +36,6 @@
     font-size: 0.9em;
 }
 
-.isisBlobPanel .scalarValue .uploadFile input {
-	display: none;
-}
-
 .isisBlobPanel .scalarValue a span.downloadTitle,
 .isisBlobPanel .scalarValue span.uploadTitle,
 .isisBlobPanel .scalarValue a span.clearTitle {
@@ -49,6 +45,7 @@
  
 .isisBlobPanel .scalarValue a:hover span.downloadTitle,
 .isisBlobPanel .scalarValue span.uploadTitle:hover,
+.isisBlobPanel .scalarValue span.uploadTitle input:hover,
 .isisBlobPanel .scalarValue a:hover span.clearTitle {
 	background-color:#40C0CB;
 	color: white;
@@ -71,7 +68,6 @@
 }
 
 
-
 .isisBlobPanel .scalarValue {
 	height: 30px;
 	line-height: 30px;

http://git-wip-us.apache.org/repos/asf/isis/blob/3bbaaab3/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.html
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.html b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.html
index 0a190ac..8c1ca98 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.html
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.html
@@ -25,14 +25,25 @@
 			<div class="isisBlobPanel scalarNameAndValueComponentType">
 				<label for="scalarValue" wicket:id="scalarIfRegular">
 	      			<span wicket:id="scalarName" class="scalarName">[Label text]</span>
-                    <img class="scalarImage" wicket:id="scalarImage"></img>
+                    <img class="scalarImage" width="200px" wicket:id="scalarImage"></img>
 	      			<span class="scalarValue">
+                    
+                        <a class="clear" wicket:id="scalarIfRegularClear"><span class="clearTitle">Clear</span></a>
+
                         <span class="uploadFile">
-                            <span wicket:id="scalarIfRegularUpload" class="uploadTitle">Upload</span>
-			      			<input type="file" name="scalarValue" id="scalarValue" wicket:id="scalarValue"/>
+
+                            <!-- from: http://stackoverflow.com/questions/3226167/how-to-style-input-file-with-css3-javascript -->
+                            <span wicket:id="scalarIfRegularUpload" class="uploadTitle"
+                            onclick="$('#file-upload').removeClass('hidden').click().addClass('hidden')">Upload</span>
+                            <!-- 
+			      			<input type="file" name="scalarValue" id="scalarValue" xxxwicket:id="scalarValue" 
+                                   onchange="$('#file').text($(this).val());"   />
+                             -->
+                            <input type="file" name="scalarValue" id="file-upload" wicket:id="scalarValue" 
+                                   class="hidden"  />
                         </span>
+                        
 	                    <a class="download" wicket:id="scalarIfRegularDownload"><span class="downloadTitle">Download</span></a>
-	                    <a class="clear" wicket:id="scalarIfRegularClear"><span class="clearTitle">Clear</span></a>
 	      			</span>
 	                <span wicket:id="feedback"></span>
                     <span wicket:id="additionalLinks"/>

http://git-wip-us.apache.org/repos/asf/isis/blob/3bbaaab3/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java
index 022dafd..aceaa6d 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java
@@ -19,9 +19,7 @@
 package org.apache.isis.viewer.wicket.ui.components.scalars.isisapplib;
 
 import java.awt.image.BufferedImage;
-import java.io.BufferedInputStream;
 import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.util.List;
 
@@ -33,6 +31,7 @@ import org.apache.wicket.Component;
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.AjaxLink;
+import org.apache.wicket.extensions.markup.html.image.resource.ThumbnailImageResource;
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.head.JavaScriptHeaderItem;
 import org.apache.wicket.markup.html.WebMarkupContainer;
@@ -41,13 +40,12 @@ import org.apache.wicket.markup.html.form.FormComponentLabel;
 import org.apache.wicket.markup.html.form.upload.FileUpload;
 import org.apache.wicket.markup.html.form.upload.FileUploadField;
 import org.apache.wicket.markup.html.image.Image;
+import org.apache.wicket.markup.html.image.NonCachingImage;
 import org.apache.wicket.markup.html.image.resource.BufferedDynamicImageResource;
 import org.apache.wicket.markup.html.link.ResourceLink;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.request.resource.IResource;
-import org.apache.wicket.request.resource.ResourceReference;
-import org.apache.wicket.util.io.IOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -76,6 +74,8 @@ public abstract class IsisBlobOrClobPanelAbstract<T extends NamedWithMimeType> e
     private static final String ID_SCALAR_IF_COMPACT = "scalarIfCompact";
     private static final String ID_SCALAR_IF_COMPACT_DOWNLOAD = "scalarIfCompactDownload";
 
+    private Image wicketImage;
+
     protected enum InputFieldVisibility {
             VISIBLE, NOT_VISIBLE;
         }
@@ -94,8 +94,9 @@ public abstract class IsisBlobOrClobPanelAbstract<T extends NamedWithMimeType> e
         final Label scalarName = new Label(ID_SCALAR_NAME, getModel().getName());
         labelIfRegular.add(scalarName);
 
-        final Image wicketImage = asWicketImage(ID_IMAGE);
+        wicketImage = asWicketImage(ID_IMAGE);
         if(wicketImage != null) {
+            wicketImage.setOutputMarkupId(true);
             labelIfRegular.addOrReplace(wicketImage);
         } else {
             Components.permanentlyHide(labelIfRegular, ID_IMAGE);
@@ -132,25 +133,13 @@ public abstract class IsisBlobOrClobPanelAbstract<T extends NamedWithMimeType> e
         if(image == null) {
             return null;
         }
+        
         final BufferedDynamicImageResource imageResource = new BufferedDynamicImageResource();
         imageResource.setImage(image);
+        final ThumbnailImageResource thumbnailImageResource = new ThumbnailImageResource(imageResource, 300);
         
-        //return new Image(id, asResourceReference(id, imageResource));
-        return new Image(id, imageResource);
-    }
-
-    @SuppressWarnings("unused")
-    private ResourceReference asResourceReference(String id, final BufferedDynamicImageResource resource) {
-        return new ResourceReference(this.getClass(), id)
-        {
-            private static final long serialVersionUID = 1L;
-
-            @Override
-            public IResource getResource()
-            {
-                return resource;
-            }
-        };
+        final NonCachingImage wicketImage = new NonCachingImage(id, thumbnailImageResource);
+        return wicketImage;
     }
 
     private BufferedImage asBufferedImage(final Blob blob) {
@@ -172,10 +161,6 @@ public abstract class IsisBlobOrClobPanelAbstract<T extends NamedWithMimeType> e
     @Override
     protected void renderHead(IHeaderResponse response, Class<?> cls) {
         super.renderHead(response, IsisBlobOrClobPanelAbstract.class); // don't use the subclass
-        // TODO: is this also necessary?
-        // thought that JQuery was already included...
-        response.render(JavaScriptHeaderItem.forReference(Application.get().getJavaScriptLibrarySettings()
-                .getJQueryReference()));
     }
 
     @Override
@@ -248,11 +233,16 @@ public abstract class IsisBlobOrClobPanelAbstract<T extends NamedWithMimeType> e
         updateClearLink(visibility);
     
         final MarkupContainer downloadLink = updateDownloadLink(ID_SCALAR_IF_REGULAR_DOWNLOAD, formComponent);
+        
+        // the visibility of download link is intentionally 'backwards';
+        // if in edit mode then do NOT show
         if (downloadLink != null) {
-            // the visibility of download link is intentionally 'backwards';
-            // if in edit mode then do NOT show
             downloadLink.setVisible(visibility == InputFieldVisibility.NOT_VISIBLE);
         }
+        // ditto any image
+        if(wicketImage != null) {
+            wicketImage.setVisible(visibility == InputFieldVisibility.NOT_VISIBLE);
+        }
     }
 
     private void updateClearLink(InputFieldVisibility visibility) {

http://git-wip-us.apache.org/repos/asf/isis/blob/3bbaaab3/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.css
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.css b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.css
index 373c4c5..61c637b 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.css
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.css
@@ -850,3 +850,8 @@ div#jGrowl div.jGrowl-closer {
 
 
 
+/** general **/
+
+.hidden {
+	display: none;
+}
\ No newline at end of file