use crate::workspace::Workspace;
#[derive(Debug, Clone)]
pub enum Message {
SwitchTab(Tab),
Quit,
SettingsPrevious,
SettingsNext,
SettingsStartEdit,
SettingsInputChar(char),
SettingsInputBackspace,
SettingsSave,
SettingsCancel,
WorkspacesPrevious,
WorkspacesNext,
WorkspacesToggle,
WorkspacesSelectAll,
WorkspacesSelectNone,
WorkspacesRefresh,
WorkspacesLoaded(Vec<Workspace>),
QueryEnterInsertMode,
QueryExitInsertMode,
QueryEnterVisualMode,
QueryExitVisualMode,
QueryYank,
QueryDeleteSelection,
QueryAppend,
QueryAppendEnd,
QueryOpenBelow,
QueryOpenAbove,
QueryDeleteChar,
QueryDeleteLine,
QueryMoveCursor(ratatui::crossterm::event::KeyCode),
QueryMoveTop,
QueryMoveBottom,
QueryUndo,
QueryRedo,
QueryInput(ratatui::crossterm::event::KeyEvent),
QueryClear,
QueryStartExecution,
JobNameInputChar(char),
JobNameInputBackspace,
ExecuteQuery(String),
QueryOpenLoadPanel,
QueryLoadPanelNavigate(i32), QueryLoadPanelCycleSort,
QueryLoadPanelInvertSort,
QueryLoadPanelConfirm,
QueryLoadPanelCancel,
QueryNextPackQuery,
QueryPrevPackQuery,
JobsPrevious,
JobsNext,
JobsViewDetails,
JobsClearCompleted,
JobsRetry,
SessionsPrevious,
SessionsNext,
SessionsRefresh,
SessionsStartNew,
SessionNameInputChar(char),
SessionNameInputBackspace,
SessionsSave(Option<String>),
SessionsLoad,
SessionsDelete,
SessionExportAsPack,
PacksPrevious,
PacksNext,
PacksRefresh,
#[allow(dead_code)]
PacksLoadDetails,
PacksLoadQuery,
PacksExecute,
PacksSave,
InvestigationsPrevious,
InvestigationsNext,
InvestigationsRefresh,
InvestigationsLoadDetails,
InvestigationsStartExecution,
InvestigationsInputChar(char),
InvestigationsInputBackspace,
InvestigationsInputNext,
InvestigationsInputPrev,
InvestigationsInputConfirm,
InvestigationsInputCancel,
ShowError(String),
ShowSuccess(String),
ClosePopup,
NoOp,
AuthCompleted,
AuthFailed(String),
InitCompleted,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Tab {
Query,
Packs,
Investigations,
Workspaces,
Settings,
Jobs,
Sessions,
}
impl Tab {
pub fn next(self) -> Self {
match self {
Tab::Query => Tab::Packs,
Tab::Packs => Tab::Investigations,
Tab::Investigations => Tab::Workspaces,
Tab::Workspaces => Tab::Settings,
Tab::Settings => Tab::Jobs,
Tab::Jobs => Tab::Sessions,
Tab::Sessions => Tab::Query,
}
}
pub fn previous(self) -> Self {
match self {
Tab::Query => Tab::Sessions,
Tab::Packs => Tab::Query,
Tab::Investigations => Tab::Packs,
Tab::Workspaces => Tab::Investigations,
Tab::Settings => Tab::Workspaces,
Tab::Jobs => Tab::Settings,
Tab::Sessions => Tab::Jobs,
}
}
pub fn as_str(self) -> &'static str {
match self {
Tab::Query => "Query (1)",
Tab::Packs => "Packs (2)",
Tab::Investigations => "Investigate (3)",
Tab::Workspaces => "Workspaces (4)",
Tab::Settings => "Settings (5)",
Tab::Jobs => "Jobs (6)",
Tab::Sessions => "Sessions (7)",
}
}
}