View
 

Taskbar

Page history last edited by sompylasar 11 mos ago

type: widget

realease: ---

status: in planning

documentation: N/A

demo: N/A

 


 

1 - Description:

 

An element for docking windows, shortcuts, widgets, and menus, in order to manage increasingly busy application environments.

http://en.wikipedia.org/wiki/Taskbar

 

Currently utilizes ui.dialog with the addition of a minimize function for windowing. Windows have a 'handle' registered to the taskbar.

Utilizing a standard taskbar design, the current idea incorporates:

1) a 'Start' menu button which expands to display a div whose contents are currently outside of the scope of this plugin

2) a 'quicklaunch' area for shortcuts

3) a 'handlebar' for handles to windows. 

 

The specifics of what to add to the taskbar (shortcuts, task tray entries, menu, etc) are left to the developer, taskbar merely provides an interface for a developer to display them and provide a consolidated view and interaction point for the current environment of a web application. 

 

I do not have a firm grasp of MVC as an idea, so correct this if it is is wrong, but I'm thinking that ui.taskbar would effectively be implementing the View and Controller portions, leaving the models to vary and be defined by developers.

 

 

Taskbar basics

  • Handlebar
    • Displays window handles.
      • Each open window maps to one window handle on the taskbar.
      • Window handles display the text name of their window and optionally an icon
      • When left-clicked, handles either moveToTop, minimize, or restore their window, dependent upon window state.
      • When right-clicked, handles display a context-menu (close, minimize, etc)
  • Quicklaunch
    • Provides shortcuts to windows, widgets, etc.
    • User clicks on an "add quick-launch shortcut" interaction point (currently undefined)
      • Shortcut placed in quicklaunch area, simply an icon with a mouseover text.
      • User can then open the referenced item by clicking on the shortcut icon
      • Right clicking a shortcut opens a context menu for shortcut deletion, etc.
  • Start menu
    • A button that opens a developer-defined area directly above the start menu button. This can be filled with any content, but most likely will be used for menus.
    •  

 

Dependencies

  • Dialog
    • Windowing
  • Core
    • Obvious
  • Position
    • Position elements such as start menu and the taskbar itself
  • Buttons
    • Standardized interaction element

 

Can include

  • Toolbar
    • Taskbar should include the ability to dock toolbars to the taskbar.
  • Menu
    • Optionally for the start menu 

 

Taskbar additions

  • Task tray area for active background widgets such as instant messaging, notifications, etc.
  • Toolbar - allow any toolbar to be docked to the taskbar
  • Date / time (perhaps redundant )

 

Typical use cases - 

  • A complex web application that requires a point to launch, manage, and monitor activities and tasks.
  • Sub-taskbars could be utilized to provide miniature

 

Markup, style behavior notes

 

Example

 


 

2 - Visual Design:

 

 

 


 

 

3 - Functional Specifications/Requirements:

 

(Detailed descrition of how the script will be structured: defaults, options, architecture, extensibility, etc.)

status legends:

     âˆš - implemented

     Â± - partially implemented / still some bugs to solve

     Â¤ - currently under devellopment

    âˆ… - todo / not yet implemented

     x - still thinking / need discussion

 

Options:

  • menuButtonText:
  • zIndex
  • openWindowFilter
  • includeStartMenu
  • includeQuickLaunch 
  • includeWindowFilter
  • dialogDefaults:
Callbacks :
  • windowOpened
  • windowClosed
  • windowMinimized
  • windowRestored
  • handleClicked
  • menuOpened
  • menuClosed
  • quicklaunchClicked
  • quicklaunchAdded
  • quicklaunchDeleted
  • [ other callbacks? ] 

 

Methods:

  • restoreWindow
  • minimizeWindow
  • addWindow
  • removeWindow
  • addQuicklaunch
  • removeQuicklaunch
  • destroy()
  • [ other methods? ] 

 

Keyboard:

  •  

 

Specificiations:

  •  

 


 

4 - Markup & Style:

 

     4.1 Initial markup examples

 

     The most typical situation would be to transform a link or button element into a UI button but you should be able to call this on any element.

 

<div id="#taskbar">
<div class="ui-taskbar-startmenu-container"></div> [optional]
</div>

 

     4.2 Recommended transformed HTML markup

 

        Please recommend any changes.

 

<div id="#taskbar" class="ui-taskbar ui-widget ui-widget-header">     
<div class="ui-taskbar-startmenu">     
<div class="ui-taskbar-startmenu-button ui-state-default"></div>

<div class="ui-taskbar-startmenu-container ui-helper-hidden"></div>
</div>
<div class="ui-taskbar-quicklaunch">
<span class="ui-taskbar-quicklaunch-icon"></span>

<span class="ui-taskbar-quicklaunch-icon"></span>
</div>
<div class="ui-taskbar-handlebar">
<span class="ui-taskbar-handlebar-handle"></span>
</div>
</div>

     4.3 Accessibility recommendation

 

    (Detailed recommendations for ARIA, HTML markup, CSS and javascript that will contribute to universal access and full section 508 accessibility for screen readers, mobile devices and any other devices) 

 

     4.4 CSS & Theme

 

  •  Taskbar main element
    • Recommend ui-widget-header and ui-widget
      • ui-widget-header provides the most relevant taskbar background aesthetic 
      • Perhaps make a container for the ui-widget-header and make it the only child of #taskbar, with the other elements as children ?
    • Either perma-dock at bottom or allow for optional positioning at top ?
      • A vertical taskbar would require a little more effort but is possible.
    • What if a developer only wants to embed the taskbar into another element? 
      • For example, using the taskbar for the quicklaunch capability only
  • Startmenu 
  • Quicklaunch
    • Quicklaunch shortcuts
  • Handlebar
  • Handles

 


 

5 - Latest version of plugin:

 

coming soon

 

 


 

6 - Open issues being discussed

 

(Use this area to place things that we're hashing out like features and options we're not sure we should include, questions about how this fits into UI and relates to other widgets and utilities, known problems, whether features should be broken across multiple releases, etc.)

 


 

 

 

Comments (7)

profile picture

Richard D. Worth said

at 12:08 pm on Oct 2, 2009

Doesn't http://wiki.jqueryui.com/Toolbar fill this need? I'm not seeing a fundamental difference.

profile picture

hugh.lomas said

at 1:16 pm on Oct 2, 2009

A task-bar is a sort of meta-toolbar for the entire operating environment, and contains functionality outside of the scope of a toolbar. Docking active windows and tasks is not a built in functionality of toolbar, a toolbar's scope is generally limited to a specific frame of an environment.

For example, the windows taskbar may contain a window to Adobe Photoshop, which includes a toolbar for its photo editing functionality.

profile picture

Richard D. Worth said

at 3:16 pm on Oct 2, 2009

The difference you describe seems related to how it's used, not how it's designed or functions. At a base level a taskbar is nothing more than a toolbar. That is, it's a container (a bar) with buttons. I don't see highlighting the active window button in a taskbar while that window is active as any different than highlighting the Bold button in a RTE's taskbar when the cursor is inside some text that is bold. Or highlighting the selected tool in Photoshop, as in the example you mention. I guess what I'm saying is, the button should have the smarts to show that it's currently active, not its container. And from that perspective, a taskbar is a toolbar, and a RTE edit bar is a toolbar, and a photo editor toolbox is a toolbar. No need to have three separate plugins that all do the same thing: they contain related buttons.

profile picture

hugh.lomas said

at 4:14 pm on Oct 2, 2009

Yes, as I noted, it is a ultimately a toolbar. However, isn't every UI widget a 'container with buttons'? Datepicker? Widget with buttons. Tabs? Widget with buttons.

The key word is: behavior.

For example, if I make a window active, it makes all the other window handles inactive. If, however, I minimize the recently active window, then the previously active handle becomes active again. Where does the responsibility lie for tracking that? The active button or the one that was active previously?

jQuery UI's vision and goals -
"jQuery UI provides developers with effects, interactions, low-level UI utilities and flexible, fuller-featured widgets that make use of these UI utilities to form common UI patterns. We aim to provide a comprehensive set of accessible, themable UI widgets and utility plugins in a jQuery-style, event-driven architecture (find something, manipulate it)."

A window environment manager with a pluggable architecture for task management seems like a worthy pursuit to save time implementing something similar for future developers.

Another few behavior points for example: Window arrangement such as cascading, tiling, etc. Auto-hiding. Possibly grouping of similar windows. Could this taskbar be a component in a toolbar? Certainly.

Taking your point, however, it may be that the window management should be the only goal of this plugin.
Perhaps the scope of the plugin could be reduced to exclude the quicklaunch and startmenu, which may be better left to other plugin implementations.

What do you think?

profile picture

Richard D. Worth said

at 9:17 pm on Oct 2, 2009

"Where does the responsibility lie for tracking that? The active button or the one that was active previously?"

Neither? My point was only that it does not lie in the bar that contains those buttons. And that the buttons, without involvement of the bar, a dumb container, could simply reflect the state of which dialog was active.

"Perhaps the scope of the plugin could be reduced to exclude the quicklaunch and startmenu, which may be better left to other plugin implementations. What do you think?"

I personally would start with a toolbar that contains a set of radio buttons ( see the progress being made here http://jquery-ui.googlecode.com/svn/branches/dev/tests/visual/button/default.html ) as a taskbar and move beyond that only when something more was needed. You mentioned window managment. I think that should be handled separately. That is, you should be able to have window management without a taskbar, so window management shouldn't be built into the taskbar. If that were the case, would the taskbar be anything more than a toolbar? That's what I was getting at.

profile picture

sompylasar said

at 5:41 pm on Oct 3, 2009

Window management is definitely a separate behavior, and Layout manager should allow to dock an element to viewport bounds. Then, joining these components with a customized toolbar, we get the Taskbar.

Will the joining lay onto client code or it becomes a jQuery UI plugin - that's the question.

Obviously, the Taskbar plugin should reuse already defined plugins (Toolbar, Menu, Button, Datepicker for time/date toolbar etc.)

Perhaps a common abstraction of a toolbar should be incorporated for every element (including 'start' button container). This introduces more flexibility: resizing, docking, moving of any taskbar element. Toolbar should be consequently enhanced to allow adding any element as an item, not just buttons.

profile picture

Scott González said

at 8:23 pm on Oct 2, 2009

You don't have permission to comment on this page.