001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.gui.dialogs.properties; 003 004import static org.openstreetmap.josm.tools.I18n.tr; 005 006import java.awt.event.ActionEvent; 007import java.util.Objects; 008import java.util.function.IntFunction; 009 010import javax.swing.JTable; 011 012import org.openstreetmap.josm.data.osm.IRelation; 013import org.openstreetmap.josm.gui.MainApplication; 014 015/** 016 * Launch browser with wiki help for selected membership. 017 * @since 15581 018 */ 019public class HelpMembershipAction extends HelpAction { 020 private final JTable membershipTable; 021 private final IntFunction<IRelation<?>> memberValueSupplier; 022 023 /** 024 * Constructs a new {@code HelpAction}. 025 * @param membershipTable The membership table. Can be null 026 * @param memberValueSupplier Finds the parent relation from given row of membership table. Can be null 027 */ 028 public HelpMembershipAction(JTable membershipTable, IntFunction<IRelation<?>> memberValueSupplier) { 029 this.membershipTable = Objects.requireNonNull(membershipTable); 030 this.memberValueSupplier = Objects.requireNonNull(memberValueSupplier); 031 putValue(NAME, tr("Go to OSM wiki for relation help")); 032 } 033 034 @Override 035 public void actionPerformed(ActionEvent e) { 036 if (membershipTable.getSelectedRowCount() == 1) { 037 int row = membershipTable.getSelectedRow(); 038 final IRelation<?> relation = memberValueSupplier.apply(row); 039 MainApplication.worker.execute(() -> displayRelationHelp(relation)); 040 } else { 041 super.actionPerformed(e); 042 } 043 } 044}