1extern crate darkside;
2
3use darkside::list::*;
4use darkside::text::*;
5use darkside::*;
6
7fn main() {
8 new_app();
9 let mut str_vec = vec![];
10 let mut current_list = 1;
11 for i in 1..21 {
12 str_vec.push(format!("item {}", i));
13 }
14 let mut list_1 = new_list(10, 2, 20, 10, str_vec.clone());
15 let item_vec = vec![
16 String::from("This is long"),
17 String::from("This is longer"),
18 String::from("This is even longer"),
19 String::from("This is the longest one"),
20 ];
21 let mut list_2 = new_list(30, 2, 20, 10, item_vec.clone());
22
23 let mut instruction = new_text("Use <- to focus left list and -> for right list", 10, 12);
24 instruction = set_text_effects(instruction, vec![TextEffect::Bold]);
25
26 list_1 = set_list_fill_width(list_1, true);
27 list_2 = set_list_fill_width(list_2, true);
28 list_2 = set_list_text_overflow(list_2, TextOverflow::Ellipsis);
29
30 let _j_key = translate_key('j');
31 let _k_key = translate_key('k');
32 let up_key = KEY_UP;
33 let down_key = KEY_DOWN;
34 let left_key = KEY_LEFT;
35 let right_key = KEY_RIGHT;
36 let enter_key = KEY_RETURN;
37
38 loop {
39 render_list(&list_1);
40 render_list(&list_2);
41 render_text(&instruction);
42 let ch = wait_for_key();
43 if ch == _k_key || ch == up_key {
44 if current_list == 1 {
45 list_1 = move_prev_list_item(list_1);
46 } else {
47 list_2 = move_prev_list_item(list_2);
48 }
49 } else if ch == _j_key || ch == down_key {
50 if current_list == 1 {
51 list_1 = move_next_list_item(list_1);
52 } else {
53 list_2 = move_next_list_item(list_2);
54 }
55 } else if ch == left_key {
56 current_list = 1;
57 } else if ch == right_key {
58 current_list = 2;
59 } else if ch == enter_key {
60 let result_1 = str_vec
61 .get(get_list_selected_index(&list_1) as usize)
62 .unwrap();
63 let result_text_1 = new_text(&format!("Selected in left list: {}", result_1), 10, 13);
64 let result_2 = item_vec
65 .get(get_list_selected_index(&list_2) as usize)
66 .unwrap();
67 let result_text_2 = new_text(&format!("Selected in right list: {}", result_2), 10, 14);
68 render_text(&result_text_1);
69 render_text(&result_text_2);
70 }
71 }
72}