	public Canvas getViewPanel() {
		VLayout layout = new VLayout();
		layout.setWidth100();
		layout.setHeight100();
		layout.setMembersMargin(10);

		// switch off lazy loading, we want to get everything
		GwtCommandDispatcher.getInstance().setUseLazyLoading(false);

		VLayout mapLayout = new VLayout();
		mapLayout.setShowEdges(true);

		// Map with ID featureListGridMap is defined in the XML configuration.
		final MapWidget map = new MapWidget("featureListGridMap", "gwt-samples");
		map.setController(new PanController(map));
		mapLayout.addMember(map);

		// Create a layout with a FeatureListGrid in it:
		final FeatureListGrid grid = new FeatureListGrid(map.getMapModel());
		grid.setShowEdges(true);
		grid.setShowResizeBar(true);

		// Add a trigger to fill the grid when the map has finished loading:
		map.getMapModel().addMapModelHandler(new MapModelHandler() {

			public void onMapModelChange(MapModelEvent event) {
				MapModel mapModel = map.getMapModel();
				VectorLayer layer = (VectorLayer) mapModel.getLayer("countries110mGridLayer");
				grid.setLayer(layer);
				Bbox bounds = mapModel.getMapView().getBounds();
				layer.getFeatureStore().queryAndSync(bounds, null, null, new TileFunction<VectorTile>() {

					public void execute(VectorTile tile) {
						tile.getFeatures(GeomajasConstant.FEATURE_INCLUDE_ALL, new LazyLoadCallback() {

							public void execute(List<Feature> response) {
								for (Feature feature : response) {
									grid.addFeature(feature);
								}
							}
						});
					}
				});
			}
		});

		layout.addMember(grid);
		layout.addMember(mapLayout);

		return layout;
	}