Tomislav Bronzin Microsoft Regional Director & MVP CITUS Ltd. http://www.citusgrupa.com Session Code: CLI308

Download Report

Transcript Tomislav Bronzin Microsoft Regional Director & MVP CITUS Ltd. http://www.citusgrupa.com Session Code: CLI308

Tomislav Bronzin
Microsoft Regional Director & MVP
CITUS Ltd. http://www.citusgrupa.com
Session Code: CLI308
About Tomislav Bronzin
Microsoft Regional Director & MVP
Software Architect – CITUS Ltd.
Consultant and trainer on .NET architecture and
development, http://www.citusgrupa.com
METRO Trainer for Windows 7 and Unified Communication
INETA Europe Vice President http://europe.ineta.org
One of the leaders of Microsoft Community in Europe
Recent projects:
Protect@Work, Competence Manager, Forest
Management, Smarthome,
Speaker:
TechEd Europe, DevDays , DevReach,
WinDays, Sinergija, NT Konferenca, Vizija
Contact at [email protected]
Agenda
How the taskbar evaluated?
Design considerations for the new Taskbar
Managed wrappers around native APIs:
Windows API Code Pack
.NET 4 use WPF
Best practices and UI guidelines
A word about compatibility
Some Metrics
The evolution was justified, but…
More than 90% of sessions have fewer than
15 windows
More than 70% of sessions have fewer than 10
Non-default taskbar options are used by 0-10%
of users
Design Goals For New Taskbar
Single launch surface for frequent programs
and destinations
Easily controllable
Clean, noise-free, and simple
New opportunities for extensibility
Taskbar Buttons
Consolidation
Quick launch
Notification area icon
Desktop shortcut
Running application windows
Running
Not running
Active
Multiple
windows and
hover
Taskbar Buttons
Design considerations
Only users can pin applications to
the taskbar
The icon’s hot-track color is the icon’s
dominant color
Test icons with high DPI
Test with various themes and glass colors
The New Taskbar
…and beyond
Windows API Code Pack
for Microsoft .NET Framework
Managed class library to ease .NET Framework
access to Windows 7:
Taskbar Jump Lists, Icon Overlay, Progress Bar,
Tabbed Thumbnails, and Thumbnail Toolbars,
Libraries, Known Folders, Sensor platform, etc
and some Windows 7 & Vista features
UAC, power management, restart and recovery,
network awareness, Aero Glass and more
Download it (with samples) from:
http://code.msdn.microsoft.com/WindowsAPICodePack
Windows API Code Pack
for Microsoft .NET Framework
Enables access to Windows 7 Taskbar APIs from
managed code
Contains the TaskbarManager class that
wraps parts of the Windows Shell API
Static functions to manage Jump Lists, set
Application ID, custom switching, thumbnail
buttons, and more
Requirements:
Windows 7 RTM + SDK for Win 7 RTM
.NET Framework 3.5 SP1
How Are Windows Grouped?
Enter: Application ID
It’s a string, not a GUID
Limited to 128 characters
Naming convention –
Company.Product.SubProduct.Version
All your application components have it:
Process, shortcut, window, taskbar button,
document type
Application ID
Heuristics of determining the Application ID
Application ID can “fall back”
to a larger scope if needed
Process
Shortcut
Windows
Default
computation
Jump List
Application ID
Document Type
Registrations
Setting the Application ID
Process-wide – affects all windows in the
current process:
TaskbarManager.Instance.ApplicationId = "MS.Taskbar.Concepts.1";
Window ID – affects only ONE window:
TaskbarManager winTaskbar = TaskbarManager.Instance;
winTaskbar.SetApplicationIdForSpecificWindow(winHandle, appID);
(un)Grouping Windows
Jump List
It’s a mini Start menu
Jump Lists
A detailed look
Pinned category
Destinations
(“nouns”)
Known categories
Custom categories
Tasks
(“verbs”)
User tasks
Taskbar tasks
Jump Lists
Design considerations
Surface key destinations and tasks
Recent and frequent are free
Pinned is also free (if users use it)
Respect items the user removes!
Addictive: You don’t look for documents
anywhere else!
You also expect the common tasks to be there
Customizing the Jump List
Step 1: Get the free stuff to work
Associate your program with the file extension
RegisterFileAssociations( progId,
registerInHKCU, appId, openWith, extensions );
Use common file dialogs
CommonOpenFileDialog = ...; dialog.ShowDialog();
Use explicit recent document API
JumpList jumpList = JumpList.CreateJumpList();
jumpList.AddToRecent(fileName);
Customizing the Jump List
Step 2: Adding tasks
What would your user like to do?
Launch your application with special arguments?
Launch other applications?
Tasks are IShellLink objects
Rich shortcut semantics including arguments,
working directory, icon, and so on.
Customizing the Jump List
Step 2: Adding tasks
JumpList jumpList;
jumpList.AddUserTasks(new
JumpListLink(System.IO.Path.Combine(systemFolder,
"notepad.exe"), "Open Notepad");
jumpList.AddUserTasks(new JumpListSeparator());
jumpList.Refresh();
Tasks and destinations
…in a Jump List
Customizing the Jump List
Step 3: Do you have categories?
Does it make sense to categorize documents?
Is frequent, recent, pinned not enough?
For example, Inbox, Outbox, Sales, Marketing …
Categories contain IShellItem or
IShellLink objects
These are documents: You need a file association
Customizing the Jump List
Step 3: Adding categories
category1 =
new JumpListCustomCategory("Custom Category 1");
//JumpList.AddCustomCategories(category1);
category1.AddJumpListItems(new JumpListItem(path));
jumpList.Refresh();
Addin Custom Categories
…in a Jump List
Thumbnail Toolbars
Remote control from the taskbar
Thumbnail Toolbars
Design considerations
You get up to seven buttons
Can’t add or delete; can hide and disable
Tasks are not thumbnail buttons!
Tasks
Thumbnail Buttons
Entry point
Application-wide
Can act dynamically
Menu or toolbar
Window-specific
Must be static
Creating Thumbnail Toolbars
private ThumbnailToolbarButton buttonFirst;
buttonFirst = new ThumbnailToolbarButton
(TaskbarConcepts.Resources.first, "First Image");
buttonFirst.Enabled = false;
buttonFirst.Click += buttonFirst_Click;
private void buttonFirst_Click(object sender, EventArgs e)
{
ShowList(0);
}
Get More From Taskbar Buttons
Overlay and progress icons
Consolidate: Uncluttered notification area
Provide progress and additional information
through the taskbar button
It’s free if you use standard progress dialogs
Taskbar Overlay and Progress
Design considerations
Notification area is now user controlled:
Leave yourself out if possible!
Use taskbar buttons for custom progress or
status information
Taskbar Overlay and Progress
The APIs
TaskbarManager winTaskbar = TaskbarManager.Instance;
// Icon
winTaskbar.SetOverlayIcon(icon, "icon1");
// Set normal progressbar
winTaskbar.SetProgressValue((int)progressSlider.Value, 100);
winTaskbar.SetProgressState(TaskbarProgressBarState.Normal);
. . .
// Remove progressbar
winTaskbar.SetProgressState(TaskbarProgressBarState.NoProgress);
Overlay & Progress Icons
…in Taskbar Button
Live Thumbnails
Live thumbnails: A livepreview
Windows Vista®: One thumbnail per window
Windows 7: Grouped thumbnails
Peek Preview (Aero Peek)
Live peek without a click
Live Thumbnails and Peek
Design considerations
Desktop Window Manager (DWM) only talks to
top-level windows
Child windows need a custom representation
The thumbnail might be “too much” or
“not enough”
What if you could …
Test your thumbnails to make sure they
are useful
If they aren’t, customize them!
Thumbnail Clip (Zoom)
Zoom into the important parts!
Customizing Live Thumbnails
TabbedThumbnail preview = new
TabbedThumbnail(Application.Current.MainWindow, image, offset);
TaskbarManager.Instance.TabbedThumbnail.AddThumbnailPreview(prev
iew);
TaskbarManager.Instance.TabbedThumbnail.SetActiveTab(preview);
Customizing Peek Preview
TabbedThumbnail preview =
TaskbarManager.Instance.TabbedThumbnail.
GetThumbnailPreview(image);
if (preview != null)
preview.InvalidatePreview();
Summary
Quick launch is deprecated
Notification area should be kept clean
Proper file associations are crucial for mostrecently used or most-frequently used and
custom categories
Users will expect destinations and tasks
Should child windows have thumbnails?
Bad/Good examples:
Bad: Microsoft VS 2008, Office Outlook® 2007
Good: Office Outlook 2010
Resources
www.microsoft.com/teched
www.microsoft.com/learning
Sessions On-Demand & Community
Microsoft Certification & Training Resources
http://microsoft.com/technet
http://microsoft.com/msdn
Resources for IT Professionals
Resources for Developers
Related Content
DEV309 The Windows API Code Pack: How Managed Code Developers Can Easily Access
Exciting New Windows Vista and Windows 7 Features
CLI09-IS For Developers: Common Application Compatibility Issues between Windows XP,
Windows Vista, and Windows 7
WCL08-HOL Windows 7: Mitigating Application Issues Using Shims
WCL05-HOL Windows 7: Application Compatibility Toolkit 5.5
Complete an evaluation
on CommNet and enter to
win an Xbox 360 Elite!
© 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.
The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should
not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS,
IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.