In this chapter, we explored techniques for designing and programming more complex graphical applications. While looking at principles for complex layouts and deep navigation structures, we compared how common applications deal with these challenges and noted the types of complex user interfaces to avoid. To provide a richer, consistent user experience in these applications, we investigated the APIs that provide standard dialog windows and allow developers to configure application windows to be consistent with the application workflow.
Background task progress and system notifications should be visible but not interrupt the user's workflow. We explored how to use toolkit widgets and common techniques to provide this balanced communication. To further integrate with the current operating system, we explored the differences between, and additional features provided by, desktop platforms so that applications can match system semantics while maintaining a single code base for cross-platform development.
In the next chapter, we'll turn our attention to the background operations and networking features provided by Go and how to use them effectively in graphical application. We'll return to our GoMail examples and extend them using cloud services for a richer user experience.