...
There are some features of general GUI widgets that users like and might help if added to tiers. One loose analog is the columns of a spreadsheet. Spreadsheet columns can be moved and resized in various ways. However, tiers are not entirely generalizable as Swing components. We might do well to introduce some Swing concepts to tiers though. There are also other possibilities that are specific to genomics that go beyond (or restrict) Swing components.
- Scrolling a Single Tier - An alternative to stretching a single tier to fit the vertical space might be to leave it at a fixed size and add a scroll bar when the height of the tier's display exceeds that allocated.
- Zooming a Single Tier Vertically - A single tier might be "zoomable" somehow. Note that this requires scrolling when zoomed in past the point where the entire tier can be seen at once.
- Expanding a Single Tier Vertically - Manipulating a border between two tier labels as above could have other behaviors.
- For a single tier being expanded or shrunk we could provide a way to toggle the shrink to fit behavior if the tier.
- Instead of shrinking one tier and expanding the other, one tier could be shrunk or expanded and all the other tiers retain their hight and just be moved up or down in the panel.
- Or one tier could be directly shrunk or expanded and all other tiers shrunk or expanded in response keeping the overall height of the containing scene fixed. Think of an accordeon pleat being manipulated and all the other pleats reacting by making or taking space with the ends of the accordeon remaining fixed.
- No tier scrolling (yet)
- Selection partitions tier resizing. Resizing affects tiers within the selection and not those outside it. Resizing tiers outside the selection affects only those tiers on that side of the selection. It does not affect selected tiers. Nor does it affect tiers on the other side of the selection.
- Dragging interior tiers (either within a selection or when there is no selection) accordions tiers above and below (again with respect to selection as above).
- Dragging the top or bottom border of a selection squeezes or expands the selection and the tiers on the outside the selection on that side. Tiers on the other side of the selection remain fixed.
- Zoom control expands only selected tiers (or all tiers if none have been selected) and pushes (not squeezes) outside tiers away.
- Dragging a border between tiers expands one tier and squeezes the other. When the squeezed tier reached its minimum height, the next tier is squeezed until it reaches its minimum height. Such squeezing cascades until there are no more tiers to squeeze. Then dragging is inhibited.
- Some spreadsheets have a nice feature of automatically resizing a column to fit its contents when the column's right border is double clicked. When the tier label is double clicked the tier should expand (or contract) to its preferred size. Other tiers should be pushed or pulled to accomodate this.
Stability of the Axis
In the shuffling example above the axis was moved to a new position. However, the position of the axis tier should probably change. Nor should the axis tier be resized. This tier has special meaning in that tracks displayed below it are generally on the reverse strand. So changing the axis position in the stack of tiers would have undesired semantic consequences. Resizing might be allowed within bounds, but those would have to be carefully chosen.
...