Refactor `Menu` class: Rename variables for clarity (e.g., `selected` to `selectedInd...
authorSvjatoslav Agejenko <svjatoslav@svjatoslav.eu>
Sun, 25 Jan 2026 12:00:35 +0000 (14:00 +0200)
committerSvjatoslav Agejenko <svjatoslav@svjatoslav.eu>
Sun, 25 Jan 2026 12:00:35 +0000 (14:00 +0200)
src/main/java/eu/svjatoslav/commons/cli_helper/Menu.java

index a118695..8aedcad 100644 (file)
@@ -31,14 +31,14 @@ public class Menu {
         try {
             setTerminalToRaw();
 
-            int selected = 0;
-            String filter = "";
+            int selectedIndex = 0;
+            String filterString = "";
             int lastTotalLines = 0;
 
-            selected = updateDisplay(prompt, options, selected, filter, lastTotalLines);
-            lastTotalLines = getCurrentTotalLines(options, filter);
-
             while (true) {
+                selectedIndex = updateDisplay(prompt, options, selectedIndex, filterString, lastTotalLines);
+                lastTotalLines = getCurrentTotalLines(options, filterString);
+
                 int c = System.in.read();
 
                 // Handle Escape key or arrow keys
@@ -48,41 +48,38 @@ public class Menu {
                         int c2 = System.in.read();
                         if (c1 == 91) { // [
                             if (c2 == 65) { // Up arrow (ESC [ A)
-                                selected = selected - 1;
+                                selectedIndex = selectedIndex - 1;
                             } else if (c2 == 66) { // Down arrow (ESC [ B)
-                                selected = selected + 1;
+                                selectedIndex = selectedIndex + 1;
                             }
-                            selected = updateDisplay(prompt, options, selected, filter, lastTotalLines);
-                            lastTotalLines = getCurrentTotalLines(options, filter);
                         }
                     } else {
                         // Esc key alone
                         return null;
                     }
                 }
+
                 // Handle Enter key
                 else if (c == 13 || c == 10) {
-                    List<String> filtered = filterOptions(options, filter.toString());
+                    List<String> filtered = filterOptions(options, filterString.toString());
                     if (filtered.isEmpty()) {
                         return null;
                     }
-                    return filtered.get(selected);
+                    return filtered.get(selectedIndex);
                 }
+
                 // Handle Backspace (8 or 127)
                 else if (c == 8 || c == 127) {
-                    if (filter.length() > 0) {
-                        filter = filter.substring(0, filter.length() - 1);
-                        selected = 0;
-                        selected = updateDisplay(prompt, options, selected, filter, lastTotalLines);
-                        lastTotalLines = getCurrentTotalLines(options, filter);
+                    if (filterString.length() > 0) {
+                        filterString = filterString.substring(0, filterString.length() - 1);
+                        selectedIndex = 0;
                     }
                 }
+
                 // Handle printable ASCII characters
                 else if (c >= 32 && c <= 126) {
-                    filter = filter + Character.toString((char)c);
-                    selected = 0;
-                    selected = updateDisplay(prompt, options, selected, filter, lastTotalLines);
-                    lastTotalLines = getCurrentTotalLines(options, filter);
+                    filterString = filterString + (char) c;
+                    selectedIndex = 0;
                 }
             }
         } finally {