package com.niklim.clicktrace.view.control.menu; import javax.swing.JMenu; import javax.swing.JMenuItem; import com.google.inject.Inject; import com.google.inject.Singleton; import com.niklim.clicktrace.Icons; import com.niklim.clicktrace.controller.ActiveSession; import com.niklim.clicktrace.controller.operation.screenshot.ChangeScreenShotLabelOperation; import com.niklim.clicktrace.controller.operation.screenshot.DeleteScreenShotOperation; import com.niklim.clicktrace.controller.operation.screenshot.EditScreenShotOperation; import com.niklim.clicktrace.controller.operation.screenshot.ChangeScreenShotDescriptionOperation; import com.niklim.clicktrace.controller.operation.screenshot.RefreshScreenShotOperation; import com.niklim.clicktrace.view.OperationsShortcutEnum; @Singleton public class ScreenShotMenu { private JMenu menu; private JMenuItem changeLabel; private JMenuItem setDescription; private JMenuItem delete; private JMenuItem refresh; private JMenuItem edit; @Inject private ChangeScreenShotLabelOperation changeScreenShotLabelOperation; @Inject private ChangeScreenShotDescriptionOperation changeScreenShotDescritpionOperation; @Inject private DeleteScreenShotOperation deleteScreenShotOperation; @Inject private RefreshScreenShotOperation refreshScreenShotOperation; @Inject private EditScreenShotOperation editScreenShotOperation; @Inject private ActiveSession activeSession; @Inject public void init() { menu = new JMenu("Screenshot"); changeLabel = createChangeLabel(); setDescription = createChangeDescription(); delete = createDelete(); edit = createEdit(); refresh = createRefresh(); menu.add(changeLabel); menu.add(setDescription); menu.addSeparator(); menu.add(refresh); menu.add(edit); menu.addSeparator(); menu.add(delete); } private JMenuItem createChangeLabel() { JMenuItem menuItem = MenuBar.createMenuItem("Change label", OperationsShortcutEnum.SHOT_LABEL, changeScreenShotLabelOperation.action()); menuItem.setEnabled(false); return menuItem; } private JMenuItem createChangeDescription() { JMenuItem menuItem = MenuBar.createMenuItem("Change description", Icons.SCREENSHOT_DESCRIPTION, OperationsShortcutEnum.SHOT_DESCRIPTION, changeScreenShotDescritpionOperation.action()); menuItem.setEnabled(false); return menuItem; } private JMenuItem createDelete() { JMenuItem menuItem = MenuBar.createMenuItem("Delete screenshot", Icons.SCREENSHOT_DELETE, OperationsShortcutEnum.SHOT_DELETE, deleteScreenShotOperation.action()); menuItem.setEnabled(false); return menuItem; } private JMenuItem createRefresh() { JMenuItem menuItem = MenuBar.createMenuItem("Refresh screenshot", Icons.SCREENSHOT_REFRESH, OperationsShortcutEnum.SHOT_REFRESH, refreshScreenShotOperation.action()); menuItem.setEnabled(false); return menuItem; } private JMenuItem createEdit() { JMenuItem menuItem = MenuBar.createMenuItem("Edit screenshot", Icons.SCREENSHOT_EDIT, OperationsShortcutEnum.SHOT_EDIT, editScreenShotOperation.action()); menuItem.setEnabled(false); return menuItem; } public JMenu getMenu() { return menu; } public void sessionStateChanged() { changeLabel.setEnabled(activeSession.isActiveShotLoaded()); delete.setEnabled(activeSession.isActiveShotLoaded()); refresh.setEnabled(activeSession.isActiveShotLoaded()); edit.setEnabled(activeSession.isActiveShotLoaded()); setDescription.setEnabled(activeSession.isActiveShotLoaded()); } }