package com.niklim.clicktrace.view.control.menu;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import com.google.inject.Inject;
import com.niklim.clicktrace.Icons;
import com.niklim.clicktrace.controller.ActiveSession;
import com.niklim.clicktrace.controller.operation.session.ChangeSessionDescriptionOperation;
import com.niklim.clicktrace.controller.operation.session.ChangeSessionNameOperation;
import com.niklim.clicktrace.controller.operation.session.DeleteActiveSessionOperation;
import com.niklim.clicktrace.controller.operation.session.DeleteSelectedScreenShotsOperation;
import com.niklim.clicktrace.controller.operation.session.DeselectAllScreenShotsOperation;
import com.niklim.clicktrace.controller.operation.session.RefreshSessionOperation;
import com.niklim.clicktrace.controller.operation.session.ReorderOperation;
import com.niklim.clicktrace.controller.operation.session.SelectAllScreenShotsOperation;
import com.niklim.clicktrace.controller.operation.session.StartRecordingOperation;
import com.niklim.clicktrace.controller.operation.session.StopRecordingOperation;
import com.niklim.clicktrace.view.OperationsShortcutEnum;
public class SessionMenu {
JMenu menu;
JMenuItem sessionDeleteActiveSession;
JMenuItem sessionDeleteSelected;
JMenuItem sessionSelectAll;
JMenuItem sessionDeselectAll;
JMenuItem sessionStart;
JMenuItem sessionStop;
JMenuItem sessionChangeLabel;
JMenuItem sessionRefresh;
JMenuItem sessionDescription;
JMenuItem sessionReorder;
@Inject
private ActiveSession activeSession;
@Inject
private DeleteActiveSessionOperation deleteActiveSessionOperation;
@Inject
private StartRecordingOperation startRecordingOperation;
@Inject
private StopRecordingOperation stopRecordingOperation;
@Inject
private RefreshSessionOperation refreshSessionOperation;
@Inject
private DeleteSelectedScreenShotsOperation deleteSelectedScreenShotsOperation;
@Inject
private SelectAllScreenShotsOperation selectAllScreenShotsOperation;
@Inject
private DeselectAllScreenShotsOperation deselectAllScreenShotsOperation;
@Inject
private ChangeSessionNameOperation changeSessionNameOperation;
@Inject
private ChangeSessionDescriptionOperation changeSessionDescriptionOperation;
@Inject
private ReorderOperation reorderOperation;
public void sessionStateChanged() {
sessionDeleteActiveSession.setEnabled(activeSession.isSessionLoaded());
sessionDeleteActiveSession.setEnabled(activeSession.isSessionLoaded());
sessionDeleteSelected.setEnabled(activeSession.isSessionLoaded());
sessionSelectAll.setEnabled(activeSession.isSessionLoaded());
sessionDeselectAll.setEnabled(activeSession.isSessionLoaded());
sessionStart.setEnabled(!activeSession.isRecording());
sessionStop.setEnabled(activeSession.isSessionLoaded() && activeSession.isRecording());
sessionRefresh.setEnabled(activeSession.isSessionLoaded());
sessionChangeLabel.setEnabled(activeSession.isSessionLoaded());
sessionDescription.setEnabled(activeSession.isSessionLoaded());
sessionReorder.setEnabled(activeSession.isSessionLoaded());
}
@Inject
public void init() {
menu = new JMenu("Session");
sessionStart = createSessionStart();
sessionStop = createSessionStop();
sessionRefresh = createSessionRefresh();
sessionSelectAll = createSessionSelectAll();
sessionDeselectAll = createSessionDeselectAll();
sessionDeleteSelected = createSessionDeleteSelected();
sessionDeleteActiveSession = createSessionDeleteActiveSession();
sessionChangeLabel = createSessionChangeLabel();
sessionDescription = createSessionDescription();
sessionReorder = createSessionReorder();
menu.add(sessionStart);
menu.add(sessionStop);
menu.add(sessionRefresh);
menu.addSeparator();
menu.add(sessionReorder);
menu.add(sessionSelectAll);
menu.add(sessionDeselectAll);
menu.add(sessionDeleteSelected);
menu.addSeparator();
menu.add(sessionChangeLabel);
menu.add(sessionDescription);
menu.addSeparator();
menu.add(sessionDeleteActiveSession);
}
private JMenuItem createSessionReorder() {
JMenuItem menuItem = MenuBar.createMenuItem("Reorder screenshots", Icons.SESSION_REORDER,
OperationsShortcutEnum.SESSION_REORDER, reorderOperation.action());
menuItem.setEnabled(false);
return menuItem;
}
private JMenuItem createSessionDescription() {
JMenuItem menuItem = MenuBar.createMenuItem("Change description",
Icons.SESSION_DESCRIPTION, OperationsShortcutEnum.SESSION_DESCRIPTION,
changeSessionDescriptionOperation.action());
menuItem.setEnabled(false);
return menuItem;
}
public JMenu getMenu() {
return menu;
}
private JMenuItem createSessionChangeLabel() {
JMenuItem menuItem = MenuBar.createMenuItem("Change name", null,
changeSessionNameOperation.action());
menuItem.setEnabled(false);
return menuItem;
}
private JMenuItem createSessionStart() {
JMenuItem menuItem = MenuBar.createMenuItem("Start recording", Icons.START_RECORDING,
OperationsShortcutEnum.START_RECORDING, startRecordingOperation.action());
return menuItem;
}
private JMenuItem createSessionStop() {
JMenuItem menuItem = MenuBar.createMenuItem("Stop recording", Icons.STOP_RECORDING,
OperationsShortcutEnum.STOP_RECORDING, stopRecordingOperation.action());
menuItem.setEnabled(false);
return menuItem;
}
private JMenuItem createSessionRefresh() {
JMenuItem menuItem = MenuBar.createMenuItem("Refresh session", Icons.SESSION_REFRESH,
OperationsShortcutEnum.SESSION_REFRESH, refreshSessionOperation.action());
menuItem.setEnabled(false);
return menuItem;
}
private JMenuItem createSessionSelectAll() {
JMenuItem menuItem = MenuBar.createMenuItem("Select all screenshots",
OperationsShortcutEnum.SESSION_SELECT_ALL_SHOTS,
selectAllScreenShotsOperation.action());
menuItem.setEnabled(false);
return menuItem;
}
private JMenuItem createSessionDeselectAll() {
JMenuItem menuItem = MenuBar.createMenuItem("Deselect all screenshots",
OperationsShortcutEnum.SESSION_DESELECT_ALL_SHOTS,
deselectAllScreenShotsOperation.action());
menuItem.setEnabled(false);
return menuItem;
}
private JMenuItem createSessionDeleteSelected() {
JMenuItem menuItem = MenuBar.createMenuItem("Delete selected screenshots",
OperationsShortcutEnum.SESSION_DELETE_SELECTED,
deleteSelectedScreenShotsOperation.action());
menuItem.setEnabled(false);
return menuItem;
}
private JMenuItem createSessionDeleteActiveSession() {
JMenuItem menuItem = MenuBar.createMenuItem("Delete current session", Icons.SESSION_DELETE,
OperationsShortcutEnum.SESSION_DELETE, deleteActiveSessionOperation.action());
menuItem.setEnabled(false);
return menuItem;
}
}