package org.oddjob.monitor.view; import java.awt.event.KeyEvent; import javax.swing.ActionMap; import javax.swing.InputMap; import javax.swing.JComponent; import javax.swing.KeyStroke; import org.oddjob.arooa.design.actions.ActionContributor; import org.oddjob.arooa.design.actions.ActionMenu; import org.oddjob.arooa.design.actions.ActionRegistry; import org.oddjob.monitor.actions.ExplorerAction; import org.oddjob.monitor.context.ExplorerContext; import org.oddjob.monitor.model.SelectedContextAware; /** * Group the Job Actions for Explorer. * * @author Rob Gordon */ public class ExplorerJobActions implements ActionContributor, SelectedContextAware { private final JobSwingAction[] swingActions; private final ExplorerAction[] actions; /** * Constructor. * * @param explorer The owning explorer. */ public ExplorerJobActions(ExplorerAction[] actions) { this.actions = actions; this.swingActions = new JobSwingAction[actions.length]; for (int i = 0; i < actions.length; ++i) { this.swingActions[i] = new JobSwingAction( actions[i]); } } /** * Called when the Model changes it's selected * node. * */ public void setSelectedContext(ExplorerContext context) { for (ExplorerAction action: actions) { action.setSelectedContext(context); } } @Override public void prepare() { for (ExplorerAction action: actions) { action.prepare(); } } public void contributeTo(ActionRegistry actionRegistry) { actionRegistry.addMainMenu( new ActionMenu( MonitorMenuBar.JOB_MENU_ID, "Job", KeyEvent.VK_J)); for (int i =0; i < actions.length; ++i) { actionRegistry.addMenuItem(MonitorMenuBar.JOB_MENU_ID, actions[i].getGroup(), swingActions[i]); actionRegistry.addContextMenuItem(actions[i].getGroup(), swingActions[i]); } } public void addKeyStrokes(JComponent component) { ActionMap actionMap = component.getActionMap(); InputMap inputMap = component.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW); for (int i =0; i < actions.length; ++i) { actionMap.put(actions[i].getName(), swingActions[i]); KeyStroke keyStroke = actions[i].getAcceleratorKey(); if (keyStroke != null) { inputMap.put(keyStroke, actions[i].getName()); } } } }