package com.gwt.ui.client.gwtupld;
import java.util.List;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.DivElement;
import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.LIElement;
import com.google.gwt.dom.client.UListElement;
import com.google.gwt.resources.client.CssResource;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
public class FileUploaderList extends FileUploader {
interface Binder extends UiBinder<DivElement, FileUploaderList> {}
private static Binder binder = GWT.create(Binder.class);
@UiField MyCss style;
interface MyCss extends CssResource {
String dropzone();
String dropzoneHover();
}
@UiField UListElement list;
@UiField DivElement dropZoneAndButtonContainer;
public FileUploaderList(Options options) {
super(options);
setElement(binder.createAndBindUi(this));
initialize();
}
@Override
protected Element getDropZone() {
return dropZoneAndButtonContainer;
}
@Override
public void updateView(List<FileInfo> files) {
while (list.hasChildNodes()) {
list.getChild(0).removeFromParent();
}
initAddFileInfos(files);
}
@Override
protected void onDropEvent() {
getDropZone().removeClassName(style.dropzoneHover());
}
@Override
protected void onDragLeaveEvent() {
getDropZone().removeClassName(style.dropzoneHover());
}
@Override
protected void onDragEnterEvent() {
getDropZone().addClassName(style.dropzoneHover());
}
@Override
public void onCancel(String id, String filename) {
}
@Override
protected void updateExactFileInfo(String justAddedId) {
int index = -1;
if (list.getChildCount() > 0) {
for (int i = 0; i < list.getChildCount(); i++) {
LIElement li = (LIElement) list.getChild(i);
if (li.getAttribute("id").equals(justAddedId)) {
index = i;
break;
}
}
}
updateFileInfo(index, fileInfos.get(justAddedId));
}
private void updateFileInfo(int index, FileInfo fileInfo) {
LIElement li;
if (index != -1) {
li = (LIElement) list.getChild(index);
} else {
li = Document.get().createLIElement();
li.setAttribute("id", fileInfo.getId());
list.appendChild(li);
}
li.setInnerText(
fileInfo.getName()
+ ", " + fileInfo.getPercentageReady() + "%"
);
}
}