SlideShare a Scribd company logo
1 of 17
Программирование в Mozilla
По материалам сайта
http://www.xulplanet.com/tutorials/xultu/
XUL и Chrome
Цель: научиться программировать расширения (add-ons, extensions),
работающие в среде Mozilla Firefox.
Программы на JavaScript, работающие внутри страниц, имеют много
ограничений на доступ к системе.
С другой стороны, универсальные программы не имеют прямого доступа
к содержимому страниц и управлению браузером.
Промежуточный подход: Chrome-пространство, имеющее доступ к
содержимому браузера и загруженным страницам, и имеющее богатый
набор функций для работы с различными компонентами системы.
XUL – XML-oriented User interface Language – язык для определения
элементов диалога с пользователем. XUL-диалоги в Chrome-пространстве
имеют XML-структуру, что позволяет управлять ими с помощью
обычных JavaScript-программ. Весь браузер Firefox построен в виде
большого XUL-диалога (Chrome-документа).
Overlay – это средство, с помощью которого можно «расширить»
стандартный браузер Firefox, добавив в него новые элементы управления.
Построение первого extension’а
Чтобы установить свое расширение (extension), необходимо создать
каталоги специальной структуры и некоторые специальные файлы.
1. Создаем каталог firstextension/chrome/content/.
2. Внутри каталога firstextension/ создаем два текстовых файла:
install.rdf и
chrome.manifest.
3. Создаем приложение внутри firstextension/chrome/content/.
4. Упаковываем всю структуру firstextension/ в zip-архив.
5. Присваиваем архиву расширение xpi, запускаем firefox и открываем
в нем наше расширение.
Наш extension будет установлен как дополнение, и информацию о нем
можно будет просмотреть в add-ons менеджере.
sample
Создание XUL-диалогов
Расширение, как правило, определяет элементы интерфейса с
пользователем (новые пункты меню, кнопки, диалоги) и определяет
программы на Javascript, работающие в ответ на действия с элементами.
Элементы интерфейса принято описывать не на HTML, а на специальном
XML-языке, называемом XUL.
В качестве примера определим диалог для поиска файлов
на языке XUL и добавим новый пункт меню для его вызова.
Создаем диалог findfiles.xul в файле со следующим содержанием:
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<window id="findfile-window"
title="Find Files"
orient="horizontal"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
</window>

Это пока просто пустое окно, которое будет доступно по адресу
chrome://findfiles/content/
findfiles
Добавление элементов интерфейса в окно
Добавим пару кнопок в наше пустое окно. Кнопки описываются практически
так же, как в языке HTML:
<window ...>
<button id="find-button" label="Find"/>
<button id="cancel-button" label="Cancel"/>
</window>

Наш диалог будет выглядеть примерно так:
Надписи можно добавить в наш диалог, используя элементы <label> и
<description>. Фактически эти элементы ничем друг от друга
не отличаются, но принято немного по-разному их использовать.
Еще в XUL (в отличие от HTML) можно задавать простое текстовое поле
ввода с помощью элемента <textbox>.
Добавим поле для ввода имени файла для поиска:
<label value="Search for:" control="find-text"/>
<textbox id="find-text"/>
Задание других элементов интерфейса
<description>
Этот текст будет переноситься по словам, если не помещается
в отведенное для него место.
</description>
<img src="chrome://findfiles/skin/myimage.jpg"/>
или лучше:
<img id="my-image"/>
а в CSS-файле
#my-image {
list-style-image: url("chrome://findfiles/skin/myimage.jpg");
}
<textbox id="t-id" value="default" type="password" maxlength="8"/>
<checkbox id="c-id" checked="true" label="Флажок"/>
<radiogroup>
<radio id="play" selected="true" label="Play"/>
<radio id="work" label="Work"/>
</radiogroup>
Списки.
<listbox rows="4">
<listitem value="0"
<listitem value="1"
<listitem value="2"
<listitem value="3"
<listitem value="4"
<listitem value="5"
<listitem value="6"
</listbox>

label="Sunday"/>
label="Monday"/>
label="Tuesday"/>
label="Wednesday"/>
label="Thursday"/>
label="Friday"/>
label="Saturday"/>

<listbox>
<listhead>
<listheader label="Name"/>
<listheader label="Occupation"/>
</listhead>
<listcols><listcol/><listcol flex="1"/></listcols>
<listitem>
<listcell label="Alex"/>
<listcell label="Engineer"/></listitem>
<listitem>
<listcell label="Peter"/>
<listcell label="Artist"/></listitem>
</listbox>
Выпадающие меню и указатели прогресса.
Для создания выпадающего меню используются три элемента:
menulist, menupopup и menuitem.
<menulist editable="true">
<menupopup>
<menuitem label="www.google.com" selected="true"/>
<menuitem label="www.yandex.ru"/>
<menuitem label="www.rambler.ru"/>
</menupopup>
</menulist>

Счетчики прогресса:
<progressmeter
value="50%"
mode="determined"/>

Расширим наш диалог дополнительными
элементами управления и разместим их,
пользуясь элементами <vbox> и <hbox>.
findfileschromecontent
Гибкие размеры элементов.
Часто бывает необходимо разместить свободное пространство в
определенных местах диалога. Специально предназначенный для
этого элемент называется <spacer>.
Регулировать размеры элементов можно явным указанием ширины и
высоты с помощью атрибутов width= и height= или с помощью языка CSS,
а можно указанием атрибута «гибкости» flex, например:
<hbox flex="1">
<description>
Это некоторый текст, помещенный внутрь диалога.
</description>
<spacer flex="2"/>
<button label="Найти" flex="1"/>
<button label="Отмена"/>
</hbox>
Дополнительные возможности кнопок.
Можно добавлять картинки (иконки) на кнопки.
<button id="find-button" label="Найти" />
#find-button {
list-style-image: url("chrome://findfiles/skin/find.png");
}

Или можно полностью сформировать содержимое кнопки:
<button id="find-button">
<description>Найти</description>
<image src="chrome://findfiles/skin/find.png"/>
<description>файл</description>
</button>

Кнопка может содержать выпадающее меню:
<button id=“find-button" label="Найти" type="menu">
<menupopup>
<menuitem label="Файл"/>
<menuitem label="Картинку"/>
<menuitem label="Друга"/>
</menupopup>
</button>
Box-модель.
Основой всех элементов является элемент <box>. Все прочие элементы
являются лишь частными случаями этого.
<vbox> эквивалентно <box orient="vertical">
<hbox> эквивалентно <box orient="horizontal"> .
Размер элемента обычно определяется внутренним содержанием.
Дополнительно можно указать размеры в атрибутах (только в точках)
или с помощью привязки файла стилей на языке CSS.
width="300" – задание в виде атрибута элемента (в CSS – width:300px;)
height="100" – задание в виде атрибута элемента (в CSS – height:100px;)
minwidth="10" – задание в виде атрибута элемента (в CSS – min-width:10px;)
maxheight="80" – задание в виде атрибута элемента (в CSS – max-height:80px;)
Размещение элементов внутри box’а.
Кроме размера можно управлять размещением элементов внутри box’а,
если он сам гибкий, а его внутренние элементы – нет. Это делается с
помощью атрибутов box’а pack и align.
Возможные значения атрибута pack:
start, center, end
Возможные значения атрибута align:
start, center, end, baseline, stretch
<hbox flex="1" pack="" align="">
<description>
Это текст.
</description>
<button label="Это кнопка"/>
<image src="chrome://findfiles/skin/google.png"/>
</hbox>
Stack и Deck – специальные контейнеры.
Обычно элементы внутри контейнеров располагаются в ряд (по вертикали
или по горизонтали). Можно их наложить друг на друга. Для этого
используются специальные контейнеры – Stack и Deck.
Элементы стека располагаются один
поверх другого, причем все они
растягиваются так, чтобы иметь
размер максимального из них.
<groupbox orient="horizontal" align="center">
<caption label="Стеки"/>
<stack style="background-color: yellow;">
<description style="padding-top: 1px; padding-left: 1px;">
Это текст с тенью</description>
<description style="color: blue;">Это текст с тенью</description>
</stack>
<stack style="background-color: silver;" orient="horizontal">
<progressmeter value="30%" style="margin: 4px;"/>
<label value="30%" style="margin-left: 1em;"/>
</stack>
</groupbox>
Stack и Deck – специальные контейнеры.
Элементы внутри стека можно и не растягивать, если для каждого из них
задать позицию внутри контейнера. Например, текст с тенью и шкалу
прогресса из предыдущего слайда можно оформить и по-другому.
<groupbox orient="horizontal" align="center">
<caption label="Стеки"/>
<stack style="background-color: yellow;">
<description left="1" top="1">Это текст с тенью</description>
<description style="color: blue;">Это текст с тенью</description>
</stack>
<stack style="background-color: silver;" orient="horizontal">
<progressmeter value="30%" style="margin: 4px;" top="0"/>
<label value="30%" left="40"/>
</stack>
</groupbox>
Stack и Deck – специальные контейнеры.
Элементы дека располагаются все
в одном и том же месте, причем
виден всегда только один из них.
<groupbox>
<caption label="Деки"/>
<deck selectedIndex="2" style="background-color: yellow;">
<description value="Это страница № 0"/>
<button label="Это страница № 1"/>
<vbox>
<description value="Это страница № 2"/>
<button label="И это тоже № 2"/>
</vbox>
</deck>
</groupbox>

Значение атрибута selectedIndex можно менять динамически
из программ на JavaScript, чтобы в разное время показывать разное
содержание. Например, менять содержимое панели с ярлыками.
Панели с ярлыками.
Имеется несколько взаимосвязанных элементов, образующих все вместе
такой важный элемент управления, как «панель с ярлыками». Это:
tabbox, tabs, tab, tabpanels, tabpanel
<tabbox width="400">
<tabs>
<tab label="Ярлык 1"/>
<tab label="Ярлык 2"/>
<tab label="Ярлык 3"/>
<tab label="Ярлык 4"/>
</tabs>
<tabpanels height="100">
<tabpanel>...</tabpanel>
<tabpanel>...</tabpanel>
<tabpanel>...</tabpanel>
<tabpanel>...</tabpanel>
</tabpanels>
</tabbox>
Панели с ярлыками.
Введем панели в наш диалог поиска файлов:

Вторая панель диалога выглядит так:
<tabpanel id="optionspanel" orient="vertical">
<checkbox id="casecheck"
label="Поиск чувствителен к регистру букв"/>
<checkbox id="wordscheck"
label="Имя файла только целиком"/>
</tabpanel>

More Related Content

What's hot

Рекомендации по работе в Вики
Рекомендации по работе в ВикиРекомендации по работе в Вики
Рекомендации по работе в Вики
Galina Sklemina
 
Osvaivaem 250px max_shirshin
Osvaivaem 250px max_shirshinOsvaivaem 250px max_shirshin
Osvaivaem 250px max_shirshin
yaevents
 
основы Html
основы Htmlосновы Html
основы Html
galka08m
 
сысоев андрей
сысоев андрейсысоев андрей
сысоев андрей
Vlado Sudin
 
сысоев андрей
сысоев андрейсысоев андрей
сысоев андрей
Vlado Sudin
 
Сергей Бережной "Про шаблонизаторы вообще и BEMHTML в частности"
Сергей Бережной "Про шаблонизаторы вообще и BEMHTML в частности"Сергей Бережной "Про шаблонизаторы вообще и BEMHTML в частности"
Сергей Бережной "Про шаблонизаторы вообще и BEMHTML в частности"
Yandex
 
Верстка_Лекция_3
Верстка_Лекция_3Верстка_Лекция_3
Верстка_Лекция_3
itc73
 
Структура html документа
Структура html документаСтруктура html документа
Структура html документа
Andrey Radionov
 
Верстка_Лекция_1
Верстка_Лекция_1Верстка_Лекция_1
Верстка_Лекция_1
itc73
 
Present forms&css
Present forms&cssPresent forms&css
Present forms&css
itc73
 

What's hot (18)

55
5555
55
 
Рекомендации по работе в Вики
Рекомендации по работе в ВикиРекомендации по работе в Вики
Рекомендации по работе в Вики
 
Первое знакомство с MODx revolution
Первое знакомство с MODx revolutionПервое знакомство с MODx revolution
Первое знакомство с MODx revolution
 
Osvaivaem 250px max_shirshin
Osvaivaem 250px max_shirshinOsvaivaem 250px max_shirshin
Osvaivaem 250px max_shirshin
 
Презентация на тему "WEB-программирование"
Презентация на тему "WEB-программирование"Презентация на тему "WEB-программирование"
Презентация на тему "WEB-программирование"
 
основы Html
основы Htmlосновы Html
основы Html
 
Лекция #2. Принцип организации World Wide Web
Лекция #2. Принцип организации World Wide WebЛекция #2. Принцип организации World Wide Web
Лекция #2. Принцип организации World Wide Web
 
Лекция #1. Основы Web-технологий
Лекция #1. Основы Web-технологийЛекция #1. Основы Web-технологий
Лекция #1. Основы Web-технологий
 
сысоев андрей
сысоев андрейсысоев андрей
сысоев андрей
 
сысоев андрей
сысоев андрейсысоев андрей
сысоев андрей
 
Сергей Бережной "Про шаблонизаторы вообще и BEMHTML в частности"
Сергей Бережной "Про шаблонизаторы вообще и BEMHTML в частности"Сергей Бережной "Про шаблонизаторы вообще и BEMHTML в частности"
Сергей Бережной "Про шаблонизаторы вообще и BEMHTML в частности"
 
Верстка_Лекция_3
Верстка_Лекция_3Верстка_Лекция_3
Верстка_Лекция_3
 
Структура html документа
Структура html документаСтруктура html документа
Структура html документа
 
Основы HTML
Основы HTMLОсновы HTML
Основы HTML
 
Занятие 3 Работа с текстом в презентациях PowerPoint
Занятие 3 Работа с текстом в презентациях PowerPointЗанятие 3 Работа с текстом в презентациях PowerPoint
Занятие 3 Работа с текстом в презентациях PowerPoint
 
Верстка_Лекция_1
Верстка_Лекция_1Верстка_Лекция_1
Верстка_Лекция_1
 
HTML 2
HTML 2HTML 2
HTML 2
 
Present forms&css
Present forms&cssPresent forms&css
Present forms&css
 

Similar to Chrome

руководство Alfresco 4
руководство Alfresco 4руководство Alfresco 4
руководство Alfresco 4
Andrew Galenkov
 
lesson3_HTML_rus.pdf
lesson3_HTML_rus.pdflesson3_HTML_rus.pdf
lesson3_HTML_rus.pdf
mmmitioglo
 
Практикум Web программирование
Практикум Web программированиеПрактикум Web программирование
Практикум Web программирование
Rauan Ibraikhan
 
методичка по Word 40 стр.
методичка по Word 40 стр.методичка по Word 40 стр.
методичка по Word 40 стр.
Serghei Urban
 
системы создания и публикации презентаций
системы создания и публикации презентацийсистемы создания и публикации презентаций
системы создания и публикации презентаций
katrindakatrin
 
Css part2
Css part2Css part2
Css part2
ISsoft
 
Flex 4 gumbo framework
Flex 4 gumbo frameworkFlex 4 gumbo framework
Flex 4 gumbo framework
Valery
 
Артем Кувалдин: Основы HTML
Артем Кувалдин: Основы HTMLАртем Кувалдин: Основы HTML
Артем Кувалдин: Основы HTML
Yandex
 

Similar to Chrome (20)

руководство Alfresco 4
руководство Alfresco 4руководство Alfresco 4
руководство Alfresco 4
 
Flex 4 Gumbo
Flex 4 GumboFlex 4 Gumbo
Flex 4 Gumbo
 
Panel control
Panel controlPanel control
Panel control
 
лек13 3
лек13 3лек13 3
лек13 3
 
Html лаб 2
Html лаб 2Html лаб 2
Html лаб 2
 
lesson3_HTML_rus.pdf
lesson3_HTML_rus.pdflesson3_HTML_rus.pdf
lesson3_HTML_rus.pdf
 
Практикум Web программирование
Практикум Web программированиеПрактикум Web программирование
Практикум Web программирование
 
Оранжевый - новый синий: Как портировать Chrome Extension в Firefox Extension
Оранжевый - новый синий: Как портировать Chrome Extension в Firefox ExtensionОранжевый - новый синий: Как портировать Chrome Extension в Firefox Extension
Оранжевый - новый синий: Как портировать Chrome Extension в Firefox Extension
 
Agile theming with kalatheme & panopoly
Agile theming with kalatheme & panopolyAgile theming with kalatheme & panopoly
Agile theming with kalatheme & panopoly
 
Сидристый Станислав: Паттерны и антипаттерны BDD
Сидристый Станислав: Паттерны и антипаттерны BDDСидристый Станислав: Паттерны и антипаттерны BDD
Сидристый Станислав: Паттерны и антипаттерны BDD
 
методичка по Word 40 стр.
методичка по Word 40 стр.методичка по Word 40 стр.
методичка по Word 40 стр.
 
Основы Confluence
Основы ConfluenceОсновы Confluence
Основы Confluence
 
системы создания и публикации презентаций
системы создания и публикации презентацийсистемы создания и публикации презентаций
системы создания и публикации презентаций
 
Flex 4 Gumbo Framework
Flex 4 Gumbo FrameworkFlex 4 Gumbo Framework
Flex 4 Gumbo Framework
 
Css part2
Css part2Css part2
Css part2
 
презентация 4. введение в css
презентация 4. введение в cssпрезентация 4. введение в css
презентация 4. введение в css
 
Flex 4 gumbo framework
Flex 4 gumbo frameworkFlex 4 gumbo framework
Flex 4 gumbo framework
 
Максим Ширшин "Яндекс.Панель: осваиваем 250px"
Максим Ширшин "Яндекс.Панель: осваиваем 250px"Максим Ширшин "Яндекс.Панель: осваиваем 250px"
Максим Ширшин "Яндекс.Панель: осваиваем 250px"
 
Артем Кувалдин: Основы HTML
Артем Кувалдин: Основы HTMLАртем Кувалдин: Основы HTML
Артем Кувалдин: Основы HTML
 
Module 4
Module 4Module 4
Module 4
 

Chrome

  • 1. Программирование в Mozilla По материалам сайта http://www.xulplanet.com/tutorials/xultu/
  • 2. XUL и Chrome Цель: научиться программировать расширения (add-ons, extensions), работающие в среде Mozilla Firefox. Программы на JavaScript, работающие внутри страниц, имеют много ограничений на доступ к системе. С другой стороны, универсальные программы не имеют прямого доступа к содержимому страниц и управлению браузером. Промежуточный подход: Chrome-пространство, имеющее доступ к содержимому браузера и загруженным страницам, и имеющее богатый набор функций для работы с различными компонентами системы. XUL – XML-oriented User interface Language – язык для определения элементов диалога с пользователем. XUL-диалоги в Chrome-пространстве имеют XML-структуру, что позволяет управлять ими с помощью обычных JavaScript-программ. Весь браузер Firefox построен в виде большого XUL-диалога (Chrome-документа). Overlay – это средство, с помощью которого можно «расширить» стандартный браузер Firefox, добавив в него новые элементы управления.
  • 3. Построение первого extension’а Чтобы установить свое расширение (extension), необходимо создать каталоги специальной структуры и некоторые специальные файлы. 1. Создаем каталог firstextension/chrome/content/. 2. Внутри каталога firstextension/ создаем два текстовых файла: install.rdf и chrome.manifest. 3. Создаем приложение внутри firstextension/chrome/content/. 4. Упаковываем всю структуру firstextension/ в zip-архив. 5. Присваиваем архиву расширение xpi, запускаем firefox и открываем в нем наше расширение. Наш extension будет установлен как дополнение, и информацию о нем можно будет просмотреть в add-ons менеджере. sample
  • 4. Создание XUL-диалогов Расширение, как правило, определяет элементы интерфейса с пользователем (новые пункты меню, кнопки, диалоги) и определяет программы на Javascript, работающие в ответ на действия с элементами. Элементы интерфейса принято описывать не на HTML, а на специальном XML-языке, называемом XUL. В качестве примера определим диалог для поиска файлов на языке XUL и добавим новый пункт меню для его вызова. Создаем диалог findfiles.xul в файле со следующим содержанием: <?xml version="1.0"?> <?xml-stylesheet href="chrome://global/skin/" type="text/css"?> <window id="findfile-window" title="Find Files" orient="horizontal" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> </window> Это пока просто пустое окно, которое будет доступно по адресу chrome://findfiles/content/ findfiles
  • 5. Добавление элементов интерфейса в окно Добавим пару кнопок в наше пустое окно. Кнопки описываются практически так же, как в языке HTML: <window ...> <button id="find-button" label="Find"/> <button id="cancel-button" label="Cancel"/> </window> Наш диалог будет выглядеть примерно так: Надписи можно добавить в наш диалог, используя элементы <label> и <description>. Фактически эти элементы ничем друг от друга не отличаются, но принято немного по-разному их использовать. Еще в XUL (в отличие от HTML) можно задавать простое текстовое поле ввода с помощью элемента <textbox>. Добавим поле для ввода имени файла для поиска: <label value="Search for:" control="find-text"/> <textbox id="find-text"/>
  • 6. Задание других элементов интерфейса <description> Этот текст будет переноситься по словам, если не помещается в отведенное для него место. </description> <img src="chrome://findfiles/skin/myimage.jpg"/> или лучше: <img id="my-image"/> а в CSS-файле #my-image { list-style-image: url("chrome://findfiles/skin/myimage.jpg"); } <textbox id="t-id" value="default" type="password" maxlength="8"/> <checkbox id="c-id" checked="true" label="Флажок"/> <radiogroup> <radio id="play" selected="true" label="Play"/> <radio id="work" label="Work"/> </radiogroup>
  • 7. Списки. <listbox rows="4"> <listitem value="0" <listitem value="1" <listitem value="2" <listitem value="3" <listitem value="4" <listitem value="5" <listitem value="6" </listbox> label="Sunday"/> label="Monday"/> label="Tuesday"/> label="Wednesday"/> label="Thursday"/> label="Friday"/> label="Saturday"/> <listbox> <listhead> <listheader label="Name"/> <listheader label="Occupation"/> </listhead> <listcols><listcol/><listcol flex="1"/></listcols> <listitem> <listcell label="Alex"/> <listcell label="Engineer"/></listitem> <listitem> <listcell label="Peter"/> <listcell label="Artist"/></listitem> </listbox>
  • 8. Выпадающие меню и указатели прогресса. Для создания выпадающего меню используются три элемента: menulist, menupopup и menuitem. <menulist editable="true"> <menupopup> <menuitem label="www.google.com" selected="true"/> <menuitem label="www.yandex.ru"/> <menuitem label="www.rambler.ru"/> </menupopup> </menulist> Счетчики прогресса: <progressmeter value="50%" mode="determined"/> Расширим наш диалог дополнительными элементами управления и разместим их, пользуясь элементами <vbox> и <hbox>. findfileschromecontent
  • 9. Гибкие размеры элементов. Часто бывает необходимо разместить свободное пространство в определенных местах диалога. Специально предназначенный для этого элемент называется <spacer>. Регулировать размеры элементов можно явным указанием ширины и высоты с помощью атрибутов width= и height= или с помощью языка CSS, а можно указанием атрибута «гибкости» flex, например: <hbox flex="1"> <description> Это некоторый текст, помещенный внутрь диалога. </description> <spacer flex="2"/> <button label="Найти" flex="1"/> <button label="Отмена"/> </hbox>
  • 10. Дополнительные возможности кнопок. Можно добавлять картинки (иконки) на кнопки. <button id="find-button" label="Найти" /> #find-button { list-style-image: url("chrome://findfiles/skin/find.png"); } Или можно полностью сформировать содержимое кнопки: <button id="find-button"> <description>Найти</description> <image src="chrome://findfiles/skin/find.png"/> <description>файл</description> </button> Кнопка может содержать выпадающее меню: <button id=“find-button" label="Найти" type="menu"> <menupopup> <menuitem label="Файл"/> <menuitem label="Картинку"/> <menuitem label="Друга"/> </menupopup> </button>
  • 11. Box-модель. Основой всех элементов является элемент <box>. Все прочие элементы являются лишь частными случаями этого. <vbox> эквивалентно <box orient="vertical"> <hbox> эквивалентно <box orient="horizontal"> . Размер элемента обычно определяется внутренним содержанием. Дополнительно можно указать размеры в атрибутах (только в точках) или с помощью привязки файла стилей на языке CSS. width="300" – задание в виде атрибута элемента (в CSS – width:300px;) height="100" – задание в виде атрибута элемента (в CSS – height:100px;) minwidth="10" – задание в виде атрибута элемента (в CSS – min-width:10px;) maxheight="80" – задание в виде атрибута элемента (в CSS – max-height:80px;)
  • 12. Размещение элементов внутри box’а. Кроме размера можно управлять размещением элементов внутри box’а, если он сам гибкий, а его внутренние элементы – нет. Это делается с помощью атрибутов box’а pack и align. Возможные значения атрибута pack: start, center, end Возможные значения атрибута align: start, center, end, baseline, stretch <hbox flex="1" pack="" align=""> <description> Это текст. </description> <button label="Это кнопка"/> <image src="chrome://findfiles/skin/google.png"/> </hbox>
  • 13. Stack и Deck – специальные контейнеры. Обычно элементы внутри контейнеров располагаются в ряд (по вертикали или по горизонтали). Можно их наложить друг на друга. Для этого используются специальные контейнеры – Stack и Deck. Элементы стека располагаются один поверх другого, причем все они растягиваются так, чтобы иметь размер максимального из них. <groupbox orient="horizontal" align="center"> <caption label="Стеки"/> <stack style="background-color: yellow;"> <description style="padding-top: 1px; padding-left: 1px;"> Это текст с тенью</description> <description style="color: blue;">Это текст с тенью</description> </stack> <stack style="background-color: silver;" orient="horizontal"> <progressmeter value="30%" style="margin: 4px;"/> <label value="30%" style="margin-left: 1em;"/> </stack> </groupbox>
  • 14. Stack и Deck – специальные контейнеры. Элементы внутри стека можно и не растягивать, если для каждого из них задать позицию внутри контейнера. Например, текст с тенью и шкалу прогресса из предыдущего слайда можно оформить и по-другому. <groupbox orient="horizontal" align="center"> <caption label="Стеки"/> <stack style="background-color: yellow;"> <description left="1" top="1">Это текст с тенью</description> <description style="color: blue;">Это текст с тенью</description> </stack> <stack style="background-color: silver;" orient="horizontal"> <progressmeter value="30%" style="margin: 4px;" top="0"/> <label value="30%" left="40"/> </stack> </groupbox>
  • 15. Stack и Deck – специальные контейнеры. Элементы дека располагаются все в одном и том же месте, причем виден всегда только один из них. <groupbox> <caption label="Деки"/> <deck selectedIndex="2" style="background-color: yellow;"> <description value="Это страница № 0"/> <button label="Это страница № 1"/> <vbox> <description value="Это страница № 2"/> <button label="И это тоже № 2"/> </vbox> </deck> </groupbox> Значение атрибута selectedIndex можно менять динамически из программ на JavaScript, чтобы в разное время показывать разное содержание. Например, менять содержимое панели с ярлыками.
  • 16. Панели с ярлыками. Имеется несколько взаимосвязанных элементов, образующих все вместе такой важный элемент управления, как «панель с ярлыками». Это: tabbox, tabs, tab, tabpanels, tabpanel <tabbox width="400"> <tabs> <tab label="Ярлык 1"/> <tab label="Ярлык 2"/> <tab label="Ярлык 3"/> <tab label="Ярлык 4"/> </tabs> <tabpanels height="100"> <tabpanel>...</tabpanel> <tabpanel>...</tabpanel> <tabpanel>...</tabpanel> <tabpanel>...</tabpanel> </tabpanels> </tabbox>
  • 17. Панели с ярлыками. Введем панели в наш диалог поиска файлов: Вторая панель диалога выглядит так: <tabpanel id="optionspanel" orient="vertical"> <checkbox id="casecheck" label="Поиск чувствителен к регистру букв"/> <checkbox id="wordscheck" label="Имя файла только целиком"/> </tabpanel>