Support for panels to be docked into the main window such a sidebar. This involves:
- a button to dock/undock
- events when a dock/undock happens
- panel methods to dock/undock via a script
is this still something we're likely to get for firefox 4?
Unlikely. Certainly not panels with titlebars.
Created attachment 522811 [details] [diff] [review]
This was the prototype I used for http://enndeakin.wordpress.com/2011/03/02/fun-with-toolbars/ but I haven't tested it recently, so it might not work currently.
To create dockable panels:
-- stuff goes here --
To create docking points:
This one creates a dock that expands content downwards when dragged over. If the dock is in a <stack>, the expand attribute isn't needed.
I'd love to see some mock-ups of what this would look like. I'm no artist, but it would inspire a few people who can do the work.
This will certainly be useful for all of the Firefox developer tools when it lands.
To summarize the questions that need to be answered about the UI design for this:
- what should the panel look like when docked into the main window?
- are there UI controls/buttons to undock/close/resize the docked panels?
- can the docked panel be dragged out to undock?
- when undocked into a floating popup, how does one dock the popup again?
- is it possible to close the popup without docking it into the main window?
- what sort of UI is presented when dragging the popup onto suitable docking points, if any?
I think making this generic by building up the mechanisms a bit and emulating toolbarpalette and friends would alleviate many of the problems regarding implementation holdup. Consumers can then blend whichever elements and style as they wish.
(In reply to comment #6)
> - what should the panel look like when docked into the main window?
No different from a xul:box by default.
> - are there UI controls/buttons to undock/close/resize the docked panels?
Not built-in, though it might be a good idea to include a basic binding that can be used without consumers having to roll everything by hand all the time, sort of how you get a column picker for free if you use trees.
<dockcontrols/>? <splitter/> and <resizer/>
> - can the docked panel be dragged out to undock?
> - when undocked into a floating popup, how does one dock the popup again?
Keeping with <toolbarpalette/>-like approach, the XUL in the window would look something like:
If we go with drag-can-redock, then dragging from the dockcontrols element over a dockpoint (empty <dock/> in the parent window) could do this.
> - is it possible to close the popup without docking it into the main window?
Change the close attribute to a string type and let it take the values close="close" (or keep close="true") and close="dock". The former is simple close, the latter redocks the panel at its container dock (or the last dock used? allow a dock attribute on the panel where its value is the id of the dock it will go back home to).
This is still compatible with the current close behavior, assuming the way the close attribute works now is the same as other XUL, i.e., true if non-empty false otherwise.
> - what sort of UI is presented when dragging the popup onto suitable docking
> points, if any?
Drag feedback from dockcontrols by default would look a lot like the black caret that you get for customizable toolbar items and drag and drop for trees—a thick-ish line (black in my case with gnomestripe).
dockcontrols et al can all have appearances admittedly less than satisfactory for the specific consumers you in mind, but everything would be generic enough, e.g., for UX to style and provide feedback about how the generic toolkit form can be improved in its own right.
I added a good start on the UI spec generally based on what I think would be a basic implementation at https://wiki.mozilla.org/XUL:Panel_Improvements:Docks
The specific appearance would need to be left to a UI designer.