- Add functions to calculate Rectangle for fullscreen/nonfullscreen modes.
- Fixes for rendering so that nonfullscreen works better with views.
- Add some basic samples
- isEmpty method for Rectangle
- Fixes#872
- Setup facilities in view system to register commands
with a Runnable to get dispatched into an event loop.
- As first commands, setup ListView with lineDown and
lineUp.
- Expose needed functions into View itself.
- Relates #867
- ListView can be defined to use nocheck, checked or radio
- List can now scroll through up/down
- Actual visual is handled in a DefaultListCell
- Modify/add scenarios and catalog app
- Relates #865
- ViewComponent can take view and drive it as non-fullscreen
- ViewDoneEvent which InputView now uses
- ComponentUiCommands is a sample where we add ideas for
views in flow components
- Allow View to set eventloop
- Relates #850
- New WindowView which can be partially atop of background.
- DialogView now extends WindowView
- Change dialog in Catalog sample and Dialog scenario
- Relates #825
- Relates #855
- Duplicate keyhandler into hotkeyhandler
- Define some view to handle hot keys, like AppView and MenuBarView
- Catalog app binds some menus to hot keys
- Bind all normal keys a-z with alt
- Relates #823
- Relates #826
- Control is now aware of active theme name and resolver.
- Theme some settings in BoxView, ListView and MenuView.
- Overhaul scenario system to make it work with themes.
- Add new "background" StyleSetting.
- Relates #824
- Can clear items from a GridView
- Full refactor for AppView now using GridView internally
and can hide/show menu/status.
- Add function key bindings f1-f10
- Modify catalog app to use new features in an AppView, listen
F10 key to toggle statusbar visibility.
- Relates #805
- Relates #807
- Relates #811
- Polish mandatory option message by using
same format as in 3.0.x. (old parser)
- Remove prefixed code/position parts from
all messages coming from a parser. (new parser)
- Fixes#815
- This commit adds proof of concept work for terminal ui as is.
- Some things work, some don't but we need to start from somewhere.
Further development continues in a main.
- Essentially we are starting to have enough so that it merits to
move all this work into a main repo.
- Everything new is kept under org.springframework.shell.component.view
and will get revisiter later to find correct locations for some classes.
- Catalog sample has been modified to provide "showcase" app for
terminal ui features. This is a start while it already contains
some usefull scenarios.
- Relates #800
- Relates #801
- Relates #802
- Relates #803
- Relates #804
- Relates #805
- Relates #806
- Relates #807
- Relates #808
- Relates #809
- Relates #810
- Relates #811
- NonInteractiveShellRunner can now shortcircuit into primary command
just running it and passing args.
- Add hooks into autoconfig so that this is easy to configure.
- Relates #755
- Fix alias command extraction from existing @Command
annotations so that we actually get multiple aliases
defined if more than one defined on a method level.
- Fix rendering issue in a help stg template when
multiple aliases exists.
- Fixes#796
- Change to have better support for args like:
"--arg1 a --arg2 b"
"--arg1 a --arg2 b c"
"--arg1 a c --arg2 b c"
"c --arg1 a --arg2 b"
where option can have default values and position of
positional args doesn't matter that much.
- Make parser to be aware of if it's handling last option
so that we can differentiate if error can be given i.e.
with too many args, etc.
- Fixes#795
- New CommandNotFoundResultHandler which handles
CommandNotFound to be able to customize error shown.
- New CommandNotFoundMessageProvider which is a plain
function given a "context" and returns a string.
Context contains common info to provide better
error messages.
- Default provider gives same message but
removes long stacktrace(which previously originated
from a common ThrowableResultHandler.
- Relates #778
- Longnames in a command option if modified via
name modifier didn't provide enough backmapping
info for command execution experience being accurate.
- Add new getLongNamesModified() into CommandOption
which is populated if name modifier is used.
- Add more hints in CommandExecution for modified
option names.
- This should bring annotation, legacy annotation
and programmatic commands up to date.
- Fixes#777
- Take 2 of #763
- Revert changes in 06e89dcca3
what comes for `ExtendedDefaultParser`.
- Discard empty args in a `Shell` coming from `ExtendedDefaultParser`
- `ExtendedDefaultParserTests` has more tests, some commented out, to
see some differences for jline default parser impl. Something
to get handled in #517
- New OptionMethodArgumentResolver which is similar
than ShellOptionMethodArgumentResolver for @ShellOption.
- Add missing annotation commands for e2e test command.
- Fixes#767
- Fixes issue when last "word" is within quotes and
cursor is at the end of a line which caused empty
"word" string in an argument list.
- This then caused i.e. string option to have a collection
as an input(if no arity settings used) and via
spring conversions a comma were added.
- Fixes#763
- Annotate ShellComponent with @Reflective and use custom
AvailabilityReflectiveProcessor to find possible method
targets returning Availability.
- Fixes#747
- Add short options as valid tokens in a `CommandModel` so that Lexer
create tokens with accurate info and doesn't then cascade this issue
in Ast and Parser.
- Previously with a command `command -a aaa -b bbb` tokenisation resulted
`COMMAND OPTION ARGUMENT ARGUMENT ARGUMENT` with multiple short options
while it should have been `COMMAND OPTION ARGUMENT OPTION ARGUMENT`.
- Relates #757