summaryrefslogtreecommitdiffstats
path: root/src/error/error.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/error/error.rs')
-rw-r--r--src/error/error.rs55
1 files changed, 55 insertions, 0 deletions
diff --git a/src/error/error.rs b/src/error/error.rs
new file mode 100644
index 0000000..2ae68c6
--- /dev/null
+++ b/src/error/error.rs
@@ -0,0 +1,55 @@
+use crate::git_interactive::GitInteractive;
+use crate::input::{Input, InputHandler};
+use crate::process::{HandleInputResult, HandleInputResultBuilder, ProcessModule, State};
+use crate::view::View;
+
+pub struct Error {
+ error_message: String,
+ return_state: State,
+}
+
+impl ProcessModule for Error {
+ fn activate(&mut self, state: State, _git_interactive: &GitInteractive) {
+ if let State::Error { message, return_state } = state {
+ self.error_message = message;
+ self.return_state = *return_state;
+ }
+ else {
+ panic!("Help module activated when not expected");
+ }
+ }
+
+ fn deactivate(&mut self) {
+ self.error_message.clear();
+ }
+
+ fn handle_input(
+ &mut self,
+ input_handler: &InputHandler,
+ _git_interactive: &mut GitInteractive,
+ ) -> HandleInputResult
+ {
+ let input = input_handler.get_input();
+ let mut result = HandleInputResultBuilder::new(input);
+ match input {
+ Input::Resize => {},
+ _ => {
+ result = result.state(self.return_state.clone());
+ },
+ }
+ result.build()
+ }
+
+ fn render(&self, view: &View, _git_interactive: &GitInteractive) {
+ view.draw_error(self.error_message.as_str());
+ }
+}
+
+impl Error {
+ pub fn new() -> Self {
+ Self {
+ error_message: String::from(""),
+ return_state: State::List,
+ }
+ }
+}