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 [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-web-toolkit?hl=en.

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
	}
}

Reply via email to