Presentation is loading. Please wait.

Presentation is loading. Please wait.

Tomislav Bronzin Microsoft Regional Director & MVP CITUS Ltd. Session Code: CLI308.

Similar presentations


Presentation on theme: "Tomislav Bronzin Microsoft Regional Director & MVP CITUS Ltd. Session Code: CLI308."— Presentation transcript:

1

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

3 About Tomislav Bronzin About Tomislav Bronzin Microsoft Regional Director & MVP Software Architect – CITUS Ltd. Consultant and trainer on.NET architecture and development, http://www.citusgrupa.com http://www.citusgrupa.com METRO Trainer for Windows 7 and Unified Communication INETA Europe Vice President http://europe.ineta.org 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 tomislav.bronzin@citus.hr tomislav.bronzin@citus.hr

4 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

5

6 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

7 Design Goals For New Taskbar Single launch surface for frequent programs and destinations Easily controllable Clean, noise-free, and simple New opportunities for extensibility

8 Taskbar Buttons Consolidation Quick launch Notification area icon Desktop shortcut Running application windows RunningRunning Not running Multiple windows and hover ActiveActive

9 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

10 The New Taskbar …and beyond

11 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

12 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

13 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

14 Application ID Heuristics of determining the Application ID Application ID ShortcutShortcut Jump List WindowsWindows Application ID can “fall back” to a larger scope if needed Default computation ProcessProcess Document Type Registrations

15 Setting the Application ID Process-wide – affects all windows in the current process: Window ID – affects only ONE window: TaskbarManager.Instance.ApplicationId = "MS.Taskbar.Concepts.1"; TaskbarManager winTaskbar = TaskbarManager.Instance; winTaskbar.SetApplicationIdForSpecificWindow(winHandle, appID); TaskbarManager winTaskbar = TaskbarManager.Instance; winTaskbar.SetApplicationIdForSpecificWindow(winHandle, appID);

16 (un)Grouping Windows

17 Jump List It’s a mini Start menu

18 Jump Lists A detailed look Destinations (“nouns”) Tasks (“verbs”) Known categories Custom categories User tasks Taskbar tasks Pinned category

19 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

20 Customizing the Jump List Step 1: Get the free stuff to work Associate your program with the file extension Use common file dialogs Use explicit recent document API RegisterFileAssociations( progId, registerInHKCU, appId, openWith, extensions ); CommonOpenFileDialog =...; dialog.ShowDialog(); JumpList jumpList = JumpList.CreateJumpList(); jumpList.AddToRecent(fileName);

21 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.

22 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(); JumpList jumpList; jumpList.AddUserTasks(new JumpListLink(System.IO.Path.Combine(systemFolder, "notepad.exe"), "Open Notepad"); jumpList.AddUserTasks(new JumpListSeparator()); jumpList.Refresh();

23 Tasks and destinations …in a Jump List

24 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

25 Customizing the Jump List Step 3: Adding categories category1 = new JumpListCustomCategory("Custom Category 1"); //JumpList.AddCustomCategories(category1); category1.AddJumpListItems(new JumpListItem(path)); jumpList.Refresh(); category1 = new JumpListCustomCategory("Custom Category 1"); //JumpList.AddCustomCategories(category1); category1.AddJumpListItems(new JumpListItem(path)); jumpList.Refresh();

26 Addin Custom Categories …in a Jump List

27 Thumbnail Toolbars Remote control from the taskbar

28 Thumbnail Toolbars Design considerations You get up to seven buttons Can’t add or delete; can hide and disable Tasks are not thumbnail buttons! TasksThumbnail Buttons Entry pointMenu or toolbar Application-wideWindow-specific Can act dynamicallyMust be static

29 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); } 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); }

30 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

31 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

32 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 ); 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 );

33 Overlay & Progress Icons …in Taskbar Button

34 Live Thumbnails Live thumbnails: A livepreview Windows Vista ® : One thumbnail per window Windows 7: Grouped thumbnails

35 Peek Preview (Aero Peek) Live peek without a click

36 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!

37 Thumbnail Clip (Zoom) Zoom into the important parts!

38 Customizing Live Thumbnails TabbedThumbnail preview = new TabbedThumbnail(Application.Current.MainWindow, image, offset); TaskbarManager.Instance.TabbedThumbnail.AddThumbnailPreview(prev iew); TaskbarManager.Instance.TabbedThumbnail.SetActiveTab(preview); 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(); TabbedThumbnail preview = TaskbarManager.Instance.TabbedThumbnail. GetThumbnailPreview(image); if (preview != null) preview.InvalidatePreview();

39 Summary Quick launch is deprecated Notification area should be kept clean Proper file associations are crucial for most- recently 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

40

41 www.microsoft.com/teched Sessions On-Demand & Community http://microsoft.com/technet Resources for IT Professionals http://microsoft.com/msdn Resources for Developers www.microsoft.com/learning Microsoft Certification & Training Resources Resources Required Slide Speakers, TechEd 2009 is not producing a DVD. Please announce that attendees can access session recordings at TechEd Online. Required Slide Speakers, TechEd 2009 is not producing a DVD. Please announce that attendees can access session recordings at TechEd Online.

42 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 Required Slide Speakers, please list the Breakout Sessions, TLC Interactive Theaters and Labs that are related to your session. Required Slide Speakers, please list the Breakout Sessions, TLC Interactive Theaters and Labs that are related to your session.

43 Complete an evaluation on CommNet and enter to win an Xbox 360 Elite!

44

45 © 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. Required Slide


Download ppt "Tomislav Bronzin Microsoft Regional Director & MVP CITUS Ltd. Session Code: CLI308."

Similar presentations


Ads by Google