/* * Copyright (c) 2016 Fraunhofer IGD * * All rights reserved. This program and the accompanying materials are made * available under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation, either version 3 of the License, * or (at your option) any later version. * * You should have received a copy of the GNU Lesser General Public License * along with this distribution. If not, see <http://www.gnu.org/licenses/>. * * Contributors: * Fraunhofer IGD <http://www.igd.fraunhofer.de/> */ package de.fhg.igd.mapviewer.view; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.eclipse.jface.action.Action; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.ui.PlatformUI; import de.fhg.igd.mapviewer.BasicMapKit; import de.fhg.igd.mapviewer.MapTool; import de.fhg.igd.mapviewer.tools.AbstractMapTool; import de.fhg.igd.mapviewer.tools.Activator; import de.fhg.igd.mapviewer.view.arecalculation.AreaCalc; /** * MapToolAction * * @author <a href="mailto:simon.templer@igd.fhg.de">Simon Templer</a> * * @version $Id$ */ public class MapToolAction extends Action implements Activator { private static final Log log = LogFactory.getLog(MapToolAction.class); private final AbstractMapTool tool; private final BasicMapKit mapKit; /** * Creates an action that activates the given tool * * @param tool the map tool * @param mapKit the map kit * @param checked if the map tool shall be activated initially */ public MapToolAction(AbstractMapTool tool, BasicMapKit mapKit, boolean checked) { super(tool.getName(), Action.AS_RADIO_BUTTON); tool.setMapKit(mapKit); tool.setActivator(this); // set icon if (tool.getIconURL() != null) { try { setImageDescriptor(ImageDescriptor.createFromURL(tool.getIconURL())); } catch (Exception e) { log.warn("Error creating action icon", e); //$NON-NLS-1$ } } // set tool tip setToolTipText(tool.getDescription()); this.tool = tool; this.mapKit = mapKit; if (checked) { setChecked(true); mapKit.setMapTool(tool); } } /** * @see Activator#activate() */ @Override public void activate() { AreaCalc.getInstance().setArea(""); PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { @Override public void run() { setChecked(true); } }); } /** * @see Action#run() */ @Override public void run() { // if (isChecked()) { XXX not working in combination w/ // HTMLToolTipProvider mapKit.setMapTool(tool); // } } /** * @return the {@link MapTool} */ public MapTool getTool() { return tool; } }