СВЯЗЫВАНИЕ КОМАНДНЫХ ПОВЕРХНОСТЕЙ С МНОЖЕСТВЕННЫМИ АКТИВНЫМИ КОМПОНЕНТАМИ
INTEGRATION OF COMMAND SURFACES WITH MULTIPLE ACTIVE COMPONENTS

Предшествующий уровень техники
Для того, чтобы приспособить различные компоненты, поддерживаемые web-платформами и приложениями, многие онлайновые продукты и сервисы реализовывают разработки пользовательских интерфейсов с распределенными командами. Эти пользовательские интерфейсы имеют множественные, отдельные командные поверхности, так что каждый компонент в приложении имеет свой собственный набор команд. Каждое приложение хорошо интегрировано с ассоциированным с ним компонентом в пользовательском интерфейсе. Например, web-страница может включать в себя два различных компонента, которые содержат в себе аналогичную функциональность (а именно, два различных поля текста), но каждый компонент включает в себя свою собственную командную поверхность.
Сущность изобретения
Это краткое описание сущности изобретения предоставлено, чтобы представить подборку концепций в упрощенной форме, которые дополнительно описаны ниже в подробном описании. Это краткое описание сущности изобретения не предназначено для определения ключевых признаков или существенных признаков заявленного изобретения и не подразумевается для использования в качестве помощи в определении объема заявленного изобретения.
Одна и та же командная поверхность может быть связана с независимыми компонентами и приложениями на странице. Компоненты регистрируют команды, связанные с общей командной поверхностью, которую они будут использовать. Каждый компонент может использовать произвольное число команд, которые связаны с одной командной поверхностью. Средство управления командами (менеджер команд) действует как посредник (брокер) сообщений между компонентами на странице и общими командными поверхностями. Когда получена команда, которая связана с командной поверхностью, менеджер команд направляет командное сообщение соответствующим компонентам.
Краткое описание чертежей
Фиг.1 показывает примерную вычислительную систему.
Фиг.2 показывает систему для связывания командных поверхностей с множественными активными компонентами.
Фиг.3 иллюстрирует процесс для связывания командной поверхности с множественными компонентами; и
Фиг.4 показывает процесс по получению и направлению команды компонентам, которая получена от командной поверхности.
Подробное описание
Теперь обращаясь к чертежам, на которых одинаковые номера представляют идентичные элементы, будут описаны различные варианты осуществления. В частности, фиг.1 и соответствующее обсуждение предназначены для предоставления краткого общего описания подходящего вычислительного окружения, в котором могут быть реализованы варианты осуществления изобретения.
Как правило, программные модули включают в себя процедуры, программы, компоненты, структуры данных и другие виды структур, которые выполняют конкретные задачи и/или реализуют конкретные абстрактные типы данных. Другие конфигурации вычислительных систем также могут быть использованы, включая карманные устройства, многопроцессорные системы, основанные на микропроцессорах системы или программируемую бытовую электронику, миникомпьютеры, универсальные вычислительные машины и тому подобное. Распределенные вычислительные окружения также могут быть использованы, где задачи выполняются удаленными обрабатывающими устройствами, которые связаны через сеть передачи данных. В распределенном вычислительном окружении программные модули могут быть размещены как на локальном, так и на удаленном запоминающих устройствах.
Теперь со ссылкой на фиг.1, будет описана иллюстративная компьютерная архитектура для компьютера 100, использованная в различных вариантах осуществления. Хотя компьютер 100, в основном, проиллюстрирован как клиентское вычислительное устройство, компьютер 100 может быть сконфигурирован как клиентское, серверное, мобильное устройство или любое другое вычислительное устройство. Компьютер 100 включает в себя центральный процессор 5 (ЦП, CPU), системную память 7, включающую в себя оперативное запоминающее устройство 9 (ОЗУ, RAM) и постоянное запоминающее устройство 10 (ПЗУ, ROM), и системную шину 12, которая соединяет память с ЦП 5. Базовая система ввода/вывода, содержащая базовые процедуры, которые помогают передавать информацию между элементами в пределах компьютера, к примеру, во время запуска, хранится в ПЗУ 10. Компьютер 100 дополнительно включает в себя массовое запоминающее устройство 14 для хранения операционной системы 16, прикладных программ 24 и других программных модулей, которые будут более подробно описаны ниже.
Массовое запоминающее устройство 14 подключено к ЦП 5 посредством контроллера массовых запоминающих устройств (не показан), соединенного с шиной 12. Массовое запоминающее устройство 14 и его ассоциированные машиночитаемые носители предусматривают энергонезависимое хранилище для компьютера 100. Несмотря на то, что описание машиночитаемых носителей, содержащееся в материалах настоящей заявки, ссылается на массовое запоминающее устройство, такое как жесткий диск или дисковод для компакт-дисков CD-ROM, машиночитаемыми носителями могут быть любые доступные носители, к которым компьютер может осуществить доступ 100.
В качестве примера, а не ограничения, машиночитаемые носители могут содержать компьютерные носители данных и среды передачи данных. Компьютерные носители данных включают в себя энергозависимые и энергонезависимые, съемные и несъемные носители, реализованные любым способом или технологией для хранения информации, такой как машиночитаемые инструкции, структуры данных, программные модули или другие данные. Компьютерные носители данных включают в себя, но не в качестве ограничения, оперативное запоминающее устройство (ОЗУ, RAM), постоянное запоминающее устройство (ПЗУ, ROM), электронно-перепрограммируемое ПЗУ (ЭППЗУ, EPROM), электрически стираемое и программируемое ПЗУ (ЭСППЗУ, EEPROM), флэш-память или другую твердотельную технологию памяти, CD-ROM, цифровой многофункциональный диск (DVD) или другие оптические носители, магнитные кассеты, магнитную ленту, магнитные запоминающие диски или другие магнитные запоминающие устройства, либо любой другой носитель, который может быть использован для хранения требуемой информации и к которому может быть осуществлен доступ компьютером 100.
В соответствии с различными вариантами осуществления компьютер 100 может работать в сетевом окружении с использованием логических соединений к удаленным компьютерам через сеть 18, такую как Интернет. Компьютер 100 может быть подключен к сети 18 через устройство 20 сетевого интерфейса, подключенное к шине 12. Сетевое соединение может быть беспроводным и/или проводным. Устройство 20 сетевого интерфейса может быть также использовано для соединения с другими типами сетей и удаленных компьютерных систем. Компьютер 100 может также включать в себя контроллер 22 ввода/вывода для приема и обработки входных данных от других устройств, включая клавиатуру, мышь или электронное перо (не показаны на фиг.1). Подобным образом, контроллер 22 ввода/вывода может предоставлять вывод на устройство отображения, которое включает в себя пользовательский интерфейс 28, принтер или другие типы устройств вывода. Компьютер 100 может также быть связан с источниками данных (не показаны) посредством сетевого соединения 18 и/или некоторого другого подключения.
Как вкратце упомянуто выше, некоторые программные модули и файлы данных могут храниться в массовом запоминающем устройстве 14 и ОЗУ 9 компьютера 100, включая операционную систему 16, подходящую для управления работой сетевого персонального компьютера, такую как операционную систему WINDOWS VISTA от КОРПОРАЦИИ МАЙКРОСОФТ (Microsoft Corp.) из Редмонта, Вашингтон. Массовое запоминающее устройство 14 и ОЗУ 9 также могут хранить один или более программных модулей. В частности, массовое запоминающее устройство 14 и ОЗУ 9 может хранить одну или более прикладных программ 26, таких как приложение 25 web-браузера. Например, программа 25 браузера может быть приложением MICROSOFT INTERNET EXPLORER.
Сервер 23 сконфигурирован для предоставления сервисов сайта для компьютера 100. Как проиллюстрировано, сервер 23 включает в себя программное обеспечение сайта, которое сконфигурировано для предоставления сайта, доступ к которому обеспечивается посредством приложения 25 браузера на клиентском компьютере 100. Согласно одному варианту осуществления, программное обеспечение сайта, такое как MICROSOFT SHAREPOINT SERVICES, может быть использовано для предоставления утилит совместного использования, утилит хранения данных и утилит управления рабочими процессами, которые относятся к сайту. Например, сайт может быть создан с компонентами, которые предоставляют пользователям (членам команды) различные способы совместного использования документов, совместного использования календаря или информации о событиях, создания и обсуждения идей касаемо проекта и добавления, назначения и отслеживания задач, имеющих отношение к проекту. Сайт может быть сконфигурирован как интернет сайт, экстранет сайт и/или интранет сайт или в качестве любого другого сайта, который доступен пользователям.
Пользовательский интерфейс (ПИ, UI) 28 предназначен для обеспечения пользователю визуальной возможности просматривать сайт и взаимодействовать с командными поверхностями и компонентами на web-странице. Вместо того, чтобы каждая командная поверхность на странице была непосредственно связана только с одним компонентом на странице, командная поверхность может быть связана более чем с одним компонентом на странице, даже когда компоненты ассоциированы с разными приложениями. Как проиллюстрировано в UI 28, одна и та же командная поверхность связана с двумя различными компонентами (C1 и С2). Командная поверхность может быть такой командной поверхностью как Ribbon (Лента), панель инструментов, секторное меню (pie menu) и тому подобное. Компоненты на странице могут быть не связанными друг с другом и относиться к различным приложениям. Как правило, каждый компонент регистрирует команды, связанные с командной поверхностью, чтобы они были использованы менеджером 26 команд. Менеджер 26 команд действует как посредник сообщений между компонентами на странице и командными поверхностями. Каждый компонент может использовать произвольное число команд, которые связаны с командной поверхностью. Например, компонент C1 может использовать три из команд с командной поверхности, а C2 может использовать две из этих команд. Компонент (например, C3) может быть компонентом, который не видим для пользователя. Например, компонент C3 может быть средством проверки орфографии, которое регистрируется на то, чтобы быть информированным о команде сохранения, которая связана с командной поверхностью. Компоненты также могут присоединять или отсоединять команды от командной поверхности, либо динамически менять количество команд во время выполнения. Компонент может регистрировать команду, так чтобы она была сфокусированной командой или глобальной командой. Когда команда зарегистрирована компонентом как глобальная команда, даже когда компонент не имеет текущий фокус, он все равно получает команду, когда команда активируется на командной поверхности. Когда команда зарегистрирована как сфокусированная команда, тогда компонент принимает уведомление о команде, когда он имеет фокус в настоящее время. Когда получена команда, которая связана с командной поверхностью, менеджер 26 команд направляет командное сообщение соответствующим компонентам. Работа менеджера 26 команд описана более детально ниже.
Фиг.2 показывает систему для связывания командных поверхностей с множественными активными компонентами. Как проиллюстрировано, система 200 включает в себя страницу 205, компонент 210, компонент 212, компонент 214 и менеджер 26 команд, который включает в себя диспетчер 220 команд, менеджер 225 фокусирования, менеджер 230 отмены и менеджер 235 командных поверхностей.
Как описано выше, менеджер 26 команд управляет взаимодействием между командными поверхностями и различными компонентами. Хотя диспетчер 220 команд, менеджер 225 фокусирования, менеджер 230 отмены и менеджер 235 командных поверхностей показаны как интегрированные в менеджер 26 команд, некоторая или вся их функциональность может быть расположена вне менеджера 26 команд.
Компоненты на странице 205 могут представлять многочисленные приложения и элементы управления, которые размещаются на web-сайтах, включая web-сервисы и web-приложения. Например, расширенные текстовые редакторы, часы, табличные модули, формы данных, средства рисования и тому подобные являются компонентами, которые могут содержаться на странице.
Любой компонент, которому требуется использовать общую командную поверхность, регистрируется менеджером 26 команд. После регистрации или в ходе регистрации компонент задает команды, о которых он хочет быть информирован, когда они будут возникать на командной поверхности. Согласно одному варианту осуществления, команды задаются менеджеру команд в виде списка одной или более команд (т.е. команд 211, 213 и 215). Компонент может задать команду так, чтобы она была глобальной командой или сфокусированной командой. Глобальная команда направляется компоненту менеджером 26 команд, даже когда этот компонент не имеет фокуса. Таким образом компонент может реагировать на команду на командной поверхности, даже когда этот компонент не является активным. Сфокусированная команда отсылается к компоненту только тогда, когда этот компонент имеет фокус. Компонент может присоединять команду или отсоединять команду от командной поверхности в любое время. Например, компонент может менять активные команды, доступные в командной поверхности, основываясь на состоянии приложения. Компонент может также задавать, может он или нет получать фокус.
Менеджер 26 команд может периодически, или как побочный эффект конкретного события на странице, опрашивать зарегистрированные компоненты от имени командных поверхностей для того, чтобы определить состояние каждой команды, которую они размещают. В одном варианте осуществления, это состояние команды состоит из того, является ли команда в настоящее время разрешенной или запрещенной в компоненте, и совокупности другой информации о состоянии, ассоциированной с командой. Например, кнопка “полужирный” может опрашивать на предмет того, разрешена ли она в настоящее время (включена) или нет, в дополнение к тому, активна ли кнопка на командной поверхности. Согласно одному варианту осуществления, когда команда получена на командной поверхности (т.е. пользователь выполняет щелчок по команде), менеджер команд посылает команду диспетчеру 220 команд.
Диспетчер 220 команд взаимодействует с зарегистрированными компонентами на странице. В этом примере диспетчер 220 команд сконфигурирован для взаимодействия с компонентом 210, компонентом 212 и компонентом 214. Диспетчер команд сконфигурирован направлять команды компонентам, запрашивать состояние команд и определять, разрешены ли команды. Диспетчер команд сохраняет запись обработчиков команд, зарегистрированных для команд, и использует эту информацию для маршрутизации команд и сообщений к компонентам. Согласно одному варианту осуществления, диспетчер 220 команд может посылать другие сообщения к компонентам и/или дополнительную информацию наряду с направляемыми командами. Например, информация может относиться к данным, использованным в обработке команды, информации о состоянии и подобному. Команды от диспетчера команд могут также пропускаться через менеджер 225 фокусирования как через посредника, чтобы помочь гарантировать то, что соответствующие компоненты получили их команды. Согласно одному варианту осуществления, менеджер фокусирования находится между главным диспетчером 220 команд и компонентами. В этом варианте осуществления, сфокусированные команды регистрируются менеджером 225 фокусирования, и менеджер 225 фокусирования, в свою очередь, регистрирует их в главном диспетчере 220 команд. Когда команда направляется через главный диспетчер 220 команд менеджеру 225 фокусирования, менеджер 225 фокусирования может тогда маршрутизировать команду согласно тому, какой компонент, если таковой имеется, имеет фокус.
Менеджер 225 фокусирования управляет выбором компонентов на странице 200. Менеджер 225 фокусирования сконфигурирован для отслеживания компонентов, которые в настоящее время имеют фокус на странице (активные компоненты). Когда происходит событие на странице (например, пользователь осуществляет щелчок мышью), компонент, который обнаруживает событие, может запросить у менеджера 225 фокусирования, чтобы он стал активным компонентом. Менеджер 225 фокусирования тогда сообщит предыдущему активному компоненту об уступке фокуса. Менеджер 225 фокусирования тогда уведомит запрашивающий компонент, что теперь он имеет фокус. Когда выбор произойдет за пределами активного компонента на странице, менеджер фокусирования может послать сообщение к компонентам о том, что теперь нет активных компонентов, так что каждый из компонентов может снять фокус. Когда компонент получает фокус, менеджер 26 команд посылает уведомление к компоненту, так что он может запросить текущий фокус. Аналогично, компонент, теряющий фокус, может быть проинформирован так, что он может уступить текущий фокус. Согласно одному варианту осуществления, когда другой компонент запрашивает фокус, компонент, на котором перед этим был фокус, запрашивается об уступке фокуса при помощи менеджера 26 команд.
Менеджер 230 отмены используется для отмены/повторного выполнения (undo/redo) команд, которые выполнены. Менеджер 230 отмены отслеживает команды, которые выполнены, и когда запрашивается отмена/повторное выполнение команды, он помогает гарантировать, что соответствующий компонент принимает запрос отменить или повторно выполнить команду.
Менеджер 235 командных поверхностей отслеживает командную поверхность(ти), которая связана с компонентами на странице. Командные поверхности могут быть любым типом командных поверхностей, такими как Ribbon (Лента), панель инструментов, секторное меню (pie menu) и тому подобное. Сама командная поверхность не управляет обработкой команд, которые связаны с ней. Вместо этого, когда команда активируется на командной поверхности, менеджер 26 команд направляет команду соответствующим компонентам на странице. Согласно одному варианту осуществления, командные поверхности в менеджере 235 командных поверхностей поддерживают сообщения для обновления контрольных состояний команд, которые связаны с ними, а также для разрешения/запрещения команд для компонентов. Менеджер командных поверхностей также включает в себя определенные методы для использования командной поверхности. Например, может быть предоставлен метод в элементе управления Ribbon (Лента) для отображения ранее невидимой контекстной закладки. По инициализации командной поверхности менеджером 26 команд, он отрисовывает ее содержимое по умолчанию. Согласно одному варианту осуществления, данные, связанные с командной поверхностью, хранятся в XML-файле.
Несмотря на то, что не проиллюстрировано на фиг.2, другая функциональность может быть включена в менеджер 26 команд. Например, могут быть реализованы другие менеджеры. Например, менеджер задач может быть запрограммирован для обработки рабочих запросов, относящихся к компонентам.
Обратимся теперь к фиг.3, где описан иллюстративный процесс для связывания командной поверхности с множественными компонентами.
В процессе чтения обсуждения процедур, представленных в материалах настоящей заявки, должно быть принято во внимание, что логические операции различных вариантов осуществления реализуются (1) как последовательность реализуемых компьютером действий или программные модули, работающие на вычислительной системе, и/или (2) как взаимосвязанные электронные логические схемы или схемные модули в вычислительной системе. Реализация - это дело выбора, зависящее от требований производительности вычислительной системы, реализующей изобретение. Следовательно, проиллюстрированные логические операции, составляющие варианты осуществления, описанные в материалах настоящей заявки, указываются под разными наименованиями как операции, структурные устройства, действия или модули. Эти операции, структурные устройства, действия или модули могут быть реализованы в программном обеспечении, в микропрограммном (firmware) обеспечении, в цифровой логике специального назначения и в любом сочетании таковых.
После операции начала процесс 300 следует к операции 310, где инициализируется менеджер команд. Менеджер команд действует как посредник сообщений между компонентами на странице и командными поверхностями. Согласно одному варианту осуществления, менеджер команд инициализирует диспетчер команд, менеджер фокусирования, менеджер отмены и командную поверхность(и), которая должна совместно использоваться между компонентами на странице.
Двигаясь к операции 320, компоненты на странице регистрируются менеджером команд. Каждый компонент на странице, которому требуется использовать общую командную поверхность, регистрируется в менеджере команд.
Следуя к операции 330, компоненты регистрируют команды, о которых они хотят быть уведомлены, когда они имеют место на командной поверхности. Компонент может регистрировать получение сфокусированных команд или глобальных команд. Когда команда зарегистрирована компонентом как глобальная команда, тогда даже когда компонент не имеет текущего фокуса, он все равно получает команду, когда команда активируется на командной поверхности. Когда команда зарегистрирована как сфокусированная команда, тогда этот компонент получает уведомление о команде, только когда он имеет фокус в настоящее время. Компонент также предоставляет методы обработки команд, когда компонент вызывается на выполнение команды.
Переходя к операции 340, инициализируется командная поверхность(и), которая должна быть связана с компонентами. Командная поверхность может быть любым типом командной поверхности, таким как Ribbon (Лента), панель инструментов, секторное меню (pie menu) и тому подобное. Командные поверхности поддерживают сообщения для обновления контрольных состояний команд, которые относятся к компонентам, а также для разрешения/запрещения команд для компонентов. Менеджер командных поверхностей также включает в себя определенные методы для использования командной поверхности.
Процесс затем следует к конечной операции и возвращается к обработке других действий.
Фиг.4 показывает процесс по получению и направлению команды компонентам, которая получена от командной поверхности.
После операции начала процесс 400 следует к операции 410, где команду получают от командной поверхности. Когда команда активирована на командной поверхности, команду перенаправляют менеджеру команд, который обрабатывает маршрутизацию команд к соответствующим компонентам.
Двигаясь к операции 420, определяют компоненты, которые должны получать направляемую команду. Как правило, определение того, куда направить команду, основывается на том, какие компоненты зарегистрированы на получение уведомления о командах, а также на текущем фокусе компонента. Например, как описано выше, некоторые компоненты требуют информирования о команде всякий раз, когда она случается, тогда как другие компоненты требуют информирования только тогда, когда они имеют фокус.
В операции 430 может быть выяснено, готовы ли определенные компоненты обработать команду. Перед направлением команды компоненту(ам), менеджер команд может опросить компонент(ы), чтобы определить, готов ли каждый компонент обработать команду.
Для каждого компонента, который готов обработать команду, процесс двигается к операции 440, где команда направляется этим определенным компонентам.
Двигаясь к операции 450, сохраняют запись в отношении команд, которые были выполнены на странице, и того, какие компоненты были уведомлены. Таким образом, когда запрашивается отмена/повторное выполнение команды, это помогает гарантировать то, что корректный компонент принимает запрос отменить или повторно выполнить команду.
Процесс затем следует к конечной операции и возвращается к обработке других действий.
Вышеприведенное подробное описание, примеры и данные предоставляют полное описание изготовления и использования структуры изобретения. Так как многие варианты осуществления изобретения могут быть сделаны, не отходя от объема и сущности изобретения, объем изобретения определяется приложенной ниже формулой изобретения.