Skip to content

Commit 2b0918e

Browse files
committed
Added support for Flexible integration like Cards or any widgets by wrapping inside MaterialFileUploader.
1 parent fe077a0 commit 2b0918e

File tree

6 files changed

+108
-25
lines changed

6 files changed

+108
-25
lines changed

src/main/java/gwt/material/design/addins/client/fileuploader/MaterialFileUploader.java

Lines changed: 31 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ public void initDropzone() {
120120
if(!isPreview()){
121121
uploadPreview.setDisplay(Display.NONE);
122122
}
123-
initDropzone(getElement(), uploadPreview.getUploadCollection().getItem().getElement(), previews, uploadPreview.getElement(),uploadPreview.getUploadHeader().getUploadedFiles().getElement(), getUrl(), getMaxFileSize(), getMaxFiles(), getMethod().getCssName(), isAutoQueue(), getAcceptedFiles(), getClickable());
123+
initDropzone(getElement(), uploadPreview.getUploadCollection().getItem().getElement(), previews, uploadPreview.getElement(),uploadPreview.getUploadHeader().getUploadedFiles().getElement(), getUrl(), getMaxFileSize(), getMaxFiles(), getMethod().getCssName(), isAutoQueue(), getAcceptedFiles(), getClickable(), preview);
124124
}
125125

126126
/**
@@ -129,7 +129,7 @@ public void initDropzone() {
129129
* @param e
130130
* @param url
131131
*/
132-
private native void initDropzone(Element e, Element template, String previews, Element uploadPreview, Element uploadedFiles, String url, int maxFileSize, int maxFiles, String method, boolean autoQueue, String acceptedFiles, String clickable) /*-{
132+
private native void initDropzone(Element e, Element template, String previews, Element uploadPreview, Element uploadedFiles, String url, int maxFileSize, int maxFiles, String method, boolean autoQueue, String acceptedFiles, String clickable,boolean preview) /*-{
133133
var that = this;
134134
$wnd.jQuery(document).ready(function() {
135135
var previewNode = $wnd.jQuery(template);
@@ -138,7 +138,6 @@ private native void initDropzone(Element e, Element template, String previews, E
138138
var previewTemplate = previewNode.parent().html();
139139
140140
var totalFiles = 0;
141-
142141
var zdrop = new $wnd.Dropzone(e, {
143142
url: url,
144143
maxFilesize: maxFileSize,
@@ -153,7 +152,9 @@ private native void initDropzone(Element e, Element template, String previews, E
153152
154153
zdrop.on('drop', function () {
155154
that.@gwt.material.design.addins.client.fileuploader.MaterialFileUploader::fireDropEvent()();
156-
$wnd.jQuery(e).removeClass("active");
155+
if(preview) {
156+
$wnd.jQuery(e).removeClass("active");
157+
}
157158
});
158159
159160
zdrop.on('dragstart', function () {
@@ -166,7 +167,9 @@ private native void initDropzone(Element e, Element template, String previews, E
166167
167168
zdrop.on('dragenter', function () {
168169
that.@gwt.material.design.addins.client.fileuploader.MaterialFileUploader::fireDragEnterEvent()();
169-
$wnd.jQuery(e).addClass("active");
170+
if(preview){
171+
$wnd.jQuery(e).addClass("active");
172+
}
170173
});
171174
172175
zdrop.on('dragover', function () {
@@ -175,7 +178,9 @@ private native void initDropzone(Element e, Element template, String previews, E
175178
176179
zdrop.on('dragleave', function () {
177180
that.@gwt.material.design.addins.client.fileuploader.MaterialFileUploader::fireDragLeaveEvent()();
178-
$wnd.jQuery(e).removeClass("active");
181+
if(preview) {
182+
$wnd.jQuery(e).removeClass("active");
183+
}
179184
});
180185
181186
zdrop.on("addedfile", function(file) {
@@ -204,10 +209,10 @@ private native void initDropzone(Element e, Element template, String previews, E
204209
});
205210
206211
zdrop.on("totaluploadprogress", function (progress) {
212+
that.@gwt.material.design.addins.client.fileuploader.MaterialFileUploader::fireTotalUploadProgressEvent(*)(progress);
207213
var progr = document.querySelector(".progress .determinate");
208214
if (progr === undefined || progr === null)
209215
return;
210-
211216
progr.style.width = progress + "%";
212217
});
213218
@@ -402,7 +407,7 @@ public HandlerRegistration addAddedFileHandler(AddedFileEvent.AddedFileHandler<U
402407

403408
@Override
404409
public void fireAddedFileEvent(String fileName, String lastModified, String size, String type) {
405-
AddedFileEvent.fire(this, new UploadFile(fileName, new Date(lastModified), Long.parseLong(size), type));
410+
AddedFileEvent.fire(this, new UploadFile(fileName, new Date(lastModified), Double.parseDouble(size), type));
406411
}
407412

408413
@Override
@@ -412,7 +417,7 @@ public HandlerRegistration addRemovedFileHandler(RemovedFileEvent.RemovedFileHan
412417

413418
@Override
414419
public void fireRemovedFileEvent(String fileName, String lastModified, String size, String type) {
415-
RemovedFileEvent.fire(this, new UploadFile(fileName, new Date(lastModified), Long.parseLong(size), type));
420+
RemovedFileEvent.fire(this, new UploadFile(fileName, new Date(lastModified), Double.parseDouble(size), type));
416421
}
417422

418423
@Override
@@ -422,7 +427,17 @@ public HandlerRegistration addErrorHandler(ErrorEvent.ErrorHandler<UploadFile> h
422427

423428
@Override
424429
public void fireErrorEvent(String fileName, String lastModified, String size, String type, String responseCode, String responseMessage) {
425-
ErrorEvent.fire(this, new UploadFile(fileName, new Date(lastModified), Long.parseLong(size), type), new UploadResponse(responseCode, responseMessage));
430+
ErrorEvent.fire(this, new UploadFile(fileName, new Date(lastModified), Double.parseDouble(size), type), new UploadResponse(responseCode, responseMessage));
431+
}
432+
433+
@Override
434+
public HandlerRegistration addTotalUploadProgressHandler(TotalUploadProgressEvent.TotalUploadProgressHandler handler) {
435+
return addHandler(handler, TotalUploadProgressEvent.TYPE);
436+
}
437+
438+
@Override
439+
public void fireTotalUploadProgressEvent(double progress) {
440+
TotalUploadProgressEvent.fire(this, progress);
426441
}
427442

428443
@Override
@@ -432,7 +447,7 @@ public HandlerRegistration addSendingHandler(SendingEvent.SendingHandler<UploadF
432447

433448
@Override
434449
public void fireSendingEvent(String fileName, String lastModified, String size, String type) {
435-
SendingEvent.fire(this, new UploadFile(fileName, new Date(lastModified), Long.parseLong(size), type));
450+
SendingEvent.fire(this, new UploadFile(fileName, new Date(lastModified), Double.parseDouble(size), type));
436451
}
437452

438453
@Override
@@ -442,7 +457,7 @@ public HandlerRegistration addSuccessHandler(SuccessEvent.SuccessHandler<UploadF
442457

443458
@Override
444459
public void fireSuccessEvent(String fileName, String lastModified, String size, String type) {
445-
SuccessEvent.fire(this, new UploadFile(fileName, new Date(lastModified), Long.parseLong(size), type));
460+
SuccessEvent.fire(this, new UploadFile(fileName, new Date(lastModified), Double.parseDouble(size), type));
446461
}
447462

448463
@Override
@@ -452,7 +467,7 @@ public HandlerRegistration addCompleteHandler(CompleteEvent.CompleteHandler<Uplo
452467

453468
@Override
454469
public void fireCompleteEvent(String fileName, String lastModified, String size, String type) {
455-
CompleteEvent.fire(this, new UploadFile(fileName, new Date(lastModified), Long.parseLong(size), type));
470+
CompleteEvent.fire(this, new UploadFile(fileName, new Date(lastModified), Double.parseDouble(size), type));
456471
}
457472

458473
@Override
@@ -462,7 +477,7 @@ public HandlerRegistration addCancelHandler(CanceledEvent.CanceledHandler<Upload
462477

463478
@Override
464479
public void fireCancelEvent(String fileName, String lastModified, String size, String type) {
465-
CanceledEvent.fire(this, new UploadFile(fileName, new Date(lastModified), Long.parseLong(size), type));
480+
CanceledEvent.fire(this, new UploadFile(fileName, new Date(lastModified), Double.parseDouble(size), type));
466481
}
467482

468483
@Override
@@ -472,7 +487,7 @@ public HandlerRegistration addMaxFilesReachHandler(MaxFilesReachedEvent.MaxFiles
472487

473488
@Override
474489
public void fireMaxFilesReachEvent(String fileName, String lastModified, String size, String type) {
475-
MaxFilesReachedEvent.fire(this, new UploadFile(fileName, new Date(lastModified), Long.parseLong(size), type));
490+
MaxFilesReachedEvent.fire(this, new UploadFile(fileName, new Date(lastModified), Double.parseDouble(size), type));
476491
}
477492

478493
@Override
@@ -490,7 +505,7 @@ public void setClickable(String clickable) {
490505

491506
@Override
492507
public void fireMaxFilesExceededEvent(String fileName, String lastModified, String size, String type) {
493-
MaxFilesReachedEvent.fire(this, new UploadFile(fileName, new Date(lastModified), Long.parseLong(size), type));
508+
MaxFilesReachedEvent.fire(this, new UploadFile(fileName, new Date(lastModified), Double.parseDouble(size), type));
494509
}
495510

496511
public boolean isPreview() {

src/main/java/gwt/material/design/addins/client/fileuploader/base/HasFileUpload.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,15 @@ public interface HasFileUpload<T> extends HasHandlers {
100100

101101
void fireErrorEvent(String fileName, String lastModified, String size, String type, String responseCode, String responseMessage);
102102

103+
/**
104+
* Called with the total uploadProgress (0-100). This event can be used to show the overall upload progress of all files.
105+
* @param handler
106+
* @return
107+
*/
108+
HandlerRegistration addTotalUploadProgressHandler(TotalUploadProgressEvent.TotalUploadProgressHandler handler);
109+
110+
void fireTotalUploadProgressEvent(double progress);
111+
103112
/**
104113
* Called just before each file is sent. Gets the xhr object and the formData objects as second and third parameters, so you can modify them (for example to add a CSRF token) or add additional data.
105114
* @param handler

src/main/java/gwt/material/design/addins/client/fileuploader/base/UploadFile.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,12 @@ public class UploadFile implements Serializable {
3232

3333
private String name;
3434
private Date lastModified;
35-
private long fileSize;
35+
private double fileSize;
3636
private String type;
3737

3838
public UploadFile() {}
3939

40-
public UploadFile(String name, Date lastModified, long fileSize, String type) {
40+
public UploadFile(String name, Date lastModified, double fileSize, String type) {
4141
this.name = name;
4242
this.lastModified = lastModified;
4343
this.fileSize = fileSize;
@@ -60,11 +60,12 @@ public void setLastModified(Date lastModified) {
6060
this.lastModified = lastModified;
6161
}
6262

63-
public long getFileSize() {
64-
return fileSize;
63+
public double getFileSize() {
64+
double kb = fileSize / 1024;
65+
return kb / 1024;
6566
}
6667

67-
public void setFileSize(long fileSize) {
68+
public void setFileSize(double fileSize) {
6869
this.fileSize = fileSize;
6970
}
7071

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package gwt.material.design.addins.client.fileuploader.events;
2+
3+
/*
4+
* #%L
5+
* GwtMaterial
6+
* %%
7+
* Copyright (C) 2015 - 2016 GwtMaterialDesign
8+
* %%
9+
* Licensed under the Apache License, Version 2.0 (the "License");
10+
* you may not use this file except in compliance with the License.
11+
* You may obtain a copy of the License at
12+
*
13+
* http://www.apache.org/licenses/LICENSE-2.0
14+
*
15+
* Unless required by applicable law or agreed to in writing, software
16+
* distributed under the License is distributed on an "AS IS" BASIS,
17+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18+
* See the License for the specific language governing permissions and
19+
* limitations under the License.
20+
* #L%
21+
*/
22+
23+
24+
import com.google.gwt.event.shared.EventHandler;
25+
import com.google.gwt.event.shared.GwtEvent;
26+
import com.google.gwt.event.shared.HasHandlers;
27+
28+
public class TotalUploadProgressEvent extends GwtEvent<TotalUploadProgressEvent.TotalUploadProgressHandler> {
29+
30+
public interface TotalUploadProgressHandler extends EventHandler {
31+
void onTotalUploadProgress(TotalUploadProgressEvent event);
32+
}
33+
34+
public static final Type<TotalUploadProgressHandler> TYPE = new Type<>();
35+
36+
private final double progress;
37+
38+
public TotalUploadProgressEvent(double progress) {
39+
this.progress = progress;
40+
}
41+
42+
public static void fire(HasHandlers source, double progress) {
43+
source.fireEvent(new TotalUploadProgressEvent(progress));
44+
}
45+
46+
public double getProgress() {
47+
return progress;
48+
}
49+
50+
@Override
51+
public Type<TotalUploadProgressHandler> getAssociatedType() {
52+
return TYPE;
53+
}
54+
55+
@Override
56+
protected void dispatch(TotalUploadProgressHandler handler) {
57+
handler.onTotalUploadProgress(this);
58+
}
59+
}

src/main/resources/gwt/material/design/addins/client/fileuploader/resources/css/dropzone.css

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
background: white;
44
width: 100%;
55
height: 400px;
6-
border: 1px solid #e9e9e9;
76
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
87
-moz-box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
98
-webkit-box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
@@ -93,7 +92,7 @@
9392
height: 100%;
9493
top: 0;
9594
text-align: center;
96-
padding-top: 10%;
95+
padding-top: 20px;
9796
color: #2196F3;
9897
}
9998
.preview-container .previews{

src/main/resources/gwt/material/design/addins/client/fileuploader/resources/css/dropzone.min.css

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
background: white;
44
width: 100%;
55
height: 400px;
6-
border: 1px solid #e9e9e9;
76
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
87
-moz-box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
98
-webkit-box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
@@ -78,6 +77,7 @@
7877
.preview-container .previews{
7978
max-height: 400px;
8079
overflow: auto;
80+
width: 325px;
8181
}
8282
.preview-container .previews .zdrop-info{
8383
width: 220px;
@@ -92,7 +92,7 @@
9292
height: 100%;
9393
top: 0;
9494
text-align: center;
95-
padding-top: 10%;
95+
padding-top: 20px;
9696
color: #2196F3;
9797
}
9898
.preview-container .previews{

0 commit comments

Comments
 (0)