package com.niklim.clicktrace.view.control.menu;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
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.session.HtmlExportOperation;
import com.niklim.clicktrace.controller.operation.session.JiraExportOperation;
import com.niklim.clicktrace.controller.operation.session.OpenSearchDialogOperation;
import com.niklim.clicktrace.dialog.settings.SettingsDialog;
import com.niklim.clicktrace.model.Session;
import com.niklim.clicktrace.msg.InfoMsgs;
import com.niklim.clicktrace.view.OperationsShortcutEnum;
@Singleton
public class ToolsMenu {
@Inject
private SettingsDialog settingsDialog;
@Inject
private OpenSearchDialogOperation openSearchDialogOperation;
@Inject
private JiraExportOperation jiraExportOperation;
@Inject
private HtmlExportOperation htmlExportOperation;
@Inject
private ActiveSession activeSession;
private JMenuItem toolsExportToJira;
private JMenuItem toolsExportToHtml;
public JMenu getMenu() {
JMenu tools = new JMenu("Tools");
JMenuItem toolsSettings = createToolsSettings();
JMenuItem toolsSearch = createToolsSearch();
toolsExportToJira = createToolsExportToJira();
toolsExportToJira.setEnabled(false);
toolsExportToHtml = createToolsExportToHtml();
toolsExportToHtml.setEnabled(false);
tools.add(toolsSettings);
tools.add(toolsSearch);
tools.add(toolsExportToJira);
tools.add(toolsExportToHtml);
return tools;
}
private JMenuItem createToolsExportToHtml() {
return MenuBar.createMenuItem("Export to HTML", OperationsShortcutEnum.HTML_EXPORT,
htmlExportOperation.action());
}
private JMenuItem createToolsExportToJira() {
return MenuBar.createMenuItem("Export to " + InfoMsgs.JIRA_ADDON_NAME, OperationsShortcutEnum.JIRA_EXPORT,
jiraExportOperation.action());
}
private JMenuItem createToolsSettings() {
return MenuBar.createMenuItem("Settings", null, new ActionListener() {
public void actionPerformed(ActionEvent event) {
settingsDialog.open();
}
});
}
private JMenuItem createToolsSearch() {
return MenuBar.createMenuItem("Find", Icons.SEARCH, OperationsShortcutEnum.FIND,
openSearchDialogOperation.action());
}
public void sessionStateChanged() {
Session session = activeSession.getSession();
boolean atLeastOneShot = false;
if (session != null) {
atLeastOneShot = session.getShots().size() > 0;
}
toolsExportToJira.setEnabled(activeSession.isSessionLoaded() && atLeastOneShot);
toolsExportToHtml.setEnabled(activeSession.isSessionLoaded() && atLeastOneShot);
}
}