- Add ScenarioContext which knows about View and start/stop
runnable methods.
- Change Catalog to rely on ScenarioContext and call
start/stop on an appropriate moment.
- Still keep Scenario.build() around so that we have time
to refactor in favour of ScenarioContext.buildContext()
or whatever build() method in it should be.
- Fixes#1004
- Polish a lot of things
- Do updates/redraw internally with eventloop as it'd be super
inconvenient asking user to handle this externally
- Rewrite sample to be more unified for various cases
- Set eventloop from ViewComponent
- Relates #995
- Modifies ViewComponent with changed api's so that
it can be executed with a thread allowing caller
not to block.
- Add ViewComponentBuilder concept and create is as
a bean similar to TerminalUIBuilder.
- Relates #997
- Move spinner frame calculation to item itself so that
- Remove spinnerFrame from state and add
start/update times
- view don't have hard dependency to it, as we'd
need its interval
- Change spinner to run only when view is running
- Relates #995
- Exposing eventloop if user need to interact with it
- Add api/feature to set used view rect expand to
full terminal width
- Add plain ProgressView samples
- Relates #995
- Fixes#997
- With annotation(@Command) model it's now possible to just
add CommandContext and it will get resolved and doesn't
cause it to appear as an option.
- Fixes#779
- Revisit how alias commands are added using
@Command annotation when using if/or on class
and/or method level.
- With this change alias handling is more logical
and there's better tests and docs.
- Fixes#945
- Category and scenario list views can now be focused with
ctrl+a/ctrl+s.
- Bind all keys with ctrl modifier
- Add "shortcut" concept to views which currently hooks to
hot keys.
- In a catalog app by using a "shortcut" then takes the key
event as a hot key, as it consumes resulting behaviour
is to focus.
- Move view initInternal away from constructor call to
require user to call init() which is not in a
View interface
- Relates #826
- InputView using viewcommands and has event for text change.
- Experimental way to handle tab navigation in a layout views.
- New viewcommands for tab navigation and moving cursor.
- Mouse click takes focus in AbstractView if no view command
binding.
- MultiInputViewScenario now shows tab navigation.
- Fixes#917
- StatusItem can now define a hotkey which is then
bound to its action.
- In catalog app replace use of raw key event to
item's hotkey for status bar visibility.
- Various doc updates.
- Relates #826
- Add TerminalUIBuilder which can be used to build TerminalUI
- Add TerminalUICustomizer which can customize TerminalUI
- What is autoconfigured is TerminalUIBuilder.
- In TerminalUI add configure for views which now allows
easier way to set needed stuff in views.
- Various changes in a catalog app
- Fixes#900
- Modify view structures so that we're able to
control background drawing better
- Remove transparent concept from box view
- Add background styles for dialog, menu/status bars
- Relates #824
- 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
- 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
- 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
- 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 OptionMethodArgumentResolver which is similar
than ShellOptionMethodArgumentResolver for @ShellOption.
- Add missing annotation commands for e2e test command.
- Fixes#767
- In `CommandRegistration` add `ResolvableType` for `OptionSpec` giving
more spesific handling of a type.
- In `CommandParser` handle source and target types so that we
have generics with `List`, `Set` and arrays working better.
- In `HandlerMethodArgumentResolver` add better handling for
`ConversionService` for generic types.
- In `StandardMethodTargetRegistrar` add better types via `ResolvableType`
now that `CommandRegistration` support it.
- In `OptionConversionCommands` remove converter from `String` to `Set` as
now things should work as is if generic in a `Set` has a converter.
- Backport #694#699
- Fixes#700
- Better alignment for use of positional args without using
an option.
- Should work similarly with old parsing framework.
- Change position where missing options are checked.
- Fixes#701