Окна и панели
Лишь самые простые приложения могут обойтись единственным окном. По мере развития приложения у разработчика рано или поздно возникает необходимость заменить часть содержимого существующего окна или создать новое. И то, и другое описано в этой лекции.
Разные аспекты платформы Mozilla существенно различаются по сложности. Работа с окнами очень проста. Средства управления окнами, доступные приложениям XUL, во многом подобны средствам, используемым в традиционном web-программировании. Для тех, кому раньше приходилось использовать метод DOM window.open(), эта лекция будет просто повторением пройденного. XUL (а также объектная модель HTML-документа в Mozilla) предоставляет некоторые новые возможности, но вряд ли в этой лекции вы встретите что-то сенсационное. Как правило, вся работа с окнами сводится к нескольким строкам кода.
Mozilla позволяет создавать множество различных типов самостоятельных окон, начиная с крошечных всплывающих подсказок к элементам интерфейса ( tooltips, в локализациях многих программ они называются просто "подсказками") и заканчивая сложными окнами больших приложений. Кроме того, она позволяет создавать внутри окон другие, "встроенные" окна, в которых могут отображаться другие документы. В этой книге для таких окон используется термин "панели". Средства защиты web-браузера накладывают ограничения на типы встроенных окон, однако эти ограничения не действуют, если приложение установлено в каталог chrome или рассматривается как безопасное.
Окна Mozilla могут преподнести несколько сюрпризов. Пространства имен XML позволяют сочетать различные типы содержимого. Доступны усовершенствованные средства управления существующими окнами. Пожалуй, наиболее значительным новшеством в части содержимого окон являются оверлеи. Эта тема весьма важна, ей посвящена "Оверлеи и Chrome" – "Оверлеи и chrome".
На схеме в начале лекции показаны элементы архитектуры Mozilla, имеющие отношение к управлению окнами. Как показано на схеме, это, в первую очередь, фреймы JavaScript. Документы могут нуждаться в более сложном контейнере, чем фрейм, описываемый простым тегом <box>, поэтому существует несколько типов фреймов. В связи с окнами заслуживают внимания несколько компонентов XPCOM. Но в любом случае, это несложная тема.