001package apps.swing; 002 003import java.util.*; 004 005import javax.annotation.Nonnull; 006import javax.swing.JMenuItem; 007import javax.swing.UIManager; 008 009import apps.*; 010import apps.plaf.macosx.Application; 011 012import jmri.jmrit.XmlFileLocationAction; 013import jmri.util.*; 014 015import org.openide.util.lookup.ServiceProvider; 016 017import apps.util.issuereporter.swing.IssueReporterAction; 018 019/** 020 * Common utility methods for working with Java Help. 021 * <p> 022 * This class was created to contain common Java Help information. 023 * <p> 024 * It assumes that Java Help 1.1.8 is in use 025 * 026 * @author Bob Jacobsen Copyright 2007 027 */ 028@ServiceProvider(service = HelpUtil.MenuProvider.class) 029public class HelpMenuProvider implements HelpUtil.MenuProvider { 030 031 public HelpMenuProvider() { 032 // do nothing 033 } 034 035 @Nonnull 036 @Override 037 public List<JMenuItem> getHelpMenuItems() { 038 List<JMenuItem> items = new ArrayList<>(); 039 040 JMenuItem item = new JMenuItem(Bundle.getMessage("MenuItemHelp")); 041 HelpUtil.enableHelpOnButton(item, "index"); 042 items.add(item); 043 044 JMenuItem license = new JMenuItem(Bundle.getMessage("MenuItemLicense")); 045 items.add(license); 046 license.addActionListener(new LicenseAction()); 047 048 JMenuItem directories = new JMenuItem(Bundle.getMessage("MenuItemFileLocations")); 049 items.add(directories); 050 directories.addActionListener(new XmlFileLocationAction()); 051 052 JMenuItem updates = new JMenuItem(Bundle.getMessage("MenuItemCheckUpdates")); 053 items.add(updates); 054 updates.addActionListener(new CheckForUpdateAction()); 055 056 JMenuItem context = new JMenuItem(Bundle.getMessage("MenuItemContext")); 057 items.add(context); 058 context.addActionListener(new ReportContextAction()); 059 060 JMenuItem console = new JMenuItem(Bundle.getMessage("MenuItemConsole")); 061 items.add(console); 062 console.addActionListener(new SystemConsoleAction()); 063 064 items.add(new JMenuItem(new IssueReporterAction())); 065 066 JMenuItem jmriusers = new JMenuItem(Bundle.getMessage("MenuItemJmriUsers")); 067 items.add(jmriusers); 068 jmriusers.addActionListener(new JmriUsersAction()); 069 070 // Put about dialog in Apple's preferred area on Mac OS X 071 if (SystemType.isMacOSX()) { 072 try { 073 Objects.requireNonNull(Application.getApplication()).setAboutHandler((EventObject eo) -> 074 new AboutDialog(null, true).setVisible(true)); 075 } catch (java.lang.RuntimeException re) { 076 log.error("Unable to put About handler in default location", re); 077 } 078 } 079 // Include About in Help menu if not on Mac OS X or not using Aqua Look and Feel 080 if (!SystemType.isMacOSX() || !UIManager.getLookAndFeel().isNativeLookAndFeel()) { 081 items.add(null); 082 JMenuItem about = new JMenuItem(Bundle.getMessage("MenuItemAbout") + " " + jmri.Application.getApplicationName()); 083 items.add(about); 084 about.addActionListener(new AboutAction()); 085 } 086 return items; 087 } 088 089 // initialize logging 090 private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(HelpMenuProvider.class); 091}