// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.gui.help; import static org.openstreetmap.josm.gui.help.HelpUtil.ht; import static org.openstreetmap.josm.tools.I18n.tr; import java.awt.event.ActionEvent; import java.util.Optional; import javax.swing.AbstractAction; import org.openstreetmap.josm.Main; import org.openstreetmap.josm.io.OnlineResource; import org.openstreetmap.josm.tools.ImageProvider; /** * This is the standard help action to be used with help buttons for * context sensitive help * @since 2289 */ public class ContextSensitiveHelpAction extends AbstractAction { private String helpTopic; /** * Sets the help topic. * * @param relativeHelpTopic the relative help topic */ public void setHelpTopic(String relativeHelpTopic) { helpTopic = Optional.ofNullable(relativeHelpTopic).orElse("/"); } /** * Constructs a new {@code ContextSensitiveHelpAction} for the root help topic. */ public ContextSensitiveHelpAction() { this(ht("/")); } /** * Constructs a new {@code ContextSensitiveHelpAction} for a given help topic. * @param helpTopic The help topic */ public ContextSensitiveHelpAction(String helpTopic) { putValue(SHORT_DESCRIPTION, tr("Show help information")); putValue(NAME, tr("Help")); new ImageProvider("help").getResource().attachImageIcon(this); this.helpTopic = helpTopic; setEnabled(!Main.isOffline(OnlineResource.JOSM_WEBSITE)); } @Override public void actionPerformed(ActionEvent e) { if (helpTopic != null) { HelpBrowser.setUrlForHelpTopic(helpTopic); } } }