/* * This is part of Geomajas, a GIS framework, http://www.geomajas.org/. * * Copyright 2008-2015 Geosparc nv, http://www.geosparc.com/, Belgium. * * The program is available in open source according to the GNU Affero * General Public License. All contributions in this program are covered * by the Geomajas Contributors License Agreement. For full licensing * details, see LICENSE.txt in the project root. */ package org.geomajas.gwt.example.client; import com.google.gwt.core.client.EntryPoint; import com.google.gwt.core.client.GWT; import com.smartgwt.client.widgets.Label; import org.geomajas.gwt.client.command.GwtCommandDispatcher; import org.geomajas.gwt.client.command.event.TokenChangedEvent; import org.geomajas.gwt.client.command.event.TokenChangedHandler; import org.geomajas.gwt.example.base.ExampleLayout; import org.geomajas.gwt.example.base.SampleTree; import org.geomajas.gwt.example.base.SampleTreeNode; import org.geomajas.gwt.example.base.SampleTreeNodeRegistry; import org.geomajas.gwt.example.client.i18n.ShowcaseMessages; import org.geomajas.gwt.example.client.layer.OpenCycleMapSample; import org.geomajas.gwt.example.client.layer.TmsSample; import org.geomajas.gwt.example.client.security.AttributeSecuritySample; import org.geomajas.gwt.example.client.security.CommandSecuritySample; import org.geomajas.gwt.example.client.security.FilterSecuritySample; import org.geomajas.gwt.example.client.security.LayerSecuritySample; import org.geomajas.gwt.example.client.security.ShowcaseTokenRequestHandler; import org.geomajas.gwt.example.client.security.ToolSecuritySample; import org.geomajas.plugin.staticsecurity.client.util.SsecAccess; /** * <p> * The GWT test case sample application. Here here! * </p> * * @author Pieter De Graef */ public class GwtFaceExampleStandalone implements EntryPoint { private static final ShowcaseMessages MESSAGES = GWT.create(ShowcaseMessages.class); private static final String SECURITY_GROUP = "Security"; // CHECKSTYLE VISIBILITY MODIFIER: OFF /** Runnable which should be run on successful login. */ public static Runnable runOnLogin; // CHECKSTYLE VISIBILITY MODIFIER: ON @Override public void onModuleLoad() { SampleTree.setTreeTitle(MESSAGES.treeTitle()); // layer samples SampleTreeNodeRegistry.addSampleTreeNode(new SampleTreeNode(MESSAGES.openCycleMapTitle(), "[ISOMORPHIC]/geomajas/osgeo/layer-raster.png", OpenCycleMapSample.TITLE, "Layers", OpenCycleMapSample.FACTORY)); SampleTreeNodeRegistry.addSampleTreeNode(new SampleTreeNode(MESSAGES.tmsTitle(), "[ISOMORPHIC]/geomajas/osgeo/layer-raster.png", TmsSample.TITLE, "Layers", TmsSample.FACTORY)); // Security samples: SampleTreeNodeRegistry.addSampleTreeNode(new SampleTreeNode(MESSAGES.treeGroupSecurity(), "[ISOMORPHIC]/geomajas/silk/key.png", SECURITY_GROUP, "topLevel")); SampleTreeNodeRegistry.addSampleTreeNode(new SampleTreeNode(MESSAGES.layerSecurityTitle(), "[ISOMORPHIC]/geomajas/staticsecurity/key_go.png", LayerSecuritySample.LAYER_SECURITY_TITLE, SECURITY_GROUP, LayerSecuritySample.FACTORY)); SampleTreeNodeRegistry.addSampleTreeNode(new SampleTreeNode(MESSAGES.filterSecurityTitle(), "[ISOMORPHIC]/geomajas/staticsecurity/key_go.png", FilterSecuritySample.TITLE, SECURITY_GROUP, FilterSecuritySample.FACTORY)); SampleTreeNodeRegistry.addSampleTreeNode(new SampleTreeNode(MESSAGES.attributeSecurityTitle(), "[ISOMORPHIC]/geomajas/staticsecurity/key_go.png", AttributeSecuritySample.TITLE, SECURITY_GROUP, AttributeSecuritySample.FACTORY)); SampleTreeNodeRegistry.addSampleTreeNode(new SampleTreeNode(MESSAGES.commandSecurityTitle(), "[ISOMORPHIC]/geomajas/staticsecurity/key_go.png", CommandSecuritySample.TITLE, SECURITY_GROUP, CommandSecuritySample.FACTORY)); SampleTreeNodeRegistry.addSampleTreeNode(new SampleTreeNode(MESSAGES.toolSecurityTitle(), "[ISOMORPHIC]/geomajas/staticsecurity/key_go.png", ToolSecuritySample.TITLE, SECURITY_GROUP, ToolSecuritySample.FACTORY)); ExampleLayout exampleLayout = new ExampleLayout(); exampleLayout.setAuthenticationHandler(new ShowcaseAuthenticationHandler()); exampleLayout.buildUi(); // security demo final Label userLabel = exampleLayout.getUserLabel(); GwtCommandDispatcher dispatcher = GwtCommandDispatcher.getInstance(); dispatcher.setTokenRequestHandler(new ShowcaseTokenRequestHandler()); dispatcher.addTokenChangedHandler(new TokenChangedHandler() { public void onTokenChanged(TokenChangedEvent event) { String userId = null; if (null != event.getUserDetail()) { userId = event.getUserDetail().getUserId(); } if (null == userId) { userLabel.setContents("No user is logged in."); } else { userLabel.setContents("Logged in with: " + userId); if (null != runOnLogin) { runOnLogin.run(); runOnLogin = null; } } } }); SsecAccess.login("luc", "luc", null); } /** * Authentication handler to assure panels are running with the requested user. * * @author Joachim Van der Auwera */ private final class ShowcaseAuthenticationHandler implements ExampleLayout.SimpleAuthenticationHandler { public void login(String login, String password, final Runnable callback) { if (null == login) { login = "luc"; password = login; } ShowcaseTokenRequestHandler.userId = login; ShowcaseTokenRequestHandler.password = password; runOnLogin = callback; GwtCommandDispatcher.getInstance().login(); } } }