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/01/15 23:48:04 UTC

git commit: ISIS-282: blob upload now ok, of a fashion

Updated Branches:
  refs/heads/master 8565bf04a -> a8bb063ba


ISIS-282: blob upload now ok, of a fashion


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

Branch: refs/heads/master
Commit: a8bb063ba254e1ea82ad8e3c878f0c73438e9451
Parents: 8565bf0
Author: Dan Haywood <da...@apache.org>
Authored: Tue Jan 15 22:42:56 2013 +0000
Committer: Dan Haywood <da...@apache.org>
Committed: Tue Jan 15 22:42:56 2013 +0000

----------------------------------------------------------------------
 .../scalars/isisapplib/IsisBlobPanel.css           |   52 +++++++++++++++
 .../scalars/isisapplib/IsisBlobPanel.html          |   11 ++-
 .../scalars/isisapplib/IsisBlobPanel.java          |   37 ++++++++--
 .../scalars/isisapplib/IsisBlobPanelFactory.java   |    5 +-
 .../viewer/wicket/ui/panels/PanelAbstract.java     |    1 -
 .../dom/src/main/java/dom/todo/ToDoItem.java       |   21 ++++++
 .../quickstart_wicket_restful_jdo/pom.xml          |    8 +-
 7 files changed, 117 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/a8bb063b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobPanel.css
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobPanel.css b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobPanel.css
index eaeea17..ccd08cc 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobPanel.css
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobPanel.css
@@ -16,3 +16,55 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
+
+.isisBlobPanel .scalarValue span.downloadTitle,
+.isisBlobPanel .scalarValue span.uploadTitle,
+.isisBlobPanel .scalarValue span.clearTitle {
+    margin-right: 10px;
+    margin-bottom:10px;
+    float:left;
+    display:block;
+    border: 0px;
+    padding:5px 10px;
+    border-radius:4px;
+    -moz-border-radius:4px;
+    -webkit-border-radius:4px;
+    background-color:#FFFFFF;
+    color:#46413B;
+    font-style:normal !important;
+    text-transform: uppercase;
+    font-size: 0.9em;
+}
+
+.isisBlobPanel .scalarValue span.uploadFile input {
+	display: none;
+}
+
+.isisBlobPanel .scalarValue a span.downloadTitle,
+.isisBlobPanel .scalarValue span.uploadTitle,
+.isisBlobPanel .scalarValue a span.clearTitle {
+    background-color:#F0EFEA;
+}
+ 
+.isisBlobPanel .scalarValue a:hover span.downloadTitle,
+.isisBlobPanel .scalarValue span.uploadTitle:hover,
+.isisBlobPanel .scalarValue a:hover span.clearTitle {
+	background-color:#20B5C2;
+    color:#FFFFFF;
+    text-decoration:none;
+    cursor: pointer;
+}
+ 
+.yourBtn{
+   position: relative;
+       top: 150px;
+   font-family: calibri;
+   width: 150px;
+   padding: 10px;
+   -webkit-border-radius: 5px;
+   -moz-border-radius: 5px;
+   border: 1px dashed #BBB; 
+   text-align: center;
+   background-color: #DDD;
+   cursor:pointer;
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/a8bb063b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobPanel.html
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobPanel.html b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobPanel.html
index 3c6603d..a0e43ec 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobPanel.html
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobPanel.html
@@ -18,16 +18,21 @@
   under the License.
 -->
 <html>
+	<wicket:head>
+	</wicket:head>
 	<body>
 		<wicket:panel>
 			<div class="isisBlobPanel scalarNameAndValueComponentType">
 				<label for="scalarValue" wicket:id="scalarIfRegular">
 	      			<span wicket:id="scalarName" class="scalarName">[Label text]</span>
 	      			<span class="scalarValue">
-		      			<input type="file" name="scalarValue" id="scalarValue" wicket:id="scalarValue"/>
+                        <span class="uploadFile">
+                            <span wicket:id="scalarIfRegularUpload" class="uploadTitle">Upload</span>
+			      			<input type="file" name="scalarValue" id="scalarValue" wicket:id="scalarValue"/>
+                        </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>
-                    <a wicket:id="scalarIfRegularDownload">Download</a>
-                    <a wicket:id="scalarIfRegularClear">Clear</a>
 	                <span wicket:id="feedback"></span>
 				</label>
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a8bb063b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobPanel.java
index 2799eed..46b0823 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobPanel.java
@@ -24,14 +24,16 @@ import java.util.List;
 import org.apache.isis.applib.value.Blob;
 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.bookmarkedpages.BookmarkedPagesPanel;
 import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelAbstract;
 import org.apache.isis.viewer.wicket.ui.util.Components;
 import org.apache.log4j.Logger;
+import org.apache.wicket.Application;
 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.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.JavaScriptHeaderItem;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.form.FormComponentLabel;
@@ -54,6 +56,7 @@ public class IsisBlobPanel extends ScalarPanelAbstract {
     private static final Logger LOG = Logger.getLogger(IsisBlobPanel.class);
     
     private static final String ID_SCALAR_IF_REGULAR = "scalarIfRegular";
+    private static final String ID_SCALAR_IF_REGULAR_UPLOAD = "scalarIfRegularUpload";
     private static final String ID_SCALAR_IF_REGULAR_DOWNLOAD = "scalarIfRegularDownload";
     private static final String ID_SCALAR_IF_REGULAR_CLEAR = "scalarIfRegularClear";
     private static final String ID_SCALAR_NAME = "scalarName";
@@ -74,7 +77,10 @@ public class IsisBlobPanel extends ScalarPanelAbstract {
         
         final FormComponentLabel scalarIfRegular = new FormComponentLabel(ID_SCALAR_IF_REGULAR, fileUploadField);
         scalarIfRegular.add(fileUploadField);
-        
+
+        final Label scalarUploadLabel = new Label(ID_SCALAR_IF_REGULAR_UPLOAD, "Upload");
+        scalarIfRegular.add(scalarUploadLabel);
+
         final Label scalarName = new Label(ID_SCALAR_NAME, getModel().getName());
         scalarIfRegular.add(scalarName);
         
@@ -87,6 +93,14 @@ public class IsisBlobPanel extends ScalarPanelAbstract {
     }
 
     @Override
+    protected void renderHead(IHeaderResponse response, Class<?> cls) {
+        super.renderHead(response, cls);
+        // also include JQuery
+        response.render(JavaScriptHeaderItem.forReference(Application.get().getJavaScriptLibrarySettings()
+                .getJQueryReference()));
+    }
+    
+    @Override
     protected Component addComponentForCompact() {
         final MarkupContainer scalarIfCompact = new WebMarkupContainer(ID_SCALAR_IF_COMPACT);
         updateDownloadLink(ID_SCALAR_IF_COMPACT_DOWNLOAD, scalarIfCompact);
@@ -155,10 +169,18 @@ public class IsisBlobPanel extends ScalarPanelAbstract {
     }
     
     private void updateRegularFormComponents(InputFieldVisibility visibility) {
-        MarkupContainer formComponentLabel = (MarkupContainer) getComponentForRegular();
-        formComponentLabel.get(ID_SCALAR_VALUE).setVisible(visibility == InputFieldVisibility.VISIBLE);
+        MarkupContainer formComponent = (MarkupContainer) getComponentForRegular();
+        formComponent.get(ID_SCALAR_VALUE).setVisible(visibility == InputFieldVisibility.VISIBLE);
+        formComponent.get(ID_SCALAR_IF_REGULAR_UPLOAD).setVisible(visibility == InputFieldVisibility.VISIBLE);
+        
         updateClearLink(visibility);
-        updateDownloadLink(ID_SCALAR_IF_REGULAR_DOWNLOAD, formComponentLabel);
+
+        final MarkupContainer downloadLink = updateDownloadLink(ID_SCALAR_IF_REGULAR_DOWNLOAD, formComponent);
+        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);
+        }
     }
 
     private void updateClearLink(InputFieldVisibility visibility) {
@@ -171,7 +193,8 @@ public class IsisBlobPanel extends ScalarPanelAbstract {
             @Override
             public void onClick(AjaxRequestTarget target) {
                 setEnabled(false);
-                getModel().setObject(null);
+                ScalarModel model = IsisBlobPanel.this.getModel();
+                model.setObject(null);
                 target.add(formComponent);
             }
         };
@@ -182,7 +205,7 @@ public class IsisBlobPanel extends ScalarPanelAbstract {
         formComponent.get(ID_SCALAR_IF_REGULAR_CLEAR).setVisible(blob != null && visibility == InputFieldVisibility.VISIBLE);
     }
 
-    private ResourceLink<?> updateDownloadLink(String downloadId, MarkupContainer container) {
+    private MarkupContainer updateDownloadLink(String downloadId, MarkupContainer container) {
         final ResourceLink<?> resourceLink = createResourceLink(downloadId);
         if(resourceLink != null) {
             container.addOrReplace(resourceLink);

http://git-wip-us.apache.org/repos/asf/isis/blob/a8bb063b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobPanelFactory.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobPanelFactory.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobPanelFactory.java
index 633708c..170d75a 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobPanelFactory.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobPanelFactory.java
@@ -19,14 +19,13 @@
 
 package org.apache.isis.viewer.wicket.ui.components.scalars.isisapplib;
 
-import org.apache.wicket.Component;
-
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
 import org.apache.isis.viewer.wicket.ui.ComponentFactory;
 import org.apache.isis.viewer.wicket.ui.components.scalars.ComponentFactoryScalarAbstract;
+import org.apache.wicket.Component;
 
 /**
- * {@link ComponentFactory} for {@link IsisColorPanel}.
+ * {@link ComponentFactory} for {@link IsisBlobPanel}.
  */
 public class IsisBlobPanelFactory extends ComponentFactoryScalarAbstract {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a8bb063b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java
index 576e501..d2fc109 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java
@@ -132,7 +132,6 @@ public abstract class PanelAbstract<T extends IModel<?>> extends Panel implement
      */
     protected void renderHead(final IHeaderResponse response, final Class<?> cls) {
         final String url = cls.getSimpleName() + ".css";
-        //response.renderCSSReference(new ResourceReference(cls, url));
         response.render(CssHeaderItem.forReference(new CssResourceReference(cls, url)));
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a8bb063b/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.java
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.java b/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.java
index 8d8dfb0..e249f84 100644
--- a/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.java
+++ b/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.java
@@ -23,6 +23,7 @@ import java.util.List;
 
 import javax.jdo.JDOHelper;
 import javax.jdo.annotations.IdentityType;
+import javax.jdo.annotations.Persistent;
 import javax.jdo.annotations.VersionStrategy;
 import javax.jdo.spi.PersistenceCapable;
 
@@ -46,6 +47,7 @@ import org.apache.isis.applib.clock.Clock;
 import org.apache.isis.applib.filter.Filter;
 import org.apache.isis.applib.filter.Filters;
 import org.apache.isis.applib.util.TitleBuffer;
+import org.apache.isis.applib.value.Blob;
 import org.apache.isis.core.objectstore.jdo.applib.annotations.Auditable;
 import org.joda.time.LocalDate;
 
@@ -194,6 +196,25 @@ public class ToDoItem implements Comparable<ToDoItem> {
     }
     // }}
 
+    
+
+    // {{ Attachment (property)
+    private Blob attachment;
+
+    @Persistent
+    @Optional
+    @MemberOrder(name="Detail", sequence = "7")
+    public Blob getAttachment() {
+        return attachment;
+    }
+
+    public void setAttachment(final Blob attachment) {
+        this.attachment = attachment;
+    }
+    // }}
+
+
+
 
     // {{ Version (derived property)
     @Hidden(where=Where.ALL_TABLES)

http://git-wip-us.apache.org/repos/asf/isis/blob/a8bb063b/example/application/quickstart_wicket_restful_jdo/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/pom.xml b/example/application/quickstart_wicket_restful_jdo/pom.xml
index c7f505f..321ed5e 100644
--- a/example/application/quickstart_wicket_restful_jdo/pom.xml
+++ b/example/application/quickstart_wicket_restful_jdo/pom.xml
@@ -30,10 +30,10 @@
     <packaging>pom</packaging>
 
 	<properties>
-		<isis.version>1.0.0</isis.version>
-		<isis-objectstore-jdo.version>1.0.0</isis-objectstore-jdo.version>
-		<isis-viewer-wicket.version>1.0.0</isis-viewer-wicket.version>
-		<isis-viewer-restfulobjects.version>1.0.0</isis-viewer-restfulobjects.version>
+		<isis.version>1.0.1-SNAPSHOT</isis.version>
+		<isis-objectstore-jdo.version>1.0.1-SNAPSHOT</isis-objectstore-jdo.version>
+		<isis-viewer-wicket.version>1.0.1-SNAPSHOT</isis-viewer-wicket.version>
+		<isis-viewer-restfulobjects.version>1.0.1-SNAPSHOT</isis-viewer-restfulobjects.version>
 		<isis-security-shiro.version>1.0.1-SNAPSHOT</isis-security-shiro.version>
 	</properties>