|
(21), (22) Заявка: 2007115294/09, 23.04.2007
(24) Дата начала отсчета срока действия патента:
12.03.2003
(30) Конвенционный приоритет:
18.12.2002 US 10/323,504
(43) Дата публикации заявки: 27.10.2008
(46) Опубликовано: 10.03.2010
(56) Список документов, цитированных в отчете о поиске:
US 2002/0087571 A1, 04.07.2002. US 2002/0143774 A1, 03.10.2002. RU 2148856 C1, 10.05.2000. US 2002/0169788 A1, 14.11.2002. US 2002/0085002 A1, 04.07.2002.
(62) Номер и дата подачи первоначальной заявки, из которой данная заявка выделена: 2003106852 12.03.2003
Адрес для переписки:
129090, Москва, ул. Б.Спасская, 25, стр.3, ООО “Юридическая фирма Городисский и Партнеры”, пат.пов. Ю.Д.Кузнецову, рег. 595
|
(72) Автор(ы):
ОСТЕРТАГ Питер Фрэнсиз (US), ФИНОККИО Марк Джеймс (US), УИНСЕР Майкл Эдвард Дьюлак (US), КАРТЕР Бенджамин Франклин Ванг Дзен-Шонг (US), КРАМЕР Николас (US), БЕНТ Сэмьюэл Уаткинс (US), ГУПТА Намита (US)
(73) Патентообладатель(и):
МАЙКРОСОФТ КОРПОРЕЙШН (US)
|
(54) ПРЕДСТАВЛЕНИЕ ЭЛЕМЕНТОВ ПОЛЬЗОВАТЕЛЬСКОГО ИНТЕРФЕЙСА В УПРОЩЕННОМ ВИДЕ
(57) Реферат:
Изобретение относится к внутреннему представлению элементов пользовательского интерфейса. Техническим результатом изобретения является обеспечение упрощенного вида пользовательского интерфейса. Технический результат достигается благодаря тому, что в способе автоматической генерации субэлементов составного элемента пользовательского интерфейса вставляют повторитель, используемый для генерирования узлов, представляющих элементы пользовательского интерфейса, в иерархическое представление составного элемента пользовательского интерфейса, связывают упомянутый повторитель с источником данных, генерируют с помощью упомянутого повторителя упомянутые узлы, представляющие элементы пользовательского интерфейса, с использованием содержимого из упомянутого источника данных, при этом упомянутый повторитель указывается как отображаемый по выбору в упрощенном виде упомянутого иерархического представления составного элемента пользовательского интерфейса, и упомянутый повторитель, указанный как отображаемый по выбору в упрощенном виде, не отображается на упомянутом упрощенном виде. 31 ил.
Область техники
Область техники относится к внутреннему представлению элементов пользовательского интерфейса.
Уровень техники
С быстрым распространением компьютеров появились нововведения в области пользовательских интерфейсов программного обеспечения. Например, в настоящее время имеется множество инструментов, с помощью которых программисты могут создавать пользовательские интерфейсы и управлять ими. Далее, ныне элементы пользовательского интерфейса могут помещаться в документы, такие как web-страницы или документы обработки текстов.
Элементы пользовательского интерфейса могут принимать множество форм: полей редактирования, блоков списка, полос прокрутки, списков выбора, экранных кнопок и т.п. Хотя элемент пользовательского интерфейса может казаться пользователю одним составным, в действительности его можно представить в компьютере в виде ряда отдельных частей или субэлементов, которые были объединены вместе. Кроме того, каждый из указанных субэлементов сам по себе может состоять из других субэлементов. Подобным способом элементы пользовательского интерфейса могут служить в качестве строительных блоков для построения других, более сложных элементов пользовательского интерфейса. Такой подход полезен, поскольку программное обеспечение, управляющее пользовательским интерфейсом (например, оболочка пользовательского интерфейса), может повторно использовать определения некоторых общих элементов при сборке их в составные элементы.
Однако сложность, внесенная представлением элементов пользовательского интерфейса в качестве составных элементов пользовательского интерфейса, может оказаться значительной. Например, неопытные или неквалифицированные программисты могут не захотеть знакомиться с тем, как составлен составной пользовательский интерфейс, или даже с тем, что составной пользовательский интерфейс является прежде всего составным. Такие программисты могли бы легко избежать подобной сложности, если бы они имели дело с элементами составного пользовательского интерфейса. Действительно, даже опытный программист может захотеть избежать столкновения с такой сложностью. Таким образом, существует потребность в том, чтобы как-то упростить представление составных элементов пользовательского интерфейса.
Сущность изобретения
Как описано ниже, можно обеспечить упрощенный вид представления одного или нескольких элементов пользовательского интерфейса. Например, некоторые узлы, представляющие элементы пользовательского интерфейса в иерархическом представлении, могут быть выборочно отображаемыми (отображаемыми по выбору). Указанные узлы могут отображаться при некоторых обстоятельствах и не отображаться при других обстоятельствах. В указанном иллюстративном способе можно обеспечить упрощенный репрезентативный вид (например, не отображая выборочно отображаемые узлы).
В одном из вариантов воплощения, при обеспечении услуг пользовательского интерфейса на упрощенном виде представления пользовательского интерфейса могут быть выполнены различные операции. Например, при выполнении операций выборочно отображаемые узлы могут не отображаться. Такой подход может быть полезен для программиста, который не хочет знакомиться с деталями представления.
Например, многочисленные элементы пользовательского интерфейса могут быть объединены в один составной модуль, над которым могут выполняться операции. Тот факт, что составной модуль составлен из многочисленных элементов пользовательского интерфейса, может быть прозрачно отражен в упрощенном виде представления элементов пользовательского интерфейса. Таким образом, программа может исследовать и управлять представлением, не касаясь отображенных узлов. В результате, программист может записывать более простой код или разметку. И, кроме того, программисту нет необходимости полностью знакомиться с главной структурой, которая может содержать более одного узла для составного модуля.
Таким образом, услуга (функция, служба) пользовательского интерфейса, обеспечивающая упрощенный вид, может обеспечить мощный инструмент, с помощью которого стимулируется повторное использование программного обеспечения, а неискушенные пользователи могут взаимодействовать с элементами пользовательского интерфейса на базовом уровне.
Дополнительные признаки и преимущества станут очевидными из нижеследующего подробного описания иллюстрируемых вариантов воплощения, которые обсуждаются со ссылками на сопровождающие чертежи.
Краткое описание чертежей
В дальнейшем изобретение поясняется описанием конкретных вариантов его воплощения со ссылками на сопровождающие чертежи, на которых:
Фиг.1 изображает иллюстративное представление элемента пользовательского интерфейса, имеющего упрощенный вид;
Фиг.2 изображает иллюстративный упрощенный вид представления элемента пользовательского интерфейса, изображенного на Фиг.1;
Фиг.3 изображает представление другого иллюстративного элемента пользовательского интерфейса, имеющего упрощенный вид;
Фиг.4 изображает иллюстративный упрощенный вид представления элемента пользовательского интерфейса, изображенного на Фиг.3;
Фиг.5 изображает блок-схему иллюстративного способа для осуществления упрощенного вида представления элемента пользовательского интерфейса;
Фиг.6 изображает блок-схему иллюстративного способа для обработки определения элемента пользовательского интерфейса, имеющего представление в упрощенном виде;
Фиг.7 изображает блок-схему иллюстративного способа для привлечения определения элемента пользовательского интерфейса, имеющего упрощенный вид, такого как на Фиг.6;
Фиг.8 изображает блок-схему иллюстративного способа для выполнения операции на иерархическом представлении элемента пользовательского интерфейса, такого как на Фиг.7;
Фиг.9 изображает «снимок экрана» иллюстративного элемента пользовательского интерфейса, упоминаемого здесь как комбинированный блок;
Фиг.10А изображает иллюстративное иерархическое представление комбинированного блока, такого как на Фиг.9;
Фиг.10Б изображает иллюстративное иерархическое представление комбинированного блока, подобного такому, как на Фиг.10, и включает в себя иллюстративные границы инкапсуляции;
Фиг.11 изображает иллюстративный упрощенный вид иерархического представления комбинированного блока, такого как показан на Фиг.10;
Фиг.12 изображает блок-схему иллюстративного способа для создания иерархического представления элемента пользовательского интерфейса, имеющего выборочно отображаемые узлы;
Фиг.13 изображает иллюстративное определение разметки для комбинированного блока, включающее индикацию, по меньшей мере, одного элемента как выборочно отображаемого;
Фиг.14А изображает иллюстративное программное определение комбинированного блока, включающее индикацию, по меньшей мере, одного элемента как выборочно отображаемого;
Фиг.14Б изображает продолжение иллюстративного определения разметки Фиг.14А;
Фиг.15 изображает иллюстративное привлечение разметки комбинированного блока, такого как определен на Фиг.13 или Фиг.14А и 14Б;
Фиг.16 изображает иллюстративное программное привлечение комбинированного блока, такого как определен на Фиг.13 или Фиг.14А и 14Б;
Фиг.17 изображает блок-схему иллюстративного способа для выполнения операции, используя упрощенный вид представления элемента пользовательского интерфейса;
Фиг.18 изображает иллюстративный полный вид иерархического представления комбинированного блока, такого как изображен на Фиг.9, с соответствующими узлами, обозначенными как не отображаемые в упрощенном виде, после выполнения операции с помощью упрощенного вида;
Фиг.19 изображает иллюстративный упрощенный вид, соответствующий представлению Фиг.18;
Фиг.20А изображает альтернативное представление выборочно отображаемых узлов пользователя для элемента пользовательского интерфейса;
Фиг.20Б изображает упрощенный вид, соответствующий представлению, показанному на Фиг.20А;
Фиг.21 изображает снимок экрана элемента пользовательского интерфейса – блока списка, в котором используется признак повторителя;
Фиг.22 изображает иллюстративное иерархическое представление элемента пользовательского интерфейса, включающего в себя повторитель;
Фиг.23 изображает иллюстративный упрощенный вид, соответствующий Фиг.22;
Фиг.24 изображает блок-схему иллюстративного способа для создания иерархического представления элемента пользовательского интерфейса, включающего в себя повторитель, такой как показан на Фиг.22;
Фиг.25 изображает иллюстративное привлечение разметки повторителя, обозначенного как выборочно отображаемый;
Фиг.26 изображает иллюстративное программное привлечение повторителя, обозначенного как выборочно отображаемый;
Фиг.27 изображает другое иллюстративное привлечение разметки повторителя, обозначенного как выборочно отображаемый;
Фиг.28 изображает иллюстративное определение разметки блока списка, такого как изображен на Фиг.21, без использования признака повторителя.
Подробное описание предпочтительных вариантов воплощения изобретения
Краткий обзор
Различные технологии, описанные ниже, полезны для создания, представления и управления элементами пользовательского интерфейса. Элементы пользовательского интерфейса могут принимать множество форм типа графических экранных кнопок, окон редактирования, полос прокрутки, списков выбора, раскрывающихся меню, средств управления ACTIVEX, изображений и т.п. Элементы пользовательского интерфейса могут выглядеть как часть программы (например, управлять функциональными возможностями программы) или находиться в документе. Упрощенный вид внутреннего представления таких элементов пользовательского интерфейса может сделать более простым программирование для элементов пользовательского интерфейса. Например, случайный или неискушенный программист может написать программу, взаимодействующую с упрощенным видом без необходимости знакомиться с некоторыми сложностями. Также более искушенный программист может захотеть оградиться от таких сложностей, чтобы избежать возможных ошибок программирования.
При желании, описанные здесь технологии (например, упрощенный вид) могут быть обеспечены как часть услуги (функции, службы) пользовательского интерфейса. Таким образом, программы, взаимодействующие с услугой, могут воспользоваться преимуществом признаков так, как это требуется.
В некоторых вариантах воплощений элемент пользовательского интерфейса может быть определен как имеющий иерархическое представление с упрощенным видом. Такое определение может вызываться для того, чтобы создавать иерархическое представление с упрощенным видом. Впоследствии над иерархическим представлением может быть выполнена операция. Такая операция может выполняться как над полным, так и над упрощенным видом иерархического представления.
Если элемент пользовательского интерфейса является составным элементом пользовательского интерфейса, содержащим множество элементов пользовательского интерфейса, то может отображаться главный узел (например, родительский), а другие узлы составного элемента пользовательского интерфейса могут быть определены как выборочно отображаемые (отображаемые по выбору). В случае неотображения, вид представления изображает главный узел, а не другие, выборочно отображаемые узлы. Таким образом, для составного элемента пользовательского интерфейса, скорее, может отображаться один узел, чем множество узлов.
Полный вид представления составного элемента пользовательского интерфейса может быть относительно сложным, сложность заключается в том, что в иерархическом представлении, представляющем элемент пользовательского интерфейса, может существовать множество узлов. Программист, желающий обращаться с полным видом, вынужден знакомиться с различными узлами и их иерархическими отношениями. Как описано ниже, вместо этого программа может выполнять операции, используя упрощенный вид.
В упрощенном виде при выполнении операций на узле неотображенные узлы могут игнорироваться (например, родительский или дочерний узел в иерархии). Например, при добавлении дочерних узлов к узлу, неотображенные промежуточные узлы могут игнорироваться или пропускаться. Таким образом, в упрощенном виде иерархического представления пользовательского интерфейса запрос добавить дочерние узлы к некоторому узлу может фактически приводить к добавлению дочерних узлов к соответствующему дочернему узлу этого узла (например, представляя элемент составного элемента пользовательского интерфейса). Такой подход полезен, поскольку добавление дочерних узлов в упрощенном виде не требует знания сложностей многочисленных узлов, формирующих элемент пользовательского интерфейса и их взаимосвязи.
Например, блок списка может быть представлен как множество узлов в иерархических соотношениях, а один из узлов может быть обозначен как специфический узел, предназначенный для приема отображенных выборов для блока списка в качестве дочерних узлов. Однако программист мог бы не захотеть знакомиться с такими сложностями.
Используя упрощенный вид, указанные операции легко могут быть выполнены путем добавления дополнительных выборов пользователя в качестве дочерних узлов главного узла элемента пользовательского интерфейса (например, через упрощенный вид). В упрощенном виде запрос добавить дочерние узлы к главному узлу выполняется как запрос добавить дочерние узлы к соответствующему узлу (например, потомку главного узла). Таким образом, для того чтобы выполнять операции над элементом пользовательского интерфейса, программа может использовать упрощенное представление элемента пользовательского интерфейса. В результате, программисту нет необходимости знакомиться со сложностями полного вида, и может использоваться более простой код или разметка.
Один из способов осуществления упрощенного вида состоит в том, чтобы определять различные узлы в представлении как инкапсулирующие родительские узлы или инкапсулирующие контейнеры. Таким образом, специфический узел может быть обозначен как главный узел (например, инкапсулирующий родительский), а другой (например, дочерний) узел может быть обозначен как специфический узел для приема дочерних (например, если родительский узел имеет или будет иметь дочерние узлы в упрощенном виде).
Другой способ воплощения упрощенного вида состоит в том, чтобы определять выборочно отображаемый узел таким образом, что его дочерние узлы считались в упрощенном виде как родственные узлы родственных узлов выборочно отображаемого узла.
Как здесь описано, для того чтобы изучить или осуществить управление представлением элемента пользовательского интерфейса, может быть выполнено множество операций, отличных от добавления дочерних узлов. Кроме того, операции могут быть выполнены на любом узле в представлении и при этом обладать преимуществом упрощенного вида.
К тому же значения свойств могут быть определены (например, для добавленных узлов) в свете выборочно отображаемых узлов. В некоторых случаях может потребоваться использование значений свойств, ассоциированных с главным узлом (например, игнорируя выборочно отображаемые узлы) ближайшего (например, неотображенного) родительского узла, или их комбинации.
Поскольку некоторые детали, имеющие отношение к представлению элемента пользовательского интерфейса, являются скрытыми, главный узел и выборочно отображаемые узлы для составного элемента пользовательского интерфейса иногда упоминаются как формирующие «инкапсулированный» элемент пользовательского интерфейса.
Программа или язык разметки, взаимодействующие с упрощенным видом, могут быть ограждены от некоторой сложности лежащего в основе представления. Таким образом, составной элемент пользовательского интерфейса может быть собран из множества элементов пользовательского интерфейса, не внося дополнительную сложность в программу, использующую составной пользовательский интерфейс. Такой подход может быть полезен тем, что он может поощрять разработчиков элемента пользовательского интерфейса повторно использовать существующие элементы пользовательского интерфейса при создании новых элементов без необходимости внесения ненужной сложности при работе с элементом пользовательского интерфейса. Далее, может поддерживаться вложение определения, специфицирующего выборочно отображаемые узлы.
Иллюстративное иерархическое представление элемента пользовательского интерфейса
Один из способов представления элемента пользовательского интерфейса в программном обеспечении состоит в том, чтобы хранить его в форме иерархического дерева, имеющего различные узлы. Фиг.1 изображает иллюстративное иерархическое представление 100 элемента пользовательского интерфейса. Узлы 110 и 120 изображены имеющими родительско-дочерние отношения. Например, узел 110 является родительским элементом дочернего элемента 120. Поскольку представление 100 включает в себя более одного узла, иногда говорят, что оно представляет «составной» элемент пользовательского интерфейса. В случае составных элементов пользовательского интерфейса узел 110 может соответствовать одному визуальному представлению, а узел 120 может соответствовать другому визуальному представлению. Однако, по меньшей мере, один из узлов 110 или 120 может не иметь никакой визуальной картинки.
Один или несколько узлов в представлении 100 может быть обозначен как выборочно отображаемый. В примере узел 120 обозначен именно так. При представлении упрощенного вида представления 100 выборочно отображаемый узел 120 не отображается. В результате, отображается только корневой узел 110 из узлов, представляющих элемент пользовательского интерфейса иерархического представления 100. Таким образом, отображаемый узел 110 иногда называется «главным» узлом.
Способом, изображенным на Фиг.1, могут быть представлены намного более сложные пользовательские интерфейсы, содержащие многочисленные элементы. Каждый из элементов может сам содержать другие элементы пользовательского интерфейса, добавляющие дополнительные слои сложности (например, большее количество узлов, включая выборочно отображаемые узлы), не изображенные на Фиг.1. Кроме того, различные дочерние узлы могут быть главными узлами для представлений других элементов пользовательского интерфейса.
Фиг.1 изображает полный вид иерархического представления элемента пользовательского интерфейса, включая выборочно отображаемые дочерние узлы (например, узел 120). Однако полный вид иерархического представления 100 может быть нежелателен при выполнении различных операций на представлении элемента пользовательского интерфейса. Например, непосредственное взаимодействие с узлом 120 может оказаться ненужным при некоторых обстоятельствах. Если это так, то может быть представлен иллюстративный упрощенный вид 200 представления, как изображено на Фиг.2.
Иллюстративный упрощенный вид 200 изображает только один узел 210. Узел 210 может быть либо объединенным представлением узлов 110 и 120 полного вида (например, где узел 120 инкапсулируется в узле 110), либо просто представлением узла 110 из полного вида.
Другое иллюстративное иерархическое представление элемента пользовательского интерфейса
Другое иллюстративное иерархическое представление 300 изображено на Фиг.3. В примере узлы 310, 320 и 325 представляют собой набор узлов 330, представляющих составной элемент пользовательского интерфейса. Из набора узлов 330 узел 310 представляет собой главный узел, а остальные узлы 320 и 325 определяются как выборочно отображаемые. Другой узел 340 не является отображаемым по выбору и показан как дочерний для одного из выборочно отображаемых узлов 320. Представление 300 включает в себя выборочно отображаемые узлы, и при необходимости обеспечивается полный вид.
Соответствующий упрощенный вид изображен на Фиг.4. Выборочно отображаемые узлы 320 и 325 не отображаются, когда требуется упрощенный вид. Вместо этого упрощенный вид 400 изображает узел 410 (например, узел 310 или комбинацию узлов 310, 320 и 325) и узел 340.
На Фиг.3 один из узлов 320 может быть обозначен как узел, под которым хранятся дочерние узлы упрощенного вида (например, узел 340). Такой узел иногда называется «контейнерным» узлом (например, для инкапсулированных узлов).
Таким образом, относительно сложное представление пользовательского интерфейса при желании может быть представлено в упрощенной форме. Нет необходимости в обеспечении полного вида 300 иерархического представления такого сложного пользовательского интерфейса для программы, написанной пользователем, который не имеет никакого интереса к отображенным по выбору узлам в иерархическом представлении. Например, программист может не интересоваться существованием или определением функциональных возможностей или же видом элементов пользовательского интерфейса, относящихся к выборочно отображаемым узлам 320 и 325. Однако у программы может возникнуть необходимость взаимодействовать с узлом 340. Таким образом, иногда желательно обеспечить упрощенный вид 400 иерархического представления пользовательского интерфейса, изображающего только узлы, представляющие интерес.
Технологии, описанные в настоящем изобретении, могут применяться к разнообразному множеству других представлений, имеющих дополнительное или меньшее количество узлов.
Краткий обзор иллюстративного варианта воплощения упрощенного вида
Фиг.5 изображает иллюстративный способ 500 осуществления упрощенного вида представления элемента пользовательского интерфейса (например, в функции пользовательского интерфейса). На шаге 510 определяется элемент пользовательского интерфейса, имеющий иерархическое представление. Например, определение может включать множество узлов, некоторые из которых являются выборочно отображаемыми.
После того как определение создано, оно может быть вызвано на шаге 520 для создания пользовательского интерфейса. Например, иерархическое представление определенного элемента пользовательского интерфейса может быть создано посредством определения и сохранено.
На шаге 530 над представлением могут быть выполнены одна или несколько операций. Такие операции могут быть выполнены через упрощенный вид иерархического представления без отображения отображаемых по выбору узлов в представлении.
При желании, вызов определения и выполнение операций над представлением может быть сделано независимо от полного вида представления. Таким образом, программисты могут записывать код или разметку без ознакомления с деталями полного вида. Практически любое из изображенных действий может быть независимо полезно, и не обязательно они должны выполняться все сразу или одной и той же программой.
Иллюстративный способ для определения элемента пользовательского интерфейса, имеющего упрощенный вид
Фиг.6 изображает иллюстративный способ для приема определения элемента пользовательского интерфейса, имеющего иерархическое представление с упрощенным видом. Определение может быть создано с использованием различных языков, таких как язык разметки (например, XML расширяемый язык разметки), или HTML (язык гипертекстовой разметки), или языки программирования (например, Java или C++). Таким образом, определение может быть получено из программы или задано в документе с разметкой.
На шаге 610 принимается индикационная информация одного или нескольких узлов, которые должны быть сохранены для представления элемента пользовательского интерфейса. Например, могут быть специфицированы элементы пользовательского интерфейса (например, субэлементы). Определение может показать иерархические отношения между элементами. Такое определение может включать в себя определения узлов для различных элементов, формирующих составной элемент пользовательского интерфейса.
На шаге 620 принимается индикационная информация, по меньшей мере, одного выборочно отображаемого узла. При желании выборочно отображаемые узлы могут выбираться автоматически, вместо того чтобы задаваться в определении. Когда обеспечивается упрощенный вид представления заданного элемента пользовательского интерфейса, выборочно отображаемые узлы являются неотображенными. Тогда определение может быть сохранено для дальнейшего вызова.
Иллюстративный способ вызова заданного элемента пользовательского интерфейса, имеющего упрощенный вид
Пример элемента пользовательского интерфейса может быть создан посредством вызова определения (например, такого, которое определяется через способ, показанный на Фиг.6). Фиг.7 изображает иллюстративный способ вызова определения элемента пользовательского интерфейса, имеющего упрощенный вид. На шаге 710 принимается запрос создать элемент пользовательского интерфейса. Такой запрос может быть принят посредством программного обеспечения (например, из программы программного обеспечения) или из документа с разметкой. Запрос необязательно должен приниматься из одного и того же объекта, который определяет элемент пользовательского интерфейса.
На шаге 720 определение иерархического представления элемента пользовательского интерфейса используется для создания подходящих узлов в иерархическом представлении пользовательского интерфейса (например, формирование составного элемента пользовательского интерфейса в соответствии с элементами пользовательского интерфейса). Созданные узлы обеспечиваются, если запрашивается полный вид представления.
На шаге 730 соответствующие узлы (например, как специфицировано определением) обозначаются как выборочно отображаемые. Такие выборочно отображаемые узлы не отображаются (например, не встречаются), когда запрашивается упрощенный вид (например, представления, в котором представлен элемент пользовательского интерфейса).
То обстоятельство, отображается ли узел на виде представления элемента пользовательского интерфейса, не зависит от того, отображается или нет (например, скрытый) соответствующий элемент пользовательского интерфейса на устройстве отображения, когда изображается элемент пользовательского интерфейса.
Иллюстративный способ выполнения операции над элементом пользовательского интерфейса, имеющим упрощенный вид
Как только определение пользовательского интерфейса вызвано для создания иерархического представления элемента пользовательского интерфейса (например, как изображено на Фиг.7), могут выполняться операции для представления. Такая операция может выполняться либо для полного, либо для упрощенного вида представления. Операции, выполняемые над упрощенным видом, включают в себя, например, перечисление дочерних узлов некоторого узла, добавление дочерних узлов к узлу, удаление дочерних узлов из узла с перемещением в пределах иерархического представления.
Иллюстративный способ для выполнения операции над упрощенным видом представления элемента пользовательского интерфейса изображен на Фиг.8. На шаге 810 принимается запрос выполнения операции над элементом пользовательского интерфейса (например, над главным узлом составного элемента пользовательского интерфейса). На шаге 820 выполняется запрошенная операция с использованием упрощенного вида иерархического представления элемента пользовательского интерфейса. Операция может привести к модификации иерархического представления (например, при добавлении или удалении узлов), или представление может не измениться (например, при перечислении или перемещении в пределах узлов).
Например, запрос на нумерацию дочерних узлов некоторого узла с использованием упрощенного вида может привести к нумерации дочерних узлов, сохраненных в дочернем узле (или внучатом узле) некоторого узла, если дочерний (внучатый) узел обозначается как выборочно отображаемый.
Запрос добавить дочерний узел к родительскому узлу, имеющему выборочно отображаемые дочерние узлы в упрощенном виде, может привести к добавлению дочернего узла на его соответствующее место в иерархии полного вида представления элемента пользовательского интерфейса, который может или не может быть родительским узлом, видимым в упрощенном виде.
Таким образом, в упрощенном виде будет казаться, как если бы дочерний узел был добавлен непосредственно под родительским узлом. Для операций, вызывающих дочерние узлы, определение иерархического представления элемента пользовательского интерфейса может использоваться для нахождения соответствующего места для добавления или нахождения дочерних узлов в пределах полного вида иерархического представления. В этом способе программа может быть написана так, чтобы взаимодействовать с упрощенным видом, и программист ограждается от неприятности знать детали полного вида, включая скрытые узлы и их расположение в иерархии.
Иллюстративные варианты воплощения, относящиеся к комбинированному блоку
Некоторые из следующих примеров описывают различную обработку, относящуюся к иллюстративному элементу пользовательского интерфейса, известному как комбинированный блок. Описанные методы могут применяться к любым элементам пользовательского интерфейса, уже существующим или разрабатываемым в дальнейшем.
Иллюстративный элемент пользовательского интерфейса – комбинированный блок
Фиг.9 изображает иллюстративный элемент 905 пользовательского интерфейса, вообще известный как комбинированный блок. В примере комбинированный блок 905 представляет собой составной элемент пользовательского интерфейса, содержащий несколько элементов пользовательского интерфейса, которые, в свою очередь, содержат дополнительные элементы пользовательского интерфейса. Комбинированный блок 905 содержит входной блок 910, раскрывающуюся кнопку 930 и всплывающее окно 920. Вообще говоря, когда пользователь щелкает на раскрывшейся кнопке 930, отображается всплывающее окно 920. В этом примере всплывающее окно 920 содержит блок 925 списка (например, визуально неразличимый из всплывающего окна 920). Однако всплывающее окно 920 может содержать альтернативные или дополнительные элементы пользовательского интерфейса (например, раскрывающееся меню). Блок 925 списка также представляет собой составной элемент пользовательского интерфейса со своими собственными элементами, такими как средство 926 просмотра с прокруткой (например, также визуально невидимое из всплывающего окна 920), содержащее панель 935 «сетки» и полосу 945 прокрутки для прокрутки пунктов 940 списка, которые заключены в пределах панели 935 сетки.
В иллюстративном примере комбинированного блока 905 элемент 925 блока списка изображается как визуально невидимый из элемента 926 средства просмотра с прокруткой и элемента 920 всплывающего окна. Таким образом, иллюстрация показывает, что всплывающее окно 920 содержит элемент 925 блока списка, который формируется добавлением панели 935 сетки к указателю пустого места, содержащемуся в пределах средства 926 просмотра с прокруткой. Возможны другие компоновки. Например, всплывающее окно 920 может содержать пользовательские элементы, отличные от блока 925 списка. Кроме того, также средство 926 просмотра с прокруткой может иметь элементы (например, меню), отличные от панели 935 сетки, содержащейся в пределах ее указателя пустого места.
Полоса 945 прокрутки также может быть представлена как составной элемент пользовательского интерфейса, содержащий элементы типа кнопок прокрутки 950, 951, 955 и 956 и бегунка 960 полосы прокрутки. Вместо изображенного комбинированного блока 905 может использоваться любое число вариаций. Например, элементы могут удаляться, могут добавляться дополнительные элементы, или могут задаваться альтернативные элементы. Например, также может быть добавлена панель горизонтальной прокрутки (не показана), чтобы помочь пользователю осуществлять прокрутку по пунктам списка, которые расположены по горизонтали.
Иллюстративное представление элемента пользовательского интерфейса – комбинированный блок (полный вид)
Фиг.10А изображает иллюстративное иерархическое представление 1000 комбинированного блока (например, которое изображено на Фиг.9), которое должно обеспечиваться (например, функцией пользовательского интерфейса), когда запрашивается полный вид. Как показано, узлы расположены в древовидной структуре иерархическим способом.
Главный узел комбинированного блока представлен номером позиции 1005, как самый верхний узел иерархии. Другие элементы комбинированного блока (например, такие, как изображены на Фиг.9) также представлены как узлы в пределах иерархического представления как всплывающий элемент 1020, входной блок 1010 и раскрывающаяся кнопка 1030. Всплывающий элемент 1020 изображен, как содержащий блок 1025 списка. Блок 925 списка представляет собой родительский узел иерархического представления, которое дополнительно содержит средство 1026 просмотра с прокруткой.
Средство 1026 просмотра с прокруткой само представляет собой родительский узел внутри иерархического представления. Средство 1026 просмотра с прокруткой само представляет собой родительский узел для элемента 1035 указателя места, для вертикальной полосы прокрутки 1030 и для горизонтальной полосы прокрутки 1040. Как отмечено выше относительно Фиг.9, нет визуальной разницы между родительским узлом 1025 блока списка и его дочерним элементом – средством 1026 просмотра с прокруткой. Это имеет место из-за того, что блок 1025 списка формируется путем добавления элемента 1045 панели сетки в качестве дочернего узла для узла 1035 элемента указателя места. Однако под элементами указателя места могут быть добавлены другие дочерние узлы для использования средства 1026 просмотра с прокруткой в комбинации с другими элементами пользователя, чтобы сформировать другие более сложные элементы пользовательского интерфейса. Наконец, пункты списка 1050А, 1050В и 1050С являются дочерними узлами панели 1045 сетки.
Пример иллюстрирует, как составной элемент пользовательского интерфейса может быть создан из других элементов пользовательского интерфейса, таким образом, может быть представлен многими узлами. Например, составной элемент пользовательского интерфейса – блок списка – может быть определен как узел 1025 блока списка вместе с его последующими узлами. Чтобы сконструировать составной элемент пользовательского интерфейса – блок списка, входной узел 1010, всплывающий узел 1020 и узел 1030 кнопки могут быть объединены под узлом 1005 комбинированного блока. Наконец, может быть вставлен (например, посредством разметки или программного обеспечения) составной элемент пользовательского интерфейса – блок списка (например, узел 1020 блока списка и его потомки). Простая ссылка к составному элементу пользовательского интерфейса – блоку списка – может привести к созданию узла 1025 блока списка и его потомков. Практически, узлы, относящиеся к пунктам списка (например, узлы 1050А, 1050В и 1050С), не могли бы быть включены в определение элемента пользовательского интерфейса – блока списка.
Многократное вложение узлов, изображенных в примере, может добавить сложность определения и управления элементом пользовательского интерфейса. Хотя представление комбинированного блока является относительно сложным, даже более сложные примеры могут быть осуществлены. Однако эти технологии могут также применяться к более простым примерам.
В примере набор узлов 1060, содержащий узлы 1010, 1020, 1025, 1026, 1030, 1031А, 1031В, 1033, 1034А, 1034В, 1035, 1040, 1041А, 1041В, 1043, 1044А, 1044В и 1045, определен как выборочно отображаемый. Когда представляется упрощенный вид представления, отображаемые по выбору узлы не отображаются.
Может быть желателен упрощенный вид иерархического представления элемента пользовательского интерфейса. Например, может быть желательно добавлять дополнительные пункты списка, не сталкиваясь с относительными сложностями иерархического представления (например, где добавить пункты списка в качестве дочерних узлов).
Иллюстративное представление элемента пользовательского интерфейса – комбинированного блока (упрощенный вид)
Хотя составной элемент пользовательского интерфейса может включать в себя множество узлов со сложными связями, может быть желательным обеспечивать упрощенный вид иерархического представления элемента пользовательского интерфейса. Фиг.11 изображает иллюстративное иерархическое представление 1100 (например, соответствующее представлению 1000 Фиг.10А), обеспечиваемое, когда запрашивается упрощенный вид комбинированного блока (например, такого, как на Фиг.9). В примере узлы 1050А, 1050В и 1050С для пунктов 940 списка изображены как непосредственные дочерние узлы главного узла 1105 комбинированного блока. Другие узлы, не показанные, иногда называют «инкапсулированными» узлом 1105 комбинированного блока. При использовании упрощенного вида программа, связанная с управлением пунктами списка, может рассматривать пункты списка как дочерние узлы главного узла 1110 и необязательно должна содержать логические средства, касающиеся других элементов в составном элементе пользовательского интерфейса. Определение элемента пользовательского интерфейса – комбинированного блока – может содержать достаточную информацию, посредством которой операции для упрощенного вида могут преобразовываться в соответствующие операции для полного вида иерархического представления.
Иллюстративное вложение элементов пользовательского интерфейса, имеющих упрощенный вид
Описанные здесь компоновки также могут поддерживать вложение. При вложении могут иметься элементы пользовательского интерфейса, имеющие отображаемые по выбору (выборочно отображаемые) узлы внутри других элементов пользовательского интерфейса, которые сами по себе имеют выборочно отображаемые узлы. Такое вложение может быть решено разнообразными способами. Например, хотя некоторые из узлов в составном элементе пользовательского интерфейса могут быть обозначены как отображаемые (например, видимые в упрощенном виде), если элемент пользовательского интерфейса выполнен в виде части (например, инкапсулированным внутри) другого составного элемента пользовательского интерфейса, то такие узлы могут считаться выборочно отображаемыми (например, невидимыми в упрощенном виде), на основании того факта, что они находятся в пределах области иерархии, представляющей инкапсулирующий составной элемент пользовательского интерфейса, который обозначается как выборочно отображаемый (например, посредством инкапсулирующего составного элемента пользовательского интерфейса).
Далее, такое вложение может поддерживать относительность. Например, узлы могут или не могут считаться отображаемыми по выбору в зависимости от узла, над которым делается запрос выполнения операции. Другими словами, запрос выполнения операции над узлом, инкапсулированным внутри другого элемента пользовательского интерфейса, может привести к виду, который показывает узлы, невидимые при выполнении операции над инкапсулирующим элементом пользовательского интерфейса.
Фиг.10Б изображает иллюстративное иерархическое представление комбинированного блока, такого как представлен на Фиг.10А. Для краткости, некоторые из узлов, относящиеся к полосам прокрутки, опущены.
В этом примере узел 1026 средства просмотра прокрутки является главным узлом составного элемента пользовательского интерфейса, содержащего узел 1026 средства просмотра с прокруткой, узел 1035 контейнерного элемента и различные узлы полосы прокрутки (например, узел 1030). Для операций, выполняемых над узлом 1026 средства просмотра прокрутки в упрощенном виде, другие узлы составного элемента пользовательского интерфейса считаются отображаемыми по выбору (например, скрытыми) и инкапсулируются узлом 1026 средства просмотра с прокруткой. Например, запрос добавить дочерний узел к узлу 1026 средства просмотра с прокруткой в упрощенном виде привел бы к добавлению дочернего узла к узлу 1035 контейнерного элемента. Таким образом, определяется граница 1090 инкапсуляции.
Аналогично, узел блока 1025 списка в главном узле составного элемента пользовательского интерфейса, содержащего узел 1026 средства просмотра с прокруткой (например, и узлов, инкапсулированных таким образом) и панель 1045 сетки. Для операций, выполняемых над узлом 1025 блока списка, другие узлы составного элемента пользовательского интерфейса считаются отображаемыми по выбору (например, скрытыми) и инкапсулируются узлом 1025 блока списка. Таким образом, определяется граница 1080 инкапсуляции.
Далее, узел 1005 комбинированного блока является главным узлом составного элемента пользовательского интерфейса, содержащего входной узел 1010, всплывающий узел 1020, узел 1030 кнопки и узел 1025 блока списка (например, и узлы, инкапсулированные таким образом). Для операций, выполняемых над узлом 1005 комбинированного блока, другие узлы составного элемента пользовательского интерфейса считаются отображаемыми по выбору (например, скрытыми) и инкапсулируются узлом 1005 комбинированного блока. Таким образом, определяется граница 1070 инкапсуляции. Из-за того, что узел 1025 блока списка сам является частью границы инкапсуляции, вступает в силу эффективная граница 1095 инкапсуляции. Другими словами, для операций, выполняемых на узле 1005 комбинированного блока, другие изображенные узлы, за исключением узла 1005 комбинированного блока и узлов 1050А-С пунктов списка, считаются выборочно отображаемыми (например, скрытыми) и инкапсулируются комбинированным блоком 1005. Например, запрос добавить дочерний узел к узлу 1005 комбинированного блока в упрощенном виде привел бы к добавлению дочернего узла к узлу 1045 панели сетки.
Иллюстративный способ представления элемента пользовательского интерфейса, имеющего упрощенный вид
Для того, чтобы обеспечить упрощенный вид, можно использовать множество разнообразных способов. Один из таких способов состоит в том, чтобы в пределах представления элемента пользовательского интерфейса сохранять различные свойства узлов. Следующий пример описывает использование свойств («инкапсулирующий родительский» и «инкапсулирующий контейнерный») для обозначения тех узлов в представлении, которые являются выборочно отображаемыми.
Устанавливая соответствующее свойство узла (например, «инкапсулирующий родительский») на значение «ИСТИНА», узлы, находящиеся под этим узлом в иерархии, обозначаются как отображаемые по выбору (например, не отображаются на упрощенном виде).
Как описано ниже, такой узел иногда называется «главным» узлом. Далее, если конкретный узел под главным узлом в иерархии имеет соответствующее свойство (например, «инкапсулирующий контейнерный»), установленное равным значению «ИСТИНА», то дочерние узлы родительского узла обозначаются как не отображаемые по выбору (например, отображаются на упрощенном виде). В таком случае дочерние узлы родительского узла считаются дочерними узлами главного узла для упрощенного вида. Так, если дочерние узлы добавляются к главному узлу через упрощенный вид, то они фактически добавляются как дочерние узлы главного узла, имеющего свойство (например, «инкапсулирующий контейнерный»), установленное равным значению «ИСТИНА».
Вложение может поддерживаться, как описано выше со ссылкой на Фиг.10Б. В этом примере узел на вершине границы инкапсуляции (например, главный узел) может иметь установленным соответствующее свойство (например, свойство «инкапсулирующий родительский»), и узел внизу границы инкапсуляции может иметь установленным соответствующее свойство (например, свойство «инкапсулирующий контейнер»). Таким способом границы инкапсуляции могут быть определены посредством установки свойства.
Фиг.12 изображает иллюстративный способ 1200 для представления элемента пользовательского интерфейса в упрощенном виде посредством указания значений различных свойств узлов в иерархическом представлении элемента пользовательского интерфейса. Узлы иерархического представления могут иметь свойства, относящиеся к выборочному отображению самого узла, его дочерних узлов или его родительских узлов. Устанавливая такие свойства, можно представить элемент пользовательского интерфейса, имеющий упрощенный вид, и операции могут выполняться над представлением через упрощенный вид.
На шаге 1210, по меньшей мере, один узел иерархического представления пользовательского интерфейса выбирается таким, чтобы он служил в качестве главного узла (например, который инкапсулирует отображаемые по выбору узлы). На шаге 1220 свойство «инкапсулирующий родительский» на выбранном узле устанавливается равным значению «ИСТИНА». На шаге 1230 потомок главного узла выбирается таким, чтобы он служил в качестве контейнера для любых дочерних узлов (например, существующих сейчас или добавляемых впоследствии) главного узла на упрощенном виде. Затем на шаге 1240 свойство «инкапсулирующий контейнерный» последующего узла устанавливается равным значению «ИСТИНА».
Посредством установки свойств, как объяснялось выше в примере, контейнер или любые другие промежуточные потомки (например, дочерние узлы) между главным узлом и контейнером тем самым определяются как отображаемые по выбору (например, скрытые – упрощенный вид или «инкапсулированные» внутри родительского узла). Дочерние узлы ниже контейнера будут отображаться (например, видимые) в упрощенном виде.
В некоторых компоновках может не существовать вообще дочерних элементов. В таком случае будет устанавливаться соответствующее свойство листового узла. Впоследствии, когда потомки добавляются через упрощенный вид, они помещаются ниже листового узла.
Иллюстративное определение на языке разметки комбинированного блока
Элемент пользовательского интерфейса, имеющий упрощенный вид представления, может быть определен разнообразными способами. Один такой путь – с помощью языка гипертекстовой разметки (например, HTML или XML), который может обрабатываться и сохраняться для более позднего вызова. Фиг.13 изображает иллюстративное определение комбинированного блока с упрощенным видом (например, такого, как показан на Фиг.11), написанное на языке XML.
Когда создается пример определенного комбинированного блока, для различных узлов иерархического представления могут быть установлены соответствующие свойства для достижения требуемого упрощенного вида. Схема определения свойств различных узлов иерархического представления может быть приспосабливаемой, чтобы использоваться в других типах языков, кроме языков разметки.
В этом примере достигается вложение. Определение Фиг.13 может привести к компоновке, показанной на Фиг.10Б.
Иллюстративное программное определение комбинированного блока
Элемент пользовательского интерфейса, имеющий упрощенный вид, также может быть определен посредством программирования (например, на языке программирования типа C++ или Java). Например, Фиг.14А и 14Б изображают программное определение иерархического представления комбинированного блока с упрощенным видом.
Как определение на языке разметки Фиг.13, так и программное определение Фиг.14А и 14Б изображает комбинированный блок, определенный как имеющий всплывающий элемент, содержащий элемент блока списка для вмещения дочерних узлов комбинированного блока, отображаемых в упрощенном виде (то есть, пункты списка). Элемент блока списка (который сам является составным блоком управления) дополнительно определяется как имеющий элемент средства просмотра с прокруткой, включающий панель сетки для вмещения дочерних узлов комбинированного блока, отображенных в упрощенном виде (то есть, пункты списка).
Опять в примере программного определения достигается вложение. Определение Фиг.14А и 14Б может привести к компоновке, показанной на Фиг.10Б. Составной элемент пользовательского интерфейса (например, комбинированный блок) таким образом определяется с помощью сборки различных элементов пользовательского интерфейса, каждый из которых может иметь «места» для отображаемых по выбору узлов. Когда собран составной элемент пользовательского интерфейса, с вложением можно обращаться таким образом, что детали того, как отображаемые по выбору узлы определяются внутри инкапсулированных элементов пользовательского интерфейса, остаются прозрачными при операции над элементом пользовательского интерфейса внешнего уровня (например, инкапсулирующий).
Иллюстративный вызов определения комбинированного блока на языке разметки
Определение элемента пользовательского интерфейса (например, такого, как показаны на Фиг.13 и 14) может быть вызвано для создания представления элемента пользовательского интерфейса, включающего любые отображаемые по выбору узлы, которые остаются не отображенными в упрощенном виде. Такой вызов может быть достигнут разнообразными способами (например, посредством языка разметки или посредством программирования).
Иллюстративный вызов 1500 определения (например, такого, как показано на Фиг.13 и 14) изображен на Фиг.15, как написанный на языке XML. Включение тэга <Комб. блок> на шаге 1510 вызов обеспечивает использование предварительно созданного определения комбинированного блока, что облегчает упрощенный вид иерархического представления комбинированного блока. Как показано в этом примере, единственное другое влияние со стороны вызова состоит в том, чтобы специфицировать пункты 1520 списка, не имея никакого понятия о полном иерархическом представлении комбинированного блока. Таким образом, структура вызова на Фиг.15 может соответствовать упрощенному виду иерархического представления комбинированного блока, даже несмотря на то, что комбинированный блок фактически состоит из многочисленных других элементов пользовательского интерфейса. Таким образом, поощряется повторное использование элементов пользовательского интерфейса для создания составных элементов управления. В этом примере упрощенный вид может использоваться системой на основании факта, что вызов выполняется на языке XML.
Иллюстративный программный вызов определения комбинированного блока
Аналогично, схема вызова комбинированного блока распространяется на программный вызов 1600 определения, как показано на Фиг.16. Пример может быть осуществлен на разнообразных языках программирования (например, Java и C++). Строка кода «Комб. блок = Новый Комб. Блок()» на шаге 1610 вызывает предварительно созданное определение. Преимущества, описанные выше для версии на языке разметки, также относятся к программному вызову. Чтобы получить доступ к полному виду вместо упрощенного вида, можно использовать другие языки (например, «Комб. блок. Полный вид. Элементы» или подобный).
Иллюстративный способ выполнения операции над упрощенным видом
Как только программным образом или с помощью языка разметки осуществлен вызов определенного элемента пользовательского интерфейса, создается иерархическое представление элемента пользовательского интерфейса, имеющего упрощенный вид и доступное для операций. Операции включают добавление дочерних узлов, удаление дочерних узлов, нумерацию дочерних узлов, запрашивание того, что является родительским узлом некоторого узла в упрощенном виде, и различные операции для перемещения иерархического представления элемента пользовательского интерфейса. Результаты этих операций могут отличиться согласно тому, выполнены ли они, используя упрощенный вид иерархического представления или полный вид.
В различных вариантах воплощения программа может определять, желателен ли упрощенный вид. Или, в некоторых сценариях, можно предполагать из контекста, что упрощенный вид желателен.
Для некоторых операций, типа добавления дочерних узлов или удаления дочерних узлов в упрощенном виде, определение иерархического представления элемента пользовательского интерфейса может использоваться, чтобы определять, как операции должны быть выполнены на полном виде.
Фиг.17 изображает иллюстративный способ 1700 осуществления операции на упрощенном виде представления, а именно добавление дочернего элемента к элементу пользовательского интерфейса (например, узел, представляющий такой элемент). На шаге 1710 принимается индикация добавить дочерние узлы к узлу на упрощенном виде иерархического представления элемента пользовательского интерфейса. На шаге 1720 на основании того, как определено иерархическое представление пользовательского интерфейса, скрываются отображаемые по выбору узлы, и на шаге 1730 новый дочерний узел добавляется к соответствующему узлу согласно определению (например, к узлу, имеющему свойство «Инкапсулирующий контейнер», установленное равным значению «ИСТИНА»).
Процесс, иллюстрируемый на Фиг.17, может использоваться, как показано на Фиг.18, чтобы добавлять новый дочерний узел 1850 к упрощенному виду иерархического представления комбинированного блока. Как только осуществляется вызов определения комбинированного блока, к упрощенному виду иерархического представления комбинированного блока могут быть добавлены новые дочерние узлы, такие как новый дочерний узел 1850D, как показано на Фиг.19. Посредством использования определения иерархического представления добавление нового дочернего узла 1850D в упрощенном виде Фиг.19 будет преобразовано как добавление соответствующего места в полном виде иерархического представления, как показано на Фиг.18.
Иллюстративные детали для выполнения операции
Иллюстративное иерархическое представление 1800 элемента пользовательского интерфейса – комбинированного блока – изображено на Фиг.18. Когда принимается запрос добавить дочерний узел к комбинированному блоку (например, узел 1005), свойство «инкапсулирующий родительский» детектируется на узле 1005, и осуществляется переход к соответствующему последующему узлу, имеющему свойство «инкапсулирующий контейнерный». В этом примере переход может быть достигнут с помощью указателя 1860 к узлу 1045. Затем к узлу 1045 добавляется новый дочерний узел в качестве дочернего узла 1850D.
При желании, для более быстрого перемещения к подходящему узлу, куда должны быть добавлены дочерние узлы, может быть осуществлен непосредственный указатель 1880. Дополнительно, может быть включен указатель 1885 обратно к главному узлу.
Когда новый дочерний узел добавляется в упрощенном виде, как показано на Фиг.19, для вызывающей программы будет казаться, как если бы новый дочерний узел 1850D был добавлен в качестве дочернего узла главного узла – комбинированного блока 1905. Однако в действительности операция выполняется как добавление нового дочернего узла 1850D в полном виде Фиг.18 (например, под узлом 1045 панели сетки).
Вложение может обрабатываться разнообразными способами. Например, указатели могут использоваться, как показано, чтобы перескакивать через промежуточные уровни инкапсуляции. Или может отслеживаться уровень вложения при пересечении иерархического представления. Основываясь на уровне, можно определить, какие узлы надо пропустить. Переход также осуществляется от низа иерархии до вершины (например, в запросе дочернего узла перечислить его родительский узел).
Альтернативное представление отображаемых по выбору узлов
Альтернативное представление 2000 выборочно отображаемых (отображаемых по выбору) узлов показано на Фиг.20А. В этом примере специфический узел 2020 специально обозначается как выборочно отображаемый в полном виде представления.
Соответствующий упрощенный вид 2050 показан на Фиг.20Б. Как показано, дочерние узлы 2030В и 2030С специфического узла 2020 считаются родственными узлами дочерних узлов (например, узла 2030А) родительского узла 2010. Другими словами, дочерние узлы 2030В и 2030С специфического узла 2020 считаются родственными узлами родственных узлов специфического узла 2020 (например, родственный узел 2030А в полном виде).
Такое воплощение может быть достигнуто разнообразными способами. В одном примере специальное свойство (например, “Скрытый Контейнер”) устанавливается равным значению «ИСТИНА» для специфического узла 2020, который не отображается, когда запрашивается упрощенный вид.
Иллюстративное воплощение альтернативного представления
В некоторых сценариях элемента пользовательского интерфейса может быть желательно генерировать узлы из специфицированного местоположения (например, из базы данных). Например, Фиг.21 иллюстрирует иллюстративный блок 2100 списка. Он может понадобиться для генерации одного или нескольких пунктов 2110 списка из базы данных или другого источника данных.
Один из таких способов генерации содержимого из базы данных состоит в том, чтобы включить специальный элемент в иерархическое представление элемента пользовательского интерфейса. Специальный элемент может оставаться не отображаемым для упрощенного вида, но при этом действовать, генерируя содержимое, и присутствовать в полном виде. При желании, специальный элемент может быть привязан к источнику данных, чтобы автоматически вставлять содержимое в элемент пользовательского интерфейса, такой как пункты 2110 списка.
Один такой специальный элемент называется «повторителем». Фиг.22 иллюстрирует иерархическое представление 2200 блока списка (например, такого, как показан на Фиг.21), содержащего узел 2220 повторителя, вставляемый в иерархическое представление для автоматической генерации некоторых из пунктов списка, таких как пункты списка 2230 и 2240.
Использование повторителя также позволяет разработчикам пользовательского интерфейса автоматически генерировать содержимое посредством связывания повторителя с набором записей (например, из базы данных). Кроме того, контейнеры 2221 и 2222 шаблонов могут быть ассоциированы с повторителем 2220 для вмещения информации, относящейся к специфической записи в базе данных, которая генерирует содержимое для специфического дочернего узла повторителя. В этом примере пункты списка 2230 и 2240 привязаны к записям источника данных, чтобы генерировать содержимое текста 2235 и 2245 (например, название, местоположение или другое поле записи). Хотя Фиг.22 изображает только один дочерний элемент (пункты списка 2235 и 2240), ассоциированный с каждым из контейнеров 2221 и 2222 шаблонов, возможно иметь многочисленные дочерние элементы (например, номер телефона, имя и изображение человека).
В полном виде иерархического представления 2200 блока списка, кажется, как если бы повторитель 2220 являлся одним из дочерних узлов узла 2205 блока списка и узла 2210 панели заполнения. Контейнеры 2221 и 2222 шаблонов выглядят как дочерние узлы повторителя 2220.
Однако программы, вызывающие определение блока списка, не могут ожидать увидеть повторитель в качестве дочернего узла для узла 2210 панели заполнения. Также определение блока списка может иметь правило, установленное так, чтобы оно не принимало ничего, отличного от пункта списка в качестве дочернего узла текущей панели 2210. Поэтому нежелательно, чтобы повторитель 2220 и контейнеры 2221 и 2222 шаблонов отображались в пределах иерархического представления блока списка, когда используется упрощенный вид.
Посредством неотображения повторителя 2220 и контейнеров 2221 и 2222 шаблонов в упрощенном виде иерархического представления блока списка пункты 2230 и 2240 списка эффективно промотируются как родственные узлы родственных узлов их родителя, повторителя 2220 (например, родственные узлы узла пункта списка 2250). Такой упрощенный вид 2300 показан на Фиг.23, где повторитель 2220 Фиг.22 не отображается, и на Фиг.23 пункты списка 2230, 2240 и 2250 кажутся родственными узлами.
Создание иллюстративного альтернативного представления
Иллюстративный способ 2400 для создания альтернативного представления отображаемого по выбору узла (например, повторителя) показан на Фиг.24. На шаге 2410 выбирается элемент пользовательского интерфейса, имеющий иерархическое представление. На шаге 2420, по меньшей мере, один узел иерархического представления обозначается отображаемым по выбору (например, не отображается в упрощенном виде иерархического представления).
Например, такое обозначение может быть достигнуто посредством установки свойства «Скрытый контейнер» обозначенного узла равным значению «ИСТИНА». Конструктор класса повторителей может устанавливать такое свойство, чтобы свойство устанавливалось всякий раз, когда отображается повторитель.
Повторитель может активироваться по желанию (например, автоматически после вызова элемента пользовательского интерфейса, определенного как имеющего повторитель). Однако вызывающая программа не обязана учитывать неотображаемый повторитель, который автоматически заполняет пункты списка. Вызывающая программа только вызывает определение элемента пользовательского интерфейса, и она не знает, что элемент пользовательского интерфейса задается как имеющий повторитель.
Или, даже если вызывающая программа знает о повторителе, программная или посредством языка разметки обработка пунктов списка, ассоциированных с повторителем, необязательно должна быть знакома со сложностями, возникшими с повторителем. В упрощенном виде элемент пользовательского интерфейса просто кажется имеющим пункты списка без повторителя.
Иллюстративный вызов повторителя в элементе пользовательского интерфейса на языке разметки документов
Элемент пользовательского интерфейса может вызывать повторители разнообразными способами. Один такой путь – через язык гипертекстовой разметки (например, HTML или XML). Фиг.25 иллюстрирует пример блока 2500 списка, содержащего узел повторителя, используя язык XML. Указанный вызов повторителя полагается на более раннее определение класса повторителя (например, включая соответствующего конструктора) и, таким образом, необязательно обозначать свойство повторителя «Скрытый контейнер» как «ИСТИНА».
Иллюстративный программный вызов повторителя в элементе пользовательского интерфейса
Повторитель также может быть вызван программным способом (например, на языке программирования типа С++ или JAVA) для использования в элементах пользовательского интерфейса. Фиг.26 иллюстрирует код 2600, имеющий иллюстративный программный вызов повторителя блока списка.
Иллюстративный альтернативный вызов повторителя в элементе пользовательского интерфейса
Фиг.27 иллюстрирует на языке разметки, включая альтернативный вызов 2710 на языке разметки повторителя в элементе пользовательского интерфейса. Показанный пример приводил бы к многочисленным (например, двум) дочерним узлам контейнера шаблона (например, контейнеров шаблона 2221 и 2222): один для картинки и один для имени клиента.
В любом из примеров, вызывая повторитель, пользователь или процесс, осуществляющий вызов, определяет только один пункт списка (например, указание источника) на шаге 2710, чтобы заполнить блок списка, при этом получающиеся пункты списка генерируются повторителем автоматически в ответ на вызов (например, через ссылку на источник).
Фиг.28 изображает иллюстративное определение блока списка с многочисленными блоками списка без использования повторителя. Соответственно, пункты списка 2810 явно перечисляются при разметке и не будут обновляться, когда обновляется соответствующая база данных. Доступность повторителя (например, включая способность связываться с источником данных) в пределах элементов пользовательского интерфейса может, таким образом, приводить к более эффективному коду или разметке при обеспечении элементов пользовательского интерфейса, имеющих многие или динамически обновляемые выборы.
Выполнение операций через альтернативное представление
Когда операции выполняются над описанным представлением с помощью упрощенного вида, обозначенный соответствующим образом узел (например, узел повторителя), обозначенный как “Скрытый контейнер”, не отображается. На Фиг.22 пункты списка 2230 и 2240 могут вести себя так же, как и любой другой пункт списка, и могут быть выбраны пользователем визуализируемого списка блока.
Кроме того, на запрос «родителя» пункта 2230 списка с помощью упрощенного вида будет получен ответ посредством индикации того, что родительский узел пункта 2230 списка является узлом 2210 панели заполнения (а не повторителем 2220 или шаблоном 2221). Таким образом, узлы 2220 и 2221 (например, указанные как «Скрытый контейнер») пропускаются (например, не отображаются). Альтернативно, если бы панель заполнения и средство просмотра с прокруткой были обозначены как отображаемые по выбору, «родитель» 2230 пункта списка был бы блоком 2205 списка в упрощенном виде.
При желании, некоторые функциональные возможности могут быть блокированы. Например, может быть запрещено добавлять или удалять пункты списка 2230 и 2240, которые заполнены повторителем 2220.
Иллюстративное воплощение другого альтернативного представления
Другое иллюстративное представление элемента пользовательского интерфейса с отображаемыми по выбору узлами может быть достигнуто посредством обозначения узла так, что только обозначенный узел является отображаемым в упрощенном виде. Например, потомки (например, все потомки) узла считаются выборочно отображаемыми и не изображены на упрощенном виде. Такое представление должно было бы иметь только один узел, отображаемый для элемента пользовательского интерфейса в упрощенном виде.
Например, в представлении элемента пользовательского интерфейса, как изображено на Фиг.20А, если бы узел 2010 был бы обозначен таким образом, потомки (например, узлы 2020, 2030А, 2030В и 2030С) обозначаются отображаемыми по выбору. Результирующее представление имело бы только узел 2010 (например, главный узел), отображаемый в его упрощенном виде.
При желании, операция добавления дочернего узла к такому упрощенному виду может приводить к ошибке, поскольку узел 2010 определяется как не поддерживающий дочерние узлы упрощенного вида. Выполнение операции перечисления дочерних узлов, используя такой упрощенный вид, может быть ошибочным по той же самой причине, или же можно обеспечить пустой набор.
Указанные представления могут быть полезными для того, чтобы закрыть детали полных представлений тех пользовательских интерфейсов, которые мало интересуют некоторых пользователей. Описанное представление может быть достигнуто несколькими способами. Например, может быть установлено одно свойство, указывающее, что потомки являются отображаемыми по выбору. Свойство контейнера «Инкапсулирующий родительский» может быть установлено равным значению «ИСТИНА», приводя к такой компоновке (например, если нет никакого соответствующего узла со свойством «Инкапсулирующий контейнер», установленным равным значению «ИСТИНА»).
Иллюстративное представление изображения
Другое иллюстративное воплощение технологий заключается в том, чтобы осуществить внутреннее представление изображения как имеющего отображаемого по выбору дочернего узла с текстом, указывая текст, который должен быть представлен, если изображение является недоступным. Главный узел может содержать изображение, а отображаемый по выбору дочерний узел может представлять соответствующий текст. Таким способом можно управлять упрощенным видом без знания об отображаемом по выбору дочернем узле.
Иллюстративные способы определения свойств узлов
Отображаемые по выбору узлы могут учитываться при определении того, какое из значений свойств узла должно быть взято (например, наследоваться). При необходимости такие узлы могут игнорироваться (т.е. и свойства, взятые от главного узла), такие узлы могут определять значения свойств, которые нужно взять, или же отображаемые по выбору узлы могут работать в комбинации с главным узлом, для того чтобы определить, какое из значений свойств узла должно быть взято. Такое определение может оказаться уместным, например, при добавлении узлов к представлению.
Узел в иерархии может указывать требуемые свойства для других узлов с помощью правил определения свойств (например, устанавливать через лист стиля). Например, узел может специфицировать, какое свойство шрифта дочернего узла должно быть «жирным шрифтом».
Например, на Фиг.10А, если правила определения свойств говорят, что свойство шрифта дочернего узла главного узла 1005 должно быть установлено равным значению «жирный шрифт», а правила свойств, ассоциированные с узлом 1025 блока списка, призывают, чтобы дочерние узлы имели свойство шрифта «курсивный шрифт», то возникает неоднозначность относительно того, каким должно быть свойство пункта 1050А списка.
В одном варианте воплощения не наследуемое свойство дочернего узла, который не является отображаемым по выбору, наследовано от ближайшего родительского узла в упрощенном виде. В вышеописанном примере, если упрощенный вид является таким, который изображен на Фиг.11, то ближайшим «родителем» в упрощенном виде для пунктов списка 1050А, 1050В и 1050С является главный узел 1105. Следовательно, в указанном варианте воплощения свойство шрифта комбинированного блока будет принято пунктами списка.
В другом варианте выполнения ближайший родитель в упрощенном виде может включать правила для осуществления запроса, должно ли какое либо из правил свойств какого-либо из отображаемых по выбору дочерних узлов применяться к дочерним узлам, которые не являются выборочно отображаемыми. Например, процесс, применяющий правила свойств, может запрашивать, должны ли правила свойств, ассоциированные с блоком списка, применяться к пунктам списка вместо правил свойств, ассоциированных с комбинированным блоком.
В другом варианте воплощения, вышеописанные свойства дочерних узлов скрытого контейнера могут быть определены из правил свойств, установленных самим скрытым контейнером, а не непосредственным родительским узлом в упрощенном виде иерархического представления.
При необходимости можно обеспечить комбинации вариантов воплощения, посредством которых может поддерживаться гибкое определение свойств.
Облегчение создания составных элементов пользовательского интерфейса
Различные описанные здесь технологии могут использоваться для облегчения определения, создания и взаимодействия с составными элементами пользовательского интерфейса. Например, вызов может быть простым указанием специфического элемента пользовательского интерфейса, который оказывается составным пользовательским интерфейсом. Вызов может привести к созданию многочисленных узлов для представления элемента пользовательского интерфейса.
Однако программист, определяющий составной элемент пользовательского интерфейса, может предпринять шаги, чтобы показать, что различные узлы являются отображаемыми по выбору. Таким образом, программист, привлекающий определение, может выбрать путь программировать до упрощенного вида (или обеспечивать такой вид по умолчанию), в котором такие узлы не экспонируются.
Далее, определяющие дополнительные средства управления могут осуществлять вложение составных средств управления в их определениях управления. Индикация того, какие узлы должны быть отображаемыми по выбору, может сохраняться таким образом, чтобы можно было легко осуществлять вложение. Таким образом, первое составное средство управления может быть определено, как содержащее второе составное средство управления, и упрощенный вид будет представлен корректно (например, узлы, обозначенные как отображаемые по выбору для второго составного средства управления, будут отображаемыми по выбору для второго составного средства управления). По желанию, главный узел второго составного средства управления также может быть указан как отображаемый по выбору.
Пример, полезный для иллюстрации вложения, включает в себя программное определение комбинированного блока, изображенного на Фиг.14А и 14Б. В этом примере комбинированный блок состоит из блока списка. Определение блока списка включает в себя установку свойств для получения отображаемых по выбору узлов в пределах блока списка. Далее, сам блок списка вызывает определение средства просмотра с прокруткой, которое само устанавливает свойства для получения отображаемых по выбору узлов в пределах вида прокрутки. Однако для программного или посредством языка разметки доступа к комбинированному блоку вложение может выполняться таким образом, чтобы внутренние детали блока списка (например, включающего в нем выборочно отображаемые узлы) не появлялись (например, при обращении к упрощенному виду комбинированного блока).
С другой стороны, операции, выполняемые над блоком списка, все же могут воспользоваться преимуществом факта, что узлы в нем являются отображаемыми по выбору (например, при выполнении операции над блоком списка в упрощенном виде). Таким образом, способность отображения по выбору может быть как способностью вложения, так и относительной.
Альтернативы
Имея описанные и проиллюстрированные принципы настоящего изобретения, следует понимать, что проиллюстрированные варианты воплощения могут модифицироваться относительно компоновки и деталей, не отклоняясь от этих принципов.
Например, различные элементы пользовательского интерфейса могут быть объединены между собой и вложены, чтобы обеспечить более сложные представления. Элемент пользовательского интерфейса может быть обеспечен как часть интерфейса, чтобы программировать его или вкладывать внутрь документа (например, web-страница или документ обработки текстов). Описанные здесь технологии также могут применяться к любому другому документу или файлу, который может быть представлен в иерархической форме.
Хотя выше используются конкретные имена свойств, для того чтобы выборочно отображать узлы в иерархическом представлении, могут использоваться другие схемы свойств.
Должно быть понятно, что программы, процессы или способы, описанные в настоящем изобретении, не относятся к какому-то конкретному типу компьютерного устройства и не ограничиваются им. Для выполнения операций согласно настоящему описанию могут использоваться различные универсальные или специализированные компьютерные устройства. Описанные здесь действия могут быть достигнуты посредством считываемого компьютером носителя данных, содержащего выполняемые компьютером инструкции для выполнения таких действий. Элементы иллюстрируемых вариантов воплощения, показанные в виде программного обеспечения, могут быть осуществлены аппаратными средствами и наоборот. Ввиду многих возможных вариантов воплощения, к которым могут применяться принципы настоящего изобретения, должно быть понятно, что подробные варианты воплощения являются только иллюстративными и не должны восприниматься как ограничения сущности настоящего изобретения. Авторы заявляют, что все такие варианты воплощения настоящего изобретения могут находиться в рамках и в пределах сущности нижеследующей формулы изобретения, а также ее эквивалентов.
Формула изобретения
Способ автоматической генерации субэлементов составного элемента пользовательского интерфейса, содержащий этапы: вставляют повторитель, используемый для генерирования узлов, представляющих элементы пользовательского интерфейса, в иерархическое представление составного элемента пользовательского интерфейса; связывают упомянутый повторитель с источником данных; генерируют с помощью упомянутого повторителя упомянутые узлы, представляющие элементы пользовательского интерфейса, с использованием содержимого из упомянутого источника данных; при этом упомянутый повторитель указывается как отображаемый по выбору в упрощенном виде упомянутого иерархического представления составного элемента пользовательского интерфейса, и упомянутый повторитель, указанный как отображаемый по выбору в упрощенном виде, не отображается на упомянутом упрощенном виде.
РИСУНКИ
|
|