import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.ui.RootPanel;
public class FilePullEP implements EntryPoint {
@Override
public void onModuleLoad() {
RootPanel rp= RootPanel.get("pg");
FileSelector fileSelector = new FileSelector();
rp.add(fileSelector);
}
}
import java.util.ArrayList;
import java.util.Comparator;
import com.gif.fmdi.shared.FileProperties;
import com.google.gwt.cell.client.ButtonCell;
import com.google.gwt.cell.client.FieldUpdater;
import com.google.gwt.cell.client.TextCell;
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.user.cellview.client.Column;
import com.google.gwt.user.cellview.client.ColumnSortEvent.ListHandler;
import com.google.gwt.user.cellview.client.DataGrid;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.PopupPanel;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.view.client.DefaultSelectionEventManager;
import com.google.gwt.view.client.ListDataProvider;
import com.google.gwt.view.client.ProvidesKey;
import com.google.gwt.view.client.SelectionModel;
import com.google.gwt.view.client.SingleSelectionModel;
import com.google.gwt.event.dom.client.ClickEvent;
public class FileSelector extends Composite {
private static FileSelectorUiBinder uiBinder = GWT
.create(FileSelectorUiBinder.class);
private final FilePullServiceAsync filePullSvc = GWT
.create(FilePullService.class);
private final SelectionModel<FileProperties> selectionModel;
private ListDataProvider<FileProperties> dataProvider = new ListDataProvider<FileProperties>();
@UiField
DataGrid<FileProperties> dataGrid;
@UiField
TextBox txtFileName;
@UiField
TextBox txtDirPath;
@UiField
Button btnListFiles;
@UiField
Button btnDownloadFile;
interface FileSelectorUiBinder extends UiBinder<Widget, FileSelector> {
}
public FileSelector() {
final ProvidesKey<FileProperties> KEY_PROVIDER = new ProvidesKey<FileProperties>() {
public Object getKey(FileProperties item) {
return item == null ? null : item.getName();
}
};
ListHandler<FileProperties> sortHandler = new ListHandler<FileProperties>(
dataProvider.getList());
dataGrid.addColumnSortHandler(sortHandler);
selectionModel = new SingleSelectionModel<FileProperties>(KEY_PROVIDER);
/*
* dataGrid.setSelectionModel(selectionModel,
* DefaultSelectionEventManager .<FileProperties>
* createCheckboxManager());
*/
initTableColumns(selectionModel, sortHandler);
dataProvider.addDataDisplay(dataGrid);
initWidget(uiBinder.createAndBindUi(this));
}
private void initTableColumns(
final SelectionModel<FileProperties> selectionModel,
ListHandler<FileProperties> sortHandler) {
// File name.
Column<FileProperties, String> fileNameColumn = new Column<FileProperties, String>(
new TextCell()) {
@Override
public String getValue(FileProperties object) {
return object.getName();
}
};
fileNameColumn.setSortable(true);
sortHandler.setComparator(fileNameColumn,
new Comparator<FileProperties>() {
@Override
public int compare(FileProperties o1, FileProperties o2) {
return o1.getAbsolutePath().compareTo(
o2.getAbsolutePath());
}
});
dataGrid.addColumn(fileNameColumn, "File Name");
// File Size
Column<FileProperties, String> fileSizeColumn = new Column<FileProperties, String>(
new TextCell()) {
@Override
public String getValue(FileProperties object) {
return object.getName();
}
};
fileSizeColumn.setSortable(true);
sortHandler.setComparator(fileSizeColumn,
new Comparator<FileProperties>() {
@Override
public int compare(FileProperties o1, FileProperties o2) {
if (o1.getSize() == o2.getSize()) {
return 0;
}
if (o1.getSize() < o2.getSize()) {
return -1;
}
return 1;
}
});
dataGrid.addColumn(fileSizeColumn, "Size");
// File Modification date
Column<FileProperties, String> fileModifiedColumn = new Column<FileProperties, String>(
new TextCell()) {
@Override
public String getValue(FileProperties object) {
return object.getName();
}
};
fileModifiedColumn.setSortable(true);
sortHandler.setComparator(fileModifiedColumn,
new Comparator<FileProperties>() {
@Override
public int compare(FileProperties o1, FileProperties o2) {
if (o1.getSize() == o2.getSize()) {
return 0;
}
if (o1.getSize() < o2.getSize()) {
return -1;
}
return 1;
}
});
dataGrid.addColumn(fileModifiedColumn, "Last Modified");
// Download Button
ButtonCell buttonCell = new ButtonCell();
Column<FileProperties, String> fileDownloadColumn = new Column<FileProperties, String>(
buttonCell) {
@Override
public String getValue(FileProperties arg0) {
return "Download";
}
};
fileDownloadColumn.setSortable(false);
fileDownloadColumn
.setFieldUpdater(new FieldUpdater<FileProperties, String>() {
@Override
public void update(int arg0, FileProperties arg1,
String arg2) {
final PopupPanel ppLoad = Utils.showWait("Downloading "
+ arg1.getName());
filePullSvc.pullFile(arg1.getName(),
txtDirPath.getText(),
new AsyncCallback<Long>() {
@Override
public void onSuccess(Long arg0) {
ppLoad.removeFromParent();
Window.alert("Download finished");
}
@Override
public void onFailure(Throwable caught) {
Utils.showDialogue(
"Something went wrong", caught,
true);
}
});
}
});
dataGrid.addColumn(fileDownloadColumn, "Download");
}
@UiHandler("btnListFiles")
void onBtnListFilesClick(ClickEvent event) {
filePullSvc.getFileList(this.txtFileName.getText().trim(),
new AsyncCallback<ArrayList<FileProperties>>() {
@Override
public void onSuccess(ArrayList<FileProperties> fileList) {
dataProvider.getList().clear();
dataProvider.getList().addAll(fileList);
dataGrid.setStyleName("gridStyle1");
}
@Override
public void onFailure(Throwable caught) {
Utils.showDialogue("Something went wrong ...", caught,
true);
}
});
}
@UiHandler("btnDownloadFile")
void onBtnDownloadFileClick(ClickEvent event) {
// Not implemented yet
}
}
Hi,
In my project, when I load only the composite with bare elements, it will load fine, but when I have the sorthandler defined for datgrid, the composite won't load at all. I have attached the code for entrypoint and composite.
If the constructor is changed only to have initwidget, then the composite will load fine.
I am using Eclipse Juno and GWT 2.5 rc1 on Windows 7, and testing on chrome.
Please suggest a solution.
Thanks.
You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group.
To view this discussion on the web visit https://groups.google.com/d/msg/google-web-toolkit/-/yuevncO1610J.
To post to this group, send email to google-web-toolkit@googlegroups.com.
To unsubscribe from this group, send email to google-web-toolkit+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
No comments:
Post a Comment