2.1 Placing the cursor over entries

{{{

Level Fish

Primary Actor Netbook User

Other Actors Launcher

Trigger The Netbook User places the cursor over a Launcher entry

Preconditions None

Success End Condition See the Primary Scenario

Failure Conditions None

}}}

Primary Scenario

1. Immediately after placing the cursor over an entry, the entry icon uses UNDECIDED VISUALS to acknowledge the cursor placement, and the entry's label is displayed.

2. Once the cursor has remained over the entry for a long delay, the entry's !QuickList is shown. If another entry's !QuickList was showing when the cursor was placed over this entry, the previous !QuickList hides and the !QuickList for this entry is shown with no delay.

3. Moving the cursor off of the entry (and !QuickList) returns the entry to its normal drawing state (and hides the !QuickList). The entry's label disappears (straight cut, no fade) as soon as the cursor is no longer over the entry.

USE CASE ENDS

2.2 Launching applications

This use case also describes cursor-driven application switching. See variation 2.b

{{{

Level Fish

Primary Actor Netbook User

Other Actors Launcher

Trigger None

Preconditions The Launcher contains an entry for an application that is

Success End Condition The appropriate application is launched and focused

Failure Conditions There are more entries than can fit on the screen

}}}

Primary Scenario

1. The Netbook User clicks the entry for the application he wishes to launch. Double-click protection makes double-click act as single-click.

2. The clicked entry responds visually, indicating that it was clicked and that the application is loading.

3. The application finishes launching and is focused.

USE CASE ENDS

1.b Variation: There are more entries than can fit on the screen

1. The Netbook User places the cursor over the Launcher.

2. To bring the desired entry into view, the Netbook User scrolls downward using any of the appropriate techniques described in the Interaction Overview, including edge-scrolling. As the Netbook User causes the Launcher to scroll, entries snap cleanly into place so that the entry in the first position always rests in the same spot. See Dragging, Scrolling, and Edge-Pushing sections of the Interaction Overview for more details.

RETURN TO 1

Notes

2.b Variation: The entry clicked represents an already-running application

1. If the application is already running when its Launcher entry is clicked, that application becomes the focused application. A new instance of the running application is not created. The newly focused window is the most recently focused window belonging to the newly focused application. If all windows belonging to the clicked entry are minimized, they are restored.

RETURN TO 3

2.3 An application window is opened

{{{

Level Fish

Primary Actor Netbook User

Other Actors Launcher

Trigger An application window is opened

Preconditions None

Success End Condition The new window is associated with an existing entry; a

Failure Conditions The parent application does not already have an entry

}}}

Primary Scenario

1. The newly opened application window is associated with the parent application's existing Launcher entry; a new entry is not added to the Launcher.

USE CASE ENDS

1.b Variation: The appropriate entry is not already in the Launcher

See Adding an unpinned entry.

2.4 A window raises an alert

{{{

Level Fish

Primary Actor Netbook User

Other Actors Launcher

Trigger A window raises an alert

Preconditions None

Success End Condition UNDECIDED VISUALS indicate the alert

Failure Conditions The entry is not visible

}}}

Primary Scenario

1. The entry corresponding to the application exhibits UNDECIDED VISUALS to indicate the alert.

2. When the alert state disappears, the entry should appear normal again.

USE CASE ENDS

1.b Variation: The entry is not visible

1. The entry still receives a strong glow, but there is no Launcher movement or shimmying. We do not scroll the Launcher to reveal the relevant entry if that entry is not visible when the alert is raised because this is too distracting to the user.

2.5 Cycling between the focused and penultimately focused applications

Low priority for Lucid

{{{

Level Fish

Primary Actor Netbook User

Other Actors Launcher

Trigger The Netbook User decides to switch to the previously focused

Preconditions The Launcher contains at least two entries representing

Success End Condition The penultimately focused running application becomes the focused

Failure Conditions The focused application is the only running application

}}}

Primary Scenario

1. The Netbook User presses Super+Tab and releases Super immediately after pressing Tab.

2. The penultimately focused running application becomes the focused application. The transition between applications is a straight cut, no overt animation is used.

USE CASE ENDS

1.b The focused application is the only running application

1. In this case, pressing Super+Tab has no effect.

USE CASE ENDS

1.b Variation: After pressing Super+Tab, the Netbook User continues to hold Super

Continuing to hold Super after pressing Tab causes the Launcher to enter Switcher mode. Refer to Cycling through running applications.

2.6 Cycling through running applications

Low priority for Lucid

{{{

Level Fish

Primary Actor Netbook User

Other Actors Launcher

Trigger The Netbook User decides to switch to another running application

Preconditions The Launcher contains at least two entries representing

Success End Condition Another running application becomes the focused application

Failure Conditions There are more running entries than can fit on the screen

}}}

Primary Scenario

attachment:UCCyclingRunningApplications.png(View wireframes)

1. The Netbook User presses Super+Tab, and releases Tab while continuing to hold Super. This causes the Launcher to enter Switcher mode.

2. Continuing to hold Super, the Netbook User presses Tab repeatedly, causing the Launcher to cycle through entries of running applications in Switcher mode. The name of the selected entry is shown.

3. Once the desired entry is highlighted, the Netbook User releases the Super key, causing the Launcher to exit Switcher mode and switch focus to the corresponding application.

USE CASE ENDS

2.b Variation: There are more running entries than can fit on the screen

1. Once the selection has moved at least half-way down the column, each successive press of Tab moves the entries up one position instead of continuing to move the selection down. In other words, pressing Tab still has the same effect, only instead of moving the selection down to the next entry, the next entry moves up to the selection.

2. Once the final running entry is brought on screen, pressing Tab reverts to moving the selection down instead of moving entries up.

3. If the user moves the selection past the final running entry, the selection is moved back to the first entry. A very subtle animation should be used to show that the Launcher scrolled back up without making the user feel uncomfortable.

RETURN TO 3

2.c Variation: The focused application is the only running application

This is not a true variation, only an explicit mention that the Primary Scenario still obtains when there is only one running application; the Launcher enters switcher mode, etc.

2.7 Launching (or switching to) a specific application

{{{

Level Fish

Primary Actor Netbook User

Other Actors Launcher

Trigger None

Preconditions The Launcher contains an entry for an application that is not

Success End Condition The application in the position corresponding to the digit used in

Failure Conditions The Netbook User uses a digit that is out of range in the keyboard shortcut.

}}}

Primary Scenario

1. The Netbook User presses keyboard shortcut Super+N, where N is a digit corresponding to an entry. For example, the user presses Super+1 to launch or switch to the entry in the first position, Super+2 for the second position, etc. Super+0 corresponds to the tenth position.

2. The Launcher reacts exactly as if the corresponding entry had been clicked by either launching the application if it is not already running, or switching to the application if it is already running.

USE CASE ENDS

1.b Variation: The Netbook User uses a digit that is out of range

1. When the digit used in the keyboard shortcut is a number greater than the number of entries, the shortcut has no effect.

RETURN TO 1

1.c Variation: The Netbook User holds Super before pressing a digit

1. Holding Super for more than 1000ms displays the digits 1-9 on the first nine Launcher entries, 0 on the tenth Launcher entry, and the character '+' on the All Applications entry. If the Launcher is scrolled away from its base position (where the first Entry is in the first position), the Launcher quickly and smoothly scrolls back to its base position before displaying the digit overlays. These overlays fade out when Super is released.

RETURN TO 2

2.b Variation: The launched entry is not on screen

(On very small displays, the Launcher may not be able to fit all ten entries corresponding to the ten Super+N shortcuts.)

1. When the launched entry is not on screen, the Launcher should scroll it into view when the keyboard shortcut is pressed so the user can see the focused entry.

USE CASE ENDS

<>

2.8 Adding an entry by dragging an item from Applications place

{{{

Level Fish

Primary Actor Netbook User

Other Actors Launcher

Trigger Netbook User begins dragging an Application Item from the Applications place.

Preconditions None

Success End Condition The application entry is added to the Launcher in the

Failure Conditions The item dragged is not an Application Item and cannot be added.

}}}

Primary Scenario

1. The Netbook User drags an Application item from the Applications place into the drag safe zone. While dragging, the cursor is drawn as a closed (gripping) hand. While the drag is over the Launcher, a '+' emblem as affixed to the cursor.

2. All icons whose centers fall below the cursor position on the vertical axis slide down one position to make room for the icon being dragged. If the item is dragged below the bottommost resident icon, an empty position is drawn before the All Application entry.

3. While the user is still moving the cursor to position the icon, resident icons should continue to slide upward or downward to leave an empty position near the cursor.

4. Once the user decides where to place the icon, the user drops the icon over the Launcher and the empty position revealed by the resident icons is occupied by the icon dropped.

USE CASE ENDS

2.b Variation: There are more entries than can fit on the screen

1. Dragging the Application item while edge-scrolling allows the Netbook User to scroll the Launcher to add the new entry to an off-screen region.

RETURN TO 2

2.c Variation: The item dragged cannot be added

1. When the item being dragged cannot be added--for example, if it is a not an Application item but a reference to an application available in the Software Center--the resident icons should not slide to create an empty slot. The Launcher should draw itself as if the drag operation were not taking place. (Unless the item being dragged could potentially be dropped onto an entry, but this case is treated separately.)

2. The user will get the impression that the item cannot be placed in the Launcher, as no empty position is available, so the user will discontinue the drag.

USE CASE ENDS

3.b Variation: The user drags the icon out of the drag safe zone without dropping it

1. When the cursor is moved out of the drag safe zone, the Launcher returns to its normal state; any icons that have moved out of place to make room for the new icon return to their starting positions.

2. At this point, the user may discontinue the drag by dropping the item, or may drag the item back into the drag safe zone to reopen the empty position.

USE CASE ENDS

4.b Variation: The item dragged is already present in the Launcher

1. The resident icon is moved to the new position. This move should be animated so the user understands what has happened, rather than believing that the Launcher has spontaneously changed icon order. The icon moved slides from its old position to its new position, and icons below the old position slide upward one position.

USE CASE ENDS

2.9 Adding an entry for an application installed from Software Center

Allowing users to easily launch newly installed applications from the Software Center will make those applications appear in the Launcher anyway. Once the unpinned icon is in the Launcher, it's easy enough for the user to pin it there if they decide they want it to remain in the Launcher.

2.10 Removing an entry using right-click

{{{

Level Fish

Primary Actor Netbook User

Other Actors Launcher

Trigger None

Preconditions The Launcher is not empty

Success End Condition The icon is removed from the Launcher.

Failure Conditions The corresponding application is still running so its entry

}}}

Primary Scenario

1. The Netbook User right-clicks on an entry to display the menu for that entry.

2. The Netbook User chooses the menu entry labeled "Remove from Launcher".

3. The removed entry disappears, and any entries below it slide upward to fill the empty position.

USE CASE ENDS

2.b The corresponding application is still running

1. The "Remove from Launcher" menu entry is instead a checkbox menu entry labeled "Keep in Launcher" in a checked state. The Netbook User clicks the menu entry to remove the check.

2. The entry moves to the position immediately after the last pinned entry; pinned entries simultaneously move up to close the empty position left by the newly unpinned entry.

3. Eventually, the corresponding application quits.

RETURN TO 3

2.11 Removing an entry by dragging it off the Launcher

{{{

Level Fish

Primary Actor Netbook User

Other Actors Launcher

Trigger None

Preconditions The Launcher is not empty

Success End Condition The icon is removed from the Launcher.

Failure Conditions The corresponding application is still running.

}}}

Primary Scenario

1. The Netbook User drags the entry horizontally to the right to release it from the Launcher, leaving an empty position in its absence. A minus symbol is affixed to the cursor as long as the drag is not over the Launcher.

2. If the drag leaves the drag safe zone, the empty position left in the Launcher to closes.

3. The Netbook User drops the entry, causing the dragged representation of the entry to disappear.

4. All entries previously below the removed entry move upward to fill the empty position.

USE CASE ENDS

4.b Variation: The corresponding application is still running

1. When the entry is dropped it "falls" into its original position and becomes unpinned.

2. The running application quits with appropriate care.

RETURN TO 3

2.12 Removing an entry by other means

{{{

Level Fish

Primary Actor Netbook User

Other Actors Launcher, Package Manager

Trigger The Netbook User uninstalls an application with a

Preconditions None

Success End Condition The icon is removed from the Launcher

Failure Conditions None

}}}

Primary Scenario

1. When an application corresponding to an unpinned entry is removed (e.g. using apt, synaptic, Software Center, etc.), its entry quietly fades from the Launcher.

2. All entries previously below the removed entry move upward to fill the empty position.

USE CASE ENDS

<>

2.13 Adding an unpinned entry

The Launcher must be able to display applications even when they are opened by other means. For example, if the user runs "gedit" in a terminal, or uses another launcher application such as GNOME Do, the Launcher must show that the application is being launched and what its status is.

{{{

Level Fish

Primary Actor Mikhail

Other Actors Launcher

Trigger Mikhail runs the command "gvim" in GNOME Terminal

Preconditions None

Success End Condition An entry for GVim is visible and focused

Failure Conditions GVim was already running

}}}

Primary Scenario

1. GVim receives focus immediately, even while it is still busy launching and it has not yet opened a window. (If the application were to wait until it had finished loading to steal focus, it could unexpectedly interrupt the user if it does not Launch immediately.) The previously focused window should lose focus, and the name of the application should be displayed in the panel menu. Coordinate with Panel work on this.

USE CASE ENDS

1.b Variation: GVim was already running

1. The entry for GVim is focused.

USE CASE ENDS

1.c Variation: GVim was not running, but had a pinned entry

1. The pinned entry behaves as if it were clicked, by stealing focus and animating until GVim is fully opened.

USE CASE ENDS

1.d Variation: Adding GVim makes it so there are more entries than can fit on the screen

1. The Launcher scrolls down (entries move up) until a new, empty position is visible at the tail of the Launcher. The new entry is inserted before the All Applications entry.

RETURN TO 1

2.14 Pinning an unpinned entry

{{{

Level Fish

Primary Actor Netbook User

Other Actors Launcher

Trigger None

Preconditions A unpinned entry is present in the Launcher

Success End Condition The unpinned entry is pinned (stays in the Launcher when

Failure Conditions None

}}}

Primary Scenario

1. The Netbook User right-clicks on the Launcher to reveal its !QuickList.

2. The Netbook User clicks the "Keep in Launcher" menu entry so it becomes checked.

USE CASE ENDS

2.15 Dragging and dropping a selection onto an entry

{{{

Level Fish

Primary Actor Netbook User

Other Actors Launcher

Trigger None

Preconditions None

Success End Condition The file dropped is opened in the corresponding application

Failure Conditions There are more entries than can fit on the screen

}}}

Primary Scenario

1. The Netbook User drags a selection (e.g. files, text) over an entry in the Launcher.

2. After a short delay, windows belonging to the corresponding application spread, and the entry shows its !DropList. The primary entry is displayed in the Drag-over state.

3. The Netbook User drops the selection.

4. The !DropList's primary entry is activated.

USE CASE ENDS

1.b Variation: There are more entries than can fit on the screen

1. When the desired entry is not on screen, dragging while edge-scrolling causes the Launcher to scroll. !DropLists are not shown and windows are not spread while the Launcher is being scrolled.

RETURN TO 2

3.b Variation: The drop occurs in negative space

1. Dropping in negative space (i.e. the space not occupied by individual spread windows, the !DropList, the Launcher, or the Places Bar) discontinues the drag (i.e. hides the !DropList, unspreads windows).

USE CASE ENDS

4.b Variation: The DropList's primary entry cannot accept the drop

1. The !DropList closes without performing an action, and the windows unspread. (The primary entry is Inactive).

USE CASE ENDS

2.16 Dragging and dropping a selection onto a !DropList entry

{{{

Level Fish

Primary Actor Netbook User

Other Actors Launcher

Trigger None

Preconditions None

Success End Condition The action represented by the !DropList entry is performed on the selection

Failure Conditions There are more entries than can fit on the screen

}}}

Primary Scenario

1. The Netbook User drags a selection (e.g. files, text) over an entry in the Launcher.

2. Windows belonging to the corresponding application spread, and the entry shows its !DropList.

3. The Netbook User drags the selection over the desired !DropList entry.

4. The Netbook User drops the selection over the desired !DropList entry.

5. The action corresponding to the !DropList entry receiving the drop is activated. Application windows unspread and the !DropList disappears.

USE CASE ENDS

1.b Variation: There are more entries than can fit on the screen

1. When the desired Launcher entry is not on screen, dragging while edge-scrolling causes the Launcher to scroll. !DropLists are not shown and windows are not spread while the Launcher is being scrolled.

RETURN TO 2

5.b Variation: The !DropList entry cannot accept the drop

1. The !DropList closes without performing an action, and the windows unspread.

USE CASE ENDS

2.b Variation: The drop occurs in negative space

1. Dropping in negative space (i.e. the space not occupied by individual spread windows, the !DropList, the Launcher, or the Places Bar) discontinues the drag (i.e. hides the !DropList, unspread windows).

USE CASE ENDS

2.c Variation: The drop occurs over the Launcher entry

1. Dropping over the Launcher entry selects the primary !DropList entry.

USE CASE ENDS

2.17 Dragging and dropping a selection onto a specific window

{{{

Level Fish

Primary Actor Netbook User

Other Actors Launcher

Trigger None

Preconditions The Launcher contains a running entry with open windows

Success End Condition The target window is raised, and the application to which

Failure Conditions There are more entries than can fit on the screen

}}}

Primary Scenario

1. The Netbook User drags the selection over an entry in the Launcher.

2. The entry's !DropList is displayed immediately, and the windows belonging to the corresponding application are spread.

3. The Netbook User drags the file over the desired target window and holds it there for a long delay. After a long delay, the target window and its parent application become focused.

USE CASE ENDS

1.b Variation: There are more entries than can fit on the screen

1. When the desired entry is not on screen, dragging while edge-scrolling against the upper and lower edges of the Launcher causes the Launcher to scroll. This behavior is similar to the behavior when adding or repositioning entries when there are more entries than can fit on the screen. !DropLists and spread windows are not displayed while the Launcher is scrolling.

RETURN TO 2

2.b Variation: The application has no open windows

1. Only the !DropList is shown.

USE CASE ENDS

3.b Variation: Some windows are minimized

1. Minimized windows should appear as normal windows when all application windows are spread. This may require minimized windows to become temporarily unminimized, and then re-minimized appropriately.

RETURN TO 4

4.b The file is dragged over another entry

1. Once an application's windows have been spread out, dragging the file over another running application and holding it there for more than a short delay shows the !DropList and spread windows for that entry.

RETURN TO 4

2.b Variation: The drop occurs in negative space

1. Dropping in negative space (i.e. the space not occupied by individual spread windows, the !DropList, the Launcher, or the Places Bar) discontinues the drag (i.e. hides the !DropList, unspreads windows).

USE CASE ENDS

2.18 Scaling windows then choosing a specific window

{{{

Level Fish

Primary Actor Netbook User

Other Actors Launcher

Trigger None

Preconditions An application is running with at least one open window

Success End Condition The Netbook User chooses the desired window, causing it to become the

Failure Conditions The corresponding application has no open windows

}}}

Primary Scenario

1. The Netbook User right-clicks (or left-clicks-and-holds, see Interaction Overview's Click section) on the entry of the application whose window he wants to access.

2. The entry's !QuickList is displayed and windows belonging to the corresponding application are spread out.

3. The Netbook User clicks on the desired window, causing the window to focus, and switching to the parent application if necessary.

USE CASE ENDS

2.b Variation: The corresponding application has no open windows

1. Only the !QuickList is displayed; no windows are spread, because none are available.

USE CASE ENDS

2.19 Reorganizing entries

{{{

Level Fish

Primary Actor Netbook User

Other Actors Launcher

Trigger None

Preconditions The Launcher contains more than one entry

Success End Condition The entry is relocated to where it is dragged

Failure Conditions There are more entries than can fit on the screen

}}}

Primary Scenario

1. The Netbook User first drags the entry she wishes to relocate off of the Launcher to the right, into the drag safe zone.

2. When the entry is first dragged horizontally, its former position in the Launcher becomes an empty space. If the Netbook User drags the entry upward, entries above the empty position move downward to fill the empty position and vacate the position closest to the cursor. Entries move similarly (but in the opposite direction) if the Netbook User drags the entry below the empty position. The behavior is exactly the same as if the user were adding a new entry by dragging an item from the Applications place.

3. When the Netbook User drags the entry over the desired position, the Netbook User drops the entry and the entry is placed in the new position.

USE CASE ENDS

1.b Variation: There are more entries than can fit on the screen

1. The Netbook User may drag the entry with edge-scrolling against the top and bottom edges of the Launcher to access other segments of the Launcher that are not currently on screen.

RETURN TO 2

Notes

Entry icons should be animated continuously; from the time the entry is in the Launcher, continuing to when it is being dragged, and finishing when it is ultimately dropped in a new position, the entry icon should not disappear or "teleport." For example, if the user drops the entry in its new position but the drop is not a pixel-perfect placement, the entry icon should slide smoothly into its new origin instead of teleporting.

2.20 Quitting the focused application

{{{

Level Fish

Primary Actor Netbook User

Other Actors Launcher

Trigger None

Preconditions The Launcher contains a running entry

Success End Condition The focused application quits.

Failure Conditions No other applications are running

}}}

Primary Scenario

1. The Netbook User right-clicks the focused entry to reveal its !QuickList.

2. The Netbook User clicks the menu entry labeled "Quit."

3. The corresponding application quits with appropriate care (e.g. displays a save confirmation dialog if necessary).

4. The entry is removed from the Launcher if it is unpinned, and all entries following it slide upward to close the empty position. Otherwise, If the entry is pinned, its visual treatment changes to indicate that it is not running.

5. The previously focused application becomes focused, and its entry becomes the focused entry.

USE CASE ENDS

5.b Variation: No other applications are running

1. When no other applications are running, the Home screen is shown in the Dash.

USE CASE ENDS

2.21 Quitting an unfocused application

{{{

Level Fish

Primary Actor Netbook User

Other Actors Launcher

Trigger None

Preconditions The Launcher contains an unfocused running entry

Success End Condition The appropriate application quits.

Failure Conditions None

}}}

Primary Scenario

1. The Netbook User right-clicks the entry to reveal its !QuickList.

2. The Netbook User clicks the menu entry labeled "Quit."

3. The corresponding application quits with appropriate care. This may cause the application to raise an alert, if, for example, the application prompts the user to save unsaved work before quitting.

4. The entry is removed from the Launcher if it is unpinned, and all entries following it slide upward to close the empty position. If the entry is not unpinned, its visual treatment changes to indicate that it is not running.

USE CASE ENDS

<>

2.22 Adding a Prism entry

{{{

Level Sky

Primary Actor Netbook User

Other Actors Prism, Firefox, Launcher, Firefox Bookmark

Trigger None

Preconditions None

Success End Condition A new entry representing a Prism instance for the dropped

Failure Conditions None

}}}

Primary Scenario

1. The Netbook User drags a Firefox Bookmark from within Firefox.

2. The Netbook User drops the Firefox Bookmark on the Launcher. The Launcher behaves exactly as if the Netbook User were adding a new Application entry.

3. A new entry representing a Prism instance for the dropped Firefox Bookmark appears in the Launcher.

USE CASE ENDS

1.b Variation: The Netbook User drags a selected URL

1. The Netbook User may drag a selected URL from any source.

RETURN TO 2

Notes

Determining the Icon for a Prism Entry

1. Check for an icon identified by the domain name (e.g. "flickr.com") in the icon set "Web".

2. Check for the file {{{ubuntu-launcher.png}}} at the root directory of the host.

3. Check for the file {{{apple-touch-icon.png}}} at the root directory of the host.

4. Download the favicon for the instance URL, and superimpose it on a generic web entry icon.

Determining the Label for a Prism Entry

1. If the Prism entry was added when the Netbook User dropped a bookmark on the Launcher, the title of the bookmark is used.

2. If the Prism entry was added when a text selection containing a URL was dropped on the Launcher, the title of the document at the URL should be used.

3. If no suitable label is found, the URL itself should be used as the label.