excel_cli/actions/
types.rs

1#[derive(Clone, Debug)]
2pub enum ActionType {
3    Edit,
4    Cut,
5    Paste,
6    DeleteRow,
7    DeleteColumn,
8    DeleteSheet,
9    DeleteMultiRows,
10    DeleteMultiColumns,
11}
12
13// Executor for actions in the application
14pub trait ActionExecutor {
15    fn execute_action(&mut self, action: &ActionCommand) -> Result<(), anyhow::Error>;
16    fn execute_cell_action(
17        &mut self,
18        action: &crate::actions::CellAction,
19    ) -> Result<(), anyhow::Error>;
20    fn execute_row_action(
21        &mut self,
22        action: &crate::actions::RowAction,
23    ) -> Result<(), anyhow::Error>;
24    fn execute_column_action(
25        &mut self,
26        action: &crate::actions::ColumnAction,
27    ) -> Result<(), anyhow::Error>;
28    fn execute_sheet_action(
29        &mut self,
30        action: &crate::actions::SheetAction,
31    ) -> Result<(), anyhow::Error>;
32    fn execute_multi_row_action(
33        &mut self,
34        action: &crate::actions::MultiRowAction,
35    ) -> Result<(), anyhow::Error>;
36    fn execute_multi_column_action(
37        &mut self,
38        action: &crate::actions::MultiColumnAction,
39    ) -> Result<(), anyhow::Error>;
40}
41
42// Command interface for actions that can be executed and undone
43pub trait Command {
44    fn execute(&self) -> anyhow::Result<()>;
45    fn undo(&self) -> anyhow::Result<()>;
46    fn action_type(&self) -> ActionType;
47}
48
49// Unified action command enum for all action types
50#[derive(Clone)]
51pub enum ActionCommand {
52    Cell(crate::actions::CellAction),
53    Row(crate::actions::RowAction),
54    Column(crate::actions::ColumnAction),
55    Sheet(crate::actions::SheetAction),
56    MultiRow(crate::actions::MultiRowAction),
57    MultiColumn(crate::actions::MultiColumnAction),
58}