213 lines
6.6 KiB
Java
213 lines
6.6 KiB
Java
/**
|
|
*
|
|
*/
|
|
package org.gcube.portlets.widgets.workspaceuploader.client.uploader;
|
|
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
|
|
import org.gcube.portlets.widgets.workspaceuploader.client.events.HideMonitorEvent;
|
|
import org.gcube.portlets.widgets.workspaceuploader.client.resource.ProgressBarCssAndImages;
|
|
import org.gcube.portlets.widgets.workspaceuploader.shared.WorkspaceUploaderItem;
|
|
import org.gcube.portlets.widgets.workspaceuploader.shared.WorkspaceUploaderItem.UPLOAD_STATUS;
|
|
|
|
import com.google.gwt.core.shared.GWT;
|
|
import com.google.gwt.dom.client.Style.Unit;
|
|
import com.google.gwt.event.dom.client.ClickEvent;
|
|
import com.google.gwt.event.dom.client.ClickHandler;
|
|
import com.google.gwt.event.logical.shared.CloseEvent;
|
|
import com.google.gwt.event.logical.shared.CloseHandler;
|
|
import com.google.gwt.event.shared.HandlerManager;
|
|
import com.google.gwt.user.client.Window;
|
|
import com.google.gwt.user.client.Window.ClosingEvent;
|
|
import com.google.gwt.user.client.ui.Button;
|
|
import com.google.gwt.user.client.ui.HTML;
|
|
import com.google.gwt.user.client.ui.HasVerticalAlignment;
|
|
import com.google.gwt.user.client.ui.HorizontalPanel;
|
|
import com.google.gwt.user.client.ui.ScrollPanel;
|
|
import com.google.gwt.user.client.ui.VerticalPanel;
|
|
|
|
|
|
/**
|
|
* The Class MonitorPanel.
|
|
*
|
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
|
* Sep 24, 2015
|
|
*/
|
|
public class MonitorPanel extends ScrollPanel{
|
|
|
|
private VerticalPanel vpListUpload = new VerticalPanel();
|
|
private VerticalPanel mainPanel = new VerticalPanel();
|
|
private Map<String, WorkspaceUploaderItem> mapUploading = new HashMap<String, WorkspaceUploaderItem>();
|
|
private Map<String, UploaderProgressView> mapPanels = new HashMap<String, UploaderProgressView>();
|
|
private HandlerManager eventBus;
|
|
private HorizontalPanel hpNoUploads = new HorizontalPanel();
|
|
|
|
private HTML labelNumbUpload = new HTML("Uploaded 0 of 0");
|
|
private HorizontalPanel hpBottomPanel = new HorizontalPanel();
|
|
|
|
private HorizontalPanel hpCloseMonitor = new HorizontalPanel();
|
|
|
|
static {
|
|
ProgressBarCssAndImages.INSTANCE.css().ensureInjected();
|
|
}
|
|
/**
|
|
* Instantiates a new monitor panel.
|
|
*
|
|
* @param bus the event bus
|
|
*/
|
|
public MonitorPanel(HandlerManager bus) {
|
|
this.eventBus = bus;
|
|
initPanelNoUploads();
|
|
addCloseHandler();
|
|
|
|
//NUMBER OF UPLOADS
|
|
hpBottomPanel.getElement().setId("hpBottomPanel");
|
|
// hpNumbUpload.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
|
|
hpBottomPanel.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE);
|
|
hpBottomPanel.setWidth("100%");
|
|
hpBottomPanel.add(labelNumbUpload);
|
|
|
|
// mainPanel.add(hpNumbUpload);
|
|
// mainPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
|
|
|
|
//LIST OF UPLOADS
|
|
vpListUpload.getElement().getStyle().setMargin(5, Unit.PX);
|
|
// setHeight("500px");
|
|
vpListUpload.add(hpNoUploads);
|
|
ScrollPanel scroll = new ScrollPanel();
|
|
scroll.add(vpListUpload);
|
|
scroll.setHeight("200px");
|
|
// scroll.getElement().getStyle().setBorderStyle(BorderStyle.SOLID);
|
|
// scroll.getElement().getStyle().setBorderWidth(1.0, Unit.PX);
|
|
|
|
mainPanel.add(scroll);
|
|
|
|
//CLOSE MONITOR
|
|
// hpCloseMonitor.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_RIGHT);
|
|
// hpCloseMonitor.setVerticalAlignment(HasVerticalAlignment.ALIGN_BOTTOM);
|
|
Button bClose = new Button("Close");
|
|
bClose.addClickHandler(new ClickHandler() {
|
|
|
|
@Override
|
|
public void onClick(ClickEvent event) {
|
|
eventBus.fireEvent(new HideMonitorEvent());
|
|
}
|
|
});
|
|
|
|
// hpNumbUpload.add(bClose);
|
|
|
|
hpCloseMonitor.add(bClose);
|
|
hpCloseMonitor.addStyleName("align-right-close");
|
|
hpBottomPanel.add(hpCloseMonitor);
|
|
hpBottomPanel.getElement().getStyle().setMarginTop(5.0, Unit.PX);
|
|
mainPanel.setWidth("100%");
|
|
mainPanel.add(hpBottomPanel);
|
|
|
|
add(mainPanel);
|
|
// RootPanel.get("workspace-uploader").add(verticalPanel);
|
|
}
|
|
|
|
|
|
private void updateNumberUpload(){
|
|
int numCompleted = 0;
|
|
for (String uploadKey : mapUploading.keySet()) {
|
|
WorkspaceUploaderItem uploader = mapUploading.get(uploadKey);
|
|
if(uploader.getUploadStatus().equals(UPLOAD_STATUS.COMPLETED))
|
|
numCompleted++;
|
|
}
|
|
|
|
labelNumbUpload.setHTML("Uploaded "+numCompleted +" of "+mapUploading.size());
|
|
}
|
|
|
|
private void initPanelNoUploads(){
|
|
hpNoUploads = new HorizontalPanel();
|
|
hpNoUploads.addStyleName("noUploads");
|
|
hpNoUploads.add(new HTML("No Uploads"));
|
|
}
|
|
|
|
private void removeNoUploads(){
|
|
|
|
try{
|
|
vpListUpload.remove(hpNoUploads);
|
|
}catch(Exception e){
|
|
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Update workspace uploder.
|
|
*
|
|
* @param uploader the uploader
|
|
*/
|
|
public void updateWorkspaceUploder(WorkspaceUploaderItem uploader){
|
|
|
|
if(uploader==null){
|
|
GWT.log("Skipping update progress view, uploader is null");
|
|
return;
|
|
}
|
|
|
|
mapUploading.put(uploader.getClientUploadKey(), uploader);
|
|
|
|
if(mapPanels.get(uploader.getClientUploadKey())!=null){
|
|
UploaderProgressView upv = mapPanels.get(uploader.getClientUploadKey());
|
|
upv.update(uploader);
|
|
}else{
|
|
GWT.log("Skipping update progress view, uploader: "+uploader.getClientUploadKey() +" "+uploader.getFile().toString()+", not found!");
|
|
}
|
|
|
|
updateNumberUpload();
|
|
}
|
|
|
|
/**
|
|
* New workspace uploder.
|
|
*
|
|
* @param uploader the uploader
|
|
* @param fileName the file name
|
|
*/
|
|
public void newWorkspaceUploder(WorkspaceUploaderItem uploader, final String fileName){
|
|
removeNoUploads();
|
|
mapUploading.put(uploader.getClientUploadKey(), uploader);
|
|
UploaderProgressView upv = new UploaderProgressView(uploader, fileName, eventBus);
|
|
mapPanels.put(uploader.getClientUploadKey(), upv);
|
|
VerticalPanel upvPanel = upv.getPanel();
|
|
upvPanel.addStyleName("upladerMargin");
|
|
// vpListUpload.insert(upvPanel, 0);
|
|
vpListUpload.add(upvPanel);
|
|
|
|
updateNumberUpload();
|
|
}
|
|
|
|
/**
|
|
* Adds the close handler.
|
|
*/
|
|
private void addCloseHandler(){
|
|
|
|
Window.addWindowClosingHandler(new Window.ClosingHandler() {
|
|
@Override
|
|
public void onWindowClosing(ClosingEvent event) {
|
|
// GWT.log("Closing");
|
|
String msg = "";
|
|
for (String uploadKey : mapUploading.keySet()) {
|
|
WorkspaceUploaderItem uploader = mapUploading.get(uploadKey);
|
|
GWT.log("Closing uploader status: "+uploader.getFile().getFileName() +" status: "+uploader.getUploadStatus());
|
|
if(uploader.getUploadStatus().equals(UPLOAD_STATUS.WAIT) || uploader.getUploadStatus().equals(UPLOAD_STATUS.IN_PROGRESS))
|
|
msg+=uploader.getFile().getFileName()+";";
|
|
}
|
|
|
|
if(msg!=null && !msg.isEmpty()){
|
|
event.setMessage("Abort upload? "+msg);
|
|
}
|
|
}
|
|
});
|
|
|
|
Window.addCloseHandler(new CloseHandler<Window>() {
|
|
@Override
|
|
public void onClose(CloseEvent<Window> event) {
|
|
// Window.alert("bye bye Closed");
|
|
}
|
|
});
|
|
}
|
|
|
|
}
|