001package jmri.jmrit.roster.swing; 002 003import java.awt.Component; 004import java.awt.Frame; 005import javax.swing.AbstractAction; 006import javax.swing.JMenu; 007import jmri.jmrit.roster.CopyRosterItemAction; 008import jmri.jmrit.roster.DeleteRosterItemAction; 009import jmri.jmrit.roster.ExportRosterItemAction; 010import jmri.jmrit.roster.FullBackupExportAction; 011import jmri.jmrit.roster.GroupBackupExportAction; 012import jmri.jmrit.roster.FullBackupImportAction; 013import jmri.jmrit.roster.ImportRosterItemAction; 014import jmri.jmrit.roster.PrintListAction; 015import jmri.jmrit.roster.PrintRosterAction; 016import jmri.jmrit.roster.swing.speedprofile.SpeedProfileAction; 017 018/** 019 * Provides a context-specific menu for handling the Roster. 020 * 021 * For DecoderPro's menus, see the 022 * xml/config/parts/jmri/jmrit/roster/swing/RosterFrameMenu.xml file. 023 * 024 * @author Bob Jacobsen Copyright (C) 2001, 2002, 2008 025 * @author Dennis Miller Copyright (C) 2005 026 * @see jmri.jmrit.roster.RosterEntry 027 * @see jmri.jmrit.roster.Roster 028 */ 029public class RosterMenu extends JMenu { 030 031 /** 032 * Ctor argument defining that the menu object will be used as part of the 033 * main menu of the program, away from any GUI that can select or use a 034 * RosterEntry. 035 */ 036 public static final int MAINMENU = 1; 037 038 /** 039 * Ctor argument defining that the menu object will be used as a menu on a 040 * GUI object that can select a RosterEntry. 041 */ 042 public static final int SELECTMENU = 2; 043 044 /** 045 * Ctor argument defining that the menu object will be used as a menu on a 046 * GUI object that is dealing with a single RosterEntry. 047 */ 048 public static final int ENTRYMENU = 3; 049 050 /** 051 * Create a menu of Roster tools. 052 * 053 * @param pMenuName Name for the menu 054 * @param pMenuType Select where the menu will be used, hence the right set 055 * of items to be enabled. 056 * @param pWho The Component using this menu, used to ensure that 057 * dialog boxes will pop in the right place. 058 */ 059 public RosterMenu(String pMenuName, int pMenuType, Component pWho) { 060 super(pMenuName); 061 062 // create the menu 063 AbstractAction dp3Action = new jmri.jmrit.roster.swing.RosterFrameAction(Bundle.getMessage("MenuItemRoster"), false); 064 dp3Action.setEnabled(true); 065 066 AbstractAction createAction = new jmri.jmrit.symbolicprog.tabbedframe.PaneNewProgAction(Bundle.getMessage("MenuItemCreate")); 067 createAction.setEnabled(false); 068 069 AbstractAction editAction = new jmri.jmrit.symbolicprog.tabbedframe.PaneEditAction(Bundle.getMessage("MenuItemEdit")); 070 editAction.setEnabled(false); 071 072 AbstractAction exportAction = new ExportRosterItemAction(Bundle.getMessage("MenuItemExport"), pWho); 073 exportAction.setEnabled(false); 074 075 AbstractAction importAction = new ImportRosterItemAction(Bundle.getMessage("MenuItemImport"), pWho); 076 importAction.setEnabled(false); 077 078 AbstractAction copyAction = new CopyRosterItemAction(Bundle.getMessage("MenuItemCopy"), pWho); 079 copyAction.setEnabled(false); 080 081 AbstractAction deleteAction = new DeleteRosterItemAction(Bundle.getMessage("MenuItemDelete"), pWho); 082 deleteAction.setEnabled(false); 083 084 AbstractAction deleteGroupAction = new DeleteRosterGroupAction(Bundle.getMessage("MenuGroupDelete"), pWho); 085 deleteGroupAction.setEnabled(false); 086 087 AbstractAction deleteGroupContentsAction = new DeleteRosterGroupContentsAction(Bundle.getMessage("MenuGroupDeleteContents"), pWho); 088 deleteGroupContentsAction.setEnabled(false); 089 090 AbstractAction createGroupAction = new CreateRosterGroupAction(Bundle.getMessage("MenuGroupCreate"), pWho); 091 createGroupAction.setEnabled(false); 092 093 AbstractAction rosterEntryToGroupAction = new RosterEntryToGroupAction(Bundle.getMessage("MenuGroupAssociate"), pWho); 094 rosterEntryToGroupAction.setEnabled(false); 095 096 AbstractAction removeRosterEntryToGroupAction = new RemoveRosterEntryToGroupAction(Bundle.getMessage("MenuGroupDisassociate"), pWho); 097 removeRosterEntryToGroupAction.setEnabled(false); 098 099 AbstractAction rosterGroupTableAction = new jmri.jmrit.roster.swing.rostergroup.RosterGroupTableAction(Bundle.getMessage("MenuGroupTable")); 100 rosterGroupTableAction.setEnabled(false); 101 102 AbstractAction rosterExportAction = new FullBackupExportAction(Bundle.getMessage("MenuFullExport"), pWho); 103 rosterExportAction.setEnabled(false); 104 105 AbstractAction rosterGroupExportAction = new GroupBackupExportAction(Bundle.getMessage("MenuGroupExport"), pWho); 106 rosterGroupExportAction.setEnabled(false); 107 108 AbstractAction rosterImportAction = new FullBackupImportAction(Bundle.getMessage("MenuFullImport"), pWho); 109 rosterImportAction.setEnabled(false); 110 111 AbstractAction speedProfileAction = new SpeedProfileAction(Bundle.getMessage("MenuSpeedProfile")); 112 speedProfileAction.setEnabled(false); 113 114 // Need a frame here, but are not passed one 115 Frame newFrame = new Frame(); 116 AbstractAction printAction = new PrintRosterAction(Bundle.getMessage("MenuItemPrintSummary"), newFrame, false); 117 printAction.setEnabled(false); 118 AbstractAction listAction = new PrintListAction(Bundle.getMessage("MenuItemPrintList"), newFrame, false); 119 listAction.setEnabled(false); 120 AbstractAction previewAction = new PrintRosterAction(Bundle.getMessage("MenuItemPreviewSummary"), newFrame, true); 121 previewAction.setEnabled(false); 122 AbstractAction previewListAction = new PrintListAction(Bundle.getMessage("MenuItemPreviewList"), newFrame, true); 123 previewListAction.setEnabled(false); 124 125 JMenu groupMenu = new JMenu(Bundle.getMessage("MenuRosterGroups")); 126 groupMenu.add(createGroupAction); 127 groupMenu.add(deleteGroupAction); 128 groupMenu.add(deleteGroupContentsAction); 129 groupMenu.add(rosterGroupTableAction); 130 groupMenu.add(rosterEntryToGroupAction); 131 groupMenu.add(removeRosterEntryToGroupAction); 132 groupMenu.add(rosterGroupExportAction); 133 134 add(dp3Action); 135 addSeparator(); 136 add(createAction); 137 add(editAction); 138 add(copyAction); 139 add(importAction); 140 add(exportAction); 141 add(deleteAction); 142 add(printAction); 143 add(listAction); 144 add(previewAction); 145 add(previewListAction); 146 addSeparator(); 147 add(groupMenu); 148 addSeparator(); 149 add(rosterExportAction); 150 add(rosterGroupExportAction); 151 add(rosterImportAction); 152 add(speedProfileAction); 153 154 // activate the correct items 155 switch (pMenuType) { 156 case MAINMENU: 157 createAction.setEnabled(true); 158 editAction.setEnabled(true); 159 deleteAction.setEnabled(true); 160 importAction.setEnabled(true); 161 exportAction.setEnabled(true); 162 copyAction.setEnabled(true); 163 deleteGroupAction.setEnabled(true); 164 deleteGroupContentsAction.setEnabled(true); 165 createGroupAction.setEnabled(true); 166 rosterEntryToGroupAction.setEnabled(true); 167 removeRosterEntryToGroupAction.setEnabled(true); 168 printAction.setEnabled(true); 169 listAction.setEnabled(true); 170 previewAction.setEnabled(true); 171 previewListAction.setEnabled(true); 172 rosterGroupTableAction.setEnabled(true); 173 rosterExportAction.setEnabled(true); 174 rosterGroupExportAction.setEnabled(true); 175 rosterImportAction.setEnabled(true); 176 speedProfileAction.setEnabled(true); 177 break; 178 case SELECTMENU: 179 case ENTRYMENU: 180 printAction.setEnabled(true); 181 previewAction.setEnabled(true); 182 break; 183 default: 184 log.error("RosterMenu constructed without a valid menuType parameter: {}", pMenuType); 185 } 186 } 187 188 // initialize logging 189 private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(RosterMenu.class); 190 191}