Commit 73692e9
committed
feat: Implement comprehensive JLine Curses TUI library with focus indicators and repaint system
This commit implements a complete Terminal User Interface (TUI) library for JLine with:
## 🎯 Core TUI Components
- **Essential Components**: List, Table, Tree, Input, Label, Button, TextArea
- **Layout Containers**: Box, Window, Panel for organizing components
- **Interactive Demo**: Complete CursesDemo showcasing all functionality
## 🎨 Visual Focus System
- **Focus Indicators**: Yellow borders and titles for focused components
- **Theme Integration**: Consistent styling through DefaultTheme
- **Visual Feedback**: Clear indication of which component has focus
## ⚡ Smart Repaint System
- **Invalidation API**: Components automatically invalidate on state changes
- **Efficient Updates**: Only invalid components are redrawn
- **Focus-Aware**: Automatic invalidation on focus changes
- **Performance**: Minimal screen updates for optimal performance
## ⌨️ Advanced Input Handling
- **KeyEvent System**: Comprehensive key event processing
- **Keyboard Navigation**: Arrow keys, Tab, Enter, Escape support
- **Modifier Keys**: Ctrl, Alt, Shift detection and handling
- **Shortcut System**: Configurable keyboard shortcuts
## 🧪 Quality Assurance
- **Comprehensive Tests**: 368+ tests across all modules
- **Virtual Screen Testing**: Mock screen for component testing
- **Integration Tests**: End-to-end functionality verification
- **Code Quality**: Spotless formatting and clean architecture
## 📦 Additional Features
- **POSIX Commands**: Comprehensive POSIX command implementation
- **Build System**: Clean Maven build with proper dependency management
- **Documentation**: Updated module documentation and examples
The implementation follows TUI best practices from libraries like Ratatui and Cursive,
providing a modern, efficient, and user-friendly terminal interface experience.1 parent 9411ffc commit 73692e9
File tree
43 files changed
+11619
-2012
lines changed- builtins/src
- main/java/org/jline/builtins
- test/java/org/jline/builtins
- curses/src
- main/java/org/jline/curses
- impl
- test/java/org/jline/curses
- impl
- demo
- src/main/java/org
- apache/felix/gogo/jline
- jline/demo
- examples
- terminal/src/main/java/org/jline/terminal
- website/docs/modules
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
43 files changed
+11619
-2012
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
65 | 65 | | |
66 | 66 | | |
67 | 67 | | |
| 68 | + | |
68 | 69 | | |
69 | 70 | | |
70 | 71 | | |
| |||
132 | 133 | | |
133 | 134 | | |
134 | 135 | | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
135 | 143 | | |
136 | 144 | | |
137 | 145 | | |
| |||
185 | 193 | | |
186 | 194 | | |
187 | 195 | | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
188 | 216 | | |
189 | 217 | | |
190 | 218 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
58 | 58 | | |
59 | 59 | | |
60 | 60 | | |
| 61 | + | |
61 | 62 | | |
62 | 63 | | |
63 | 64 | | |
| |||
135 | 136 | | |
136 | 137 | | |
137 | 138 | | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
138 | 147 | | |
139 | 148 | | |
140 | 149 | | |
| |||
188 | 197 | | |
189 | 198 | | |
190 | 199 | | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
191 | 220 | | |
192 | 221 | | |
193 | 222 | | |
| |||
0 commit comments