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

		// Create horizontal layout for the buttons:
		HLayout buttonLayout = new HLayout();
		buttonLayout.setMembersMargin(10);
		buttonLayout.setHeight(25);

		// Create a button that displays the login window on click:
		final IButton loginButton = new IButton("Log in");
		loginButton.setIcon("[ISOMORPHIC]/geomajas/silk/key.png");
		loginButton.addClickHandler(new ClickHandler() {

			public void onClick(ClickEvent event) {
				LoginWindow loginWindow = new LoginWindow();
				loginWindow.setKeepInParentRect(true);
				layout.addMember(loginWindow);
			}
		});

		// Add a login handler that disables the login button on successful login:
		Authentication.getInstance().addLoginHandler(new LoginHandler() {

			public void onLoginFailure(LoginFailureEvent event) {
			}

			public void onLoginSuccess(LoginSuccessEvent event) {
				loginButton.setDisabled(true);
			}
		});

		// Create a log out button, and attach an event handler:
		LogoutButton logoutButton = new LogoutButton(new LogoutHandler() {

			// Show localized messages:
			public void onLogoutFailure(LogoutFailureEvent event) {
				SC.warn(I18nProvider.getSampleMessages().logoutFailure());
			}

			// Logout success - enable the login button again:
			public void onLogoutSuccess(LogoutSuccessEvent event) {
				SC.say(I18nProvider.getSampleMessages().logoutSuccess());
				loginButton.setDisabled(false);
			}
		});

		buttonLayout.addMember(loginButton);
		buttonLayout.addMember(logoutButton);
		layout.addMember(buttonLayout);
		return layout;
	}