Universal GUI for specifications edition: RefSpecPanel and related
RefSpecPanel provides universal GUI (Control) for editing list of RefSpec
specifications for both push or fetch, depending on panel configuration.
It is intended to allow user easily edit specifications, supporting user
with rich content assistant and giving feedback with error information as
soon as possible. Component uses editable specifications table and panels
for easy creation of new specifications basing on typical push/fetch
schemes (like branch update, deletion, all branches update, saved
configuration etc.).
Possibly there are still some places when this panel usability could be
improved by some UI-engineer. I hope it shouldn't be very hard and panel
core and API should resist such changes. Keyboard handling could be
improved perhaps, some bugs are still open for MacOS, with one critical
reported to bugzilla.
RefSpecPage class is fetch/push WizardPage using RefSpecPanel extensively.
Beside of RefSpecPanel class this commit introduces some components needed
to build this one. As these components as potentially reusable, they are
put in components package and declared as public.
Influenced-by-smart-comments-of: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Marek Zawirski <marek.zawirski@gmail.com>