...
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.
A few terms: By squeeze, shrink, expand, or stretch we mean change the tier's height repacking its data to fit. By accordion squeeze we mean that tiers are squeezed proportionally until a minimum height is reached for each of them. accordion expansion or stretching is the inverse. By pleated squeeze we mean that one tier is squeezed until it reaches a minimum and then squeezing continues with the next tier and cascades from there. Pleated expansion or stretching is the inverse. By push and pull we mean change the position, but not the height of a tier.
- 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.
- All manual resizing and moving of tiers should be accomplished by manipulating the tier label.
- 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 borders (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.
...