Thanks for sharing your work.
I'll take a look at it as soon as I have time.

(The zip made it through to the list)

On Sun, Jun 20, 2010 at 1:25 AM, aappddeevv <aappdde...@verizon.net> wrote:

> I've attached the zip to this email with a few example classes: one for
> general purpose keystroke handling and another for inherited styles. I
> don't
> know if zip files works well or not for this email list though. I placed
> more comments in the command binding class than the other one. There are
> several approaches for attaching behavior to components and that's
> described
> in the javadoc. The tabpane bindings version I use is also included but it
> the same thing can be programmed without a subclass. This tabpane version
> is
> all java code but you could also have used script and/or script includes.
>
> The serializer class uses an "injection initialization" approach.  The idea
> behind some of my chatter on the list is to put this approach on par with
> scripting and java code programming initialization. Some changes in the
> serializer were needed to allow this to happen. Scripting, includes and
> standard listener programming already works by default of course.
>
> The approaches to enabling common behavior all have different pro/cons
> around deployment to clients and ease-of-reuse. The serializer relies on
> fixes that are not in the general release yet so it cannot be used. It
> paints a picture of a transparent approach to configuring behavior. Again,
> all with pros and cons.
>
>
>
>
>
> -----Original Message-----
> From: Chris Bartlett [mailto:cbartlet...@googlemail.com]
> Sent: Friday, June 18, 2010 10:42 AM
> To: dev@pivot.apache.org
> Subject: Re: Pivot components & the keyboard
>
> Yes, I would certainly be interested seeing what you have done, and I'm
> sure
> others might also.
> Is your approach a way to move the functionality away from the skin
> classes?
>
> The various bits of component functionality that I described in my previous
> post are ones that I have either already written or plan to.
> My intention was to offer the code for inclusion in the Terra theme skins
> if
> it was wanted.
>
> However I have been thinking about how best to make use of the existing
> Pivot components whilst still being able to apply my own customizations.
>
> Chris
>
>
> On Fri, Jun 18, 2010 at 11:21 PM, aappddeevv <aappdde...@verizon.net>
> wrote:
>
> > Chris,
> >
> > I ran into this issue as well. It turns out that you can a tiny bit of
> > pluming and make this happen transparently across all components in
> pivot.
> >
> > I think pivot will have to make choices to provide closer-to-the-user-app
> > API to make an "easy" layer for folks, but I am not convinced that this
> is
> > the right point in the maturity of pivot to pick-winners yes despite our
> > desires for pivot to do so. I think this is a classic tension between
> > people
> > like us and the core library team.
> >
> > If you want, I can pass along the approach to add behaviors to
> component's
> > using a specific cross-cutting injection model and how to transparently
> > apply it to the components below. Its all configurable at the component
> > level which is where I think the capability needs to be at to create
> better
> > decoupling.
> >
> > The only issue really becomes whether the component supports the specific
> > behavior you want i.e. is there a selectAll-like method on a ListView.
> You
> > may have to write that "handler" yourself if its not in the component
> > already. This approach has code for working with keyboard handling today,
> > but I am finalizing the design pattern for common command
> > invocation/execution patterns. GregB made a change to the serializer for
> > the
> > API you need to deal with this.
> >
> >
> >
> >
> > -----Original Message-----
> > From: Chris Bartlett [mailto:cbartlet...@googlemail.com]
> > Sent: Friday, June 18, 2010 9:23 AM
> > To: dev@pivot.apache.org
> > Subject: Re: Pivot components & the keyboard
> >
> > Please see below for my comments having quickly reviewed all of the Pivot
> > components (from trunk) that I could think of.
> > I ignored TextArea as it is still under active development
> > Apologies in advance for the long list.
> >
> > Regards,
> >
> > Chris
> >
> > Can you provide some specific examples? Some (generic) keyboard shortcuts
> > > make sense at the component level, but others are specific to an
> > individual
> > > app. The easiest way to create application-specific shortcuts is to add
> > > entries to your main window's action mappings. See
> > > Window#getActionMappings() - it returns a sequence of
> > Window.ActionMapping
> > > that you can populate to associate keystrokes with actions.
> > >
> > > Greg
> > >
> > >
> >
> >
> > Navigation Containers
> >
> >
> > Accordion
> > - Ability to navigate between panels with keys
> > - Up/Down arrows to decrement/increment the selected panel index
> > - Home & End to select the first or last panel respectively
> > - Possibly require a modifier such as Control?
> > - Needs to be focusable first
> >
> >
> > Expander
> > - Spacebar to expand/collapse
> > - Needs to be focusable first
> >
> >
> > Panorama
> > - Ability to navigate with keys
> > - Up//Down/Left/Right
> > - Optional modifier key to adjust using an increased step size
> > - Needs to be focusable first
> >
> >
> > Rollup
> > - Spacebar to expand/collapse
> > - Needs to be focusable first
> >
> >
> > TabPane
> > - Control+Tab & Control+Shift+Tab
> > - Next & previous enabled tabs
> > - Needs to be focusable first
> >
> >
> >
> > Components (widgets)
> >
> >
> > LinkButton
> > - Space to select
> > - Needs to be focusable first
> >
> >
> > ListButton
> > - Alt+Down arrow to show the list
> >
> >
> > ListView
> > - Home & End to select (and scroll to) first/last item respectively
> > Use of a modifier to determine whether to jump to only enabled items
> > Would also need to respect the current Shift modifier to increase the
> > selection
> > - Control+A to select all items (on multi-select lists)
> > Use of a further modifier to determine whether to select only enabled
> items
> > - Modify the logic in TerraListViewSkin.keyReleased() so that the
> selection
> > loops back to the first matching item if there are no more matchin items
> > with a higher list index
> > - Addition of a style/property which would make list view selection with
> > the
> > up/down arrow keys loop from the first to the last item & vice versa
> > This behaviour is already implented in Spinner with the the 'circular'
> > property
> > -- If this is added, enable it for ListViews used internally within the
> > skins for the following components (which are unlikely to contain
> > relatively
> > small lists which would benefit)
> > ListButton
> > MenuBar
> > MenuButton
> > SuggestionPopup
> >
> >
> > RadioButton
> > - Ability to change focus within the button group with arrow keys
> > - Up and/or Left to focus on previous button
> > - Down and/or Right to focus on next button
> > - Home & End to focus on first & last button respectively
> >
> >
> > Slider
> > - Home & End to set the value to start/end respectively
> >
> >
> > TableView
> > - Home & End to select (and scroll to) first/last row respectively
> > Use of a modifier to determine whether to jump to only enabled rows
> > Would also need to respect the current Shift modifier to increase the
> > selection
> > - Control+A to select all rows (on multi-select lists)
> > Use of a further modifier to determine whether to select only enabled
> rows
> > - Select row matching a pressed key (as per ListView)
> > Loop the selection so that if there are 3 rows beginning with the letter
> > 'a'
> > and the last one is selected, the selection would jump to the first row
> of
> > the 3
> > If the TableView is sorted, then use the sorted column as the source of
> the
> > value to be compared with the pressed key
> > If not, use first visible text column
> > If no visible text columns, either use a toString() or take no action
> >
> >
> > TextInput
> > - Control+Left/Right to position caret at start of previous/next word
> > - Shit+Control+Left/Right position the caret at start of previous/next
> word
> > and expand the selection span
> >
> >
> > TreeView
> > - Home & End to select (and scroll to) first/last node respectively
> > (without
> > expanding any branches)
> > (Use of a modifier to determine whether to jump to only enabled nodes)
> > - Control+A to select all items (on multi-select trees)
> > Use of a further modifier to determine whether to select only enabled
> nodes
> > - Select sibling matching a pressed key (as per ListView)
> > Loop the selection so that if there are 3 nodes beginning with the letter
> > 'a' and the last one is selected, the selection would jump to the first
> > node
> > of the 3
> > - Left arrow
> > If selected node is an open branch, close it (existing functionality)
> > If selected node is a closed branch or a leaf, select the parent branch
> > - Control + Up/Down
> > Jump to the previous or next *sibling* of current node, ignoring any
> > visible
> > children in opened branches
> >
> >
>

Reply via email to