list.rs 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. //use std::collections::HashMap;
  2. use tui::widgets::ListState;
  3. #[derive(Clone)]
  4. pub struct NodeIdList {
  5. pub state: ListState,
  6. pub node_id: Vec<String>,
  7. }
  8. impl NodeIdList {
  9. pub fn new(node_id: Vec<String>) -> NodeIdList {
  10. NodeIdList { state: ListState::default(), node_id }
  11. }
  12. pub fn next(&mut self) {
  13. let i = match self.state.selected() {
  14. Some(i) => {
  15. if i >= self.node_id.len() - 1 {
  16. 0
  17. } else {
  18. i + 1
  19. }
  20. }
  21. None => 0,
  22. };
  23. self.state.select(Some(i));
  24. }
  25. pub fn previous(&mut self) {
  26. let i = match self.state.selected() {
  27. Some(i) => {
  28. if i == 0 {
  29. self.node_id.len() - 1
  30. } else {
  31. i - 1
  32. }
  33. }
  34. None => 0,
  35. };
  36. self.state.select(Some(i));
  37. }
  38. pub fn unselect(&mut self) {
  39. self.state.select(None);
  40. }
  41. }