/* * 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.client.action.layertree; import java.util.HashMap; import java.util.Map; import org.geomajas.annotation.Api; import org.geomajas.gwt.client.action.ToolCreator; import org.geomajas.gwt.client.action.ToolbarBaseAction; import org.geomajas.gwt.client.action.toolbar.ToolId; import org.geomajas.gwt.client.widget.MapWidget; /** * Registry for mapping between tool id's and LayerTree actions. * * @author Pieter De Graef * @since 1.6.0 */ @Api(allMethods = true) public final class LayerTreeRegistry { private static final Map<String, ToolCreator> REGISTRY; static { REGISTRY = new HashMap<String, ToolCreator>(); REGISTRY.put(ToolId.TOOL_LAYER_VISIBLE, new ToolCreator() { public ToolbarBaseAction createTool(MapWidget mapWidget) { return new LayerVisibleModalAction(); } }); REGISTRY.put(ToolId.TOOL_LAYER_SNAPPING, new ToolCreator() { public ToolbarBaseAction createTool(MapWidget mapWidget) { return null; } }); REGISTRY.put(ToolId.TOOL_LAYER_LABELLED, new ToolCreator() { public ToolbarBaseAction createTool(MapWidget mapWidget) { return new LayerLabeledModalAction(); } }); REGISTRY.put(ToolId.TOOL_LAYER_REFRESH, new ToolCreator() { public ToolbarBaseAction createTool(MapWidget mapWidget) { return new LayerRefreshAction(mapWidget); } }); } private LayerTreeRegistry() { // utility class, hide constructor } /** * Add another key to the registry. This will overwrite the previous value. * * @param key * key for the toolbar actions * @param toolCreator * toolbar action creator */ public static void put(String key, ToolCreator toolCreator) { if (null != key && null != toolCreator) { REGISTRY.put(key, toolCreator); } } /** * Get the toolbar action which matches the given key. * * @param key * key for toolbar action * @param mapWidget * map which will contain this tool * @return toolbar action or null when key not found */ public static ToolbarBaseAction getToolbarAction(String key, MapWidget mapWidget) { ToolCreator toolCreator = REGISTRY.get(key); if (null == toolCreator) { return null; } return toolCreator.createTool(mapWidget); } }