система и способ, предназначенные для выдачи сообщения программе
Классы МПК: | G06F13/00 Соединение запоминающих устройств, устройств ввода-вывода или устройств центрального процессора или передача информации или других сигналов между этими устройствами G06F9/46 устройства для мультипрограммирования |
Автор(ы): | САВИЦКИ Марсин (US), ДЖОУНЗ Брайан Майкл (US), РЕЙНЕР Джеффри К. (US), ТЭРП Эдвард В. (US) |
Патентообладатель(и): | МАЙКРОСОФТ КОРПОРЕЙШН (US) |
Приоритеты: |
подача заявки:
2003-06-24 публикация патента:
27.12.2008 |
Изобретение относится к вычислительной технике. Техническим результатом является обеспечение выдачи сообщения с уведомлением о событии от одной программы к другой программе. Согласно изобретению выдают сообщение с уведомлением о событии от первой программы второй программе для индикации того, что внутри первой программы произошло некоторое действие, где сообщение с уведомлением о событии включает в себя параметр, который служит индикатором того, что это действие является одним из группы возможных действий. Для этого в приложении, настроенном для редактирования документов, созданных посредством расширяемой спецификации языка разметки (XML), появление связанного с XML действия вызывает выдачу сообщения с уведомлением о событии. Связанным с XML действием может быть либо связанное с XML действие перемещения, либо связанное с XML действие вставки, либо связанное с XML действие удаления. Таким образом, для индикации появления трех различных типов действий при редактировании документа XML может быть использовано сообщение с уведомлением о едином событии. 5 н. и 21 з.п. ф-лы, 6 ил.
Формула изобретения
1. Сигнал, воплощающий сообщение от первой программы второй программе, причем первая программа выполнена с возможностью редактирования документа XML (расширяемой спецификации языка разметки), при этом сообщение содержит
поле идентификатора, служащее индикатором того, что сообщение представляет появление события, связанного с действием, выполняемым над документом XML, причем данное действие изменяет состояние документа XML;
поле первого параметра, идентифицирующее первый элемент XML, связанный с событием;
поле второго параметра, идентифицирующее второй элемент XML, связанный с событием; и
поле третьего параметра, идентифицирующее тип произошедшего события, причем этот тип события является выбранным из множества типов событий, связанных с такими действиями.
2. Сигнал по п.1, в котором сообщение дополнительно включает в себя поле четвертого параметра, идентифицирующее текущий выделенный фрагмент в документе XML.
3. Сигнал по п.2, в котором первый элемент XML соответствует элементу, в пределах которого находился текущий выделенный фрагмент, когда началось выполнение действия.
4. Сигнал по п.2, в котором второй элемент XML соответствует элементу, в пределах которого будет находиться текущий выделенный фрагмент после выполнения действия.
5. Сигнал по п.2, в котором первый элемент XML соответствует элементу, в пределах которого находился текущий выделенный фрагмент, когда началось выполнение действия, а второй элемент XML соответствует элементу, в пределах которого будет находиться текущий выделенный фрагмент после выполнения действия.
6. Сигнал по п.1, в котором упомянутое множество типов событий включает в себя связанное с XML действие перемещения, связанное с XML действие вставки и связанное с XML действие удаления.
7. Сигнал по п.6, в котором связанное с XML действие перемещения включает в себя перемещение текущего выделенного фрагмента из первого элемента XML во второй элемент XML.
8. Сигнал по п.6, в котором связанное с XML действие перемещения включает в себя перемещение текущего выделенного фрагмента из содержимого, которое не имеет ассоциированного с ним элемента XML, во второй элемент XML.
9. Сигнал по п.6, в котором связанное с XML действие перемещения включает в себя перемещение текущего выделенного фрагмента из первого элемента XML в содержимое, которое не имеет ассоциированного с ним элемента XML.
10. Сигнал по п.6, в котором связанное с XML действие вставки включает в себя обусловливание нахождения текущего выделенного фрагмента в пределах второго элемента XML.
11. Сигнал по п.6, в котором связанное с XML действие удаления включает в себя удаление первого элемента XML таким образом, что текущий выделенный фрагмент, который находился в пределах первого элемента XML, попадает в пределы второго элемента XML.
12. Сигнал по п.1, в котором сообщение сконфигурировано для того, чтобы быть переданным от первой программы второй программе при инициировании выполнения действия.
13. Машиночитаемый носитель, имеющий машиноисполняемые компоненты для выдачи сообщения от первой программы второй программе, включающие в себя
первую программу, предназначенную для редактирования документа, который включает в себя элементы XML, причем по меньшей мере множество этих элементов XML включает в себя содержимое, причем первая программа сконфигурирована для выдачи уведомления о едином событии в ответ на действие, выполняемое первой программой, причем это действие изменяет состояние документа и является идентифицируемым действием из множества типов таких действий; и
вторую программу, сконфигурированную для приема уведомления о едином событии и для обработки уведомления о едином событии посредством обработчика событий, входящего в состав второй программы, причем обработчик событий включает в себя машиноисполняемые команды для реагирования по меньшей мере на один из упомянутого множества типов действий.
14. Машиночитаемый носитель по п.13, в котором обработчик событий включает в себя машиноисполняемые команды для реагирования на каждый из упомянутого множества типов действий.
15. Машиночитаемый носитель по п.13, в котором упомянутое множество типов действий включает в себя связанное с XML действие перемещения, соответствующее перемещению текущего выделенного фрагмента из содержимого, которое не имеет ассоциированного с ним элемента XML, в пределы элемента XML.
16. Машиночитаемый носитель по п.13, в котором упомянутое множество типов действий включает в себя связанное с XML действие перемещения, соответствующее перемещению текущего выделенного фрагмента из пределов элемента XML в содержимое, которое не имеет ассоциированного с ним элемента XML.
17. Машиночитаемый носитель по п.13, в котором упомянутое множество типов действий включает в себя связанное с XML действие перемещения, соответствующее перемещению текущего выделенного фрагмента из пределов одного элемента XML в пределы другого элемента XML.
18. Машиночитаемый носитель по п.13, в котором упомянутое множество типов действий включает в себя связанное с XML действие вставки, соответствующее вставке элемента XML вокруг содержимого в пределах документа.
19. Машиночитаемый носитель по п.13, в котором упомянутое множество типов действий включает в себя связанное с XML действие удаления, соответствующее удалению элемента XML из документа.
20. Машиночитаемый носитель по п.13, в котором упомянутое множество типов действий включает в себя связанное с XML действие перемещения, связанное с XML действие вставки и связанное с XML действие удаления.
21. Машиночитаемый носитель, имеющий машиноисполняемые компоненты, предназначенные для выдачи сообщения от первой программы второй программе и включающие в себя средство сообщения, предназначенное для индикации появления события в пределах редактора документов XML посредством множества параметров, включаемых в себя этим средством сообщения, причем данное множество параметров содержит первый параметр, идентифицирующий первый элемент XML, второй параметр, идентифицирующий второй элемент XML, и третий параметр, идентифицирующий тип события, произошедшего в пределах редактора документов XML, причем этот тип события является выбранным из множества типов событий.
22. Машиночитаемый носитель по п.21, в котором упомянутое множество типов событий включает в себя связанное с XML событие перемещения, связанное с XML событие вставки и связанное с XML событие удаления.
23. Машиночитаемый носитель по п.22, в котором связанное с XML событие перемещения включает в себя перемещение выделенного фрагмента из первого идентифицированного элемента XML во второй идентифицированный элемент XML.
24. Машиночитаемый носитель по п.23, в котором либо первый параметр, либо второй параметр представляет собой пустой символ.
25. Машиночитаемый носитель, имеющий машиноисполняемые команды, предназначенные для выдачи сообщения от первой программы второй программе и включающие в себя выдачу от первой программы второй программе уведомления о событии, включающего в себя множество параметров, причем уведомление о событии служит индикатором того, что произошло связанное с XML действие, относящееся к первой программе, причем упомянутое действие изменяет связанное с XML состояние, ассоциированное с первой программой, при этом упомянутое множество содержит первый параметр, идентифицирующий первый элемент XML, ассоциированный со связанным с XML действием, второй параметр, идентифицирующий второй элемент XML, ассоциированный со связанным с XML действием, и третий параметр, идентифицирующий один из множества типов таких действий, который соответствует связанному с XML действию.
26. Машиночитаемый носитель, имеющий машиноисполняемые команды, предназначенные для выдачи сообщения от первой программы второй программе и включающие в себя прием второй программой от первой программы уведомления о событии, включающего в себя множество параметров, причем уведомление о событии служит индикатором того, что произошло связанное с XML действие, относящееся к первой программе, причем упомянутое действие изменяет связанное с XML состояние, ассоциированное с первой программой, при этом упомянутое множество содержит первый параметр, идентифицирующий первый элемент XML, ассоциированный со связанным с XML действием, второй параметр, идентифицирующий второй элемент XML, ассоциированный со связанным с XML действием, и третий параметр, идентифицирующий один из множества типов таких действий, который соответствует связанному с XML действию.
Описание изобретения к патенту
Предшествующий уровень техники
Прикладные программы постепенно становятся все более и более сложными и мощными. То, что когда-то было простым редактором текстов, теперь может быть сложным текстовым процессором с бесчисленными богатыми отличительными признаками, например, способностью создавать Web-страницы или редактировать разметку, выполненную посредством расширяемой спецификации языка разметки (XML). С развитием технологии каждая прикладная программа предоставляет все большую и большую функциональность для повышения опыта пользователя. Кроме того, многие прикладные программы теперь открыто предоставляют свою собственную функциональность для дополнения их приложениями через программные интерфейсы. Например, объектно-ориентированное программирование сделало возможным трактовку некоторых прикладных программ и их документов как объектов. Эти объекты открыто предоставляют функциональность приложений в форме методов, которые могут быть вызваны, и свойств, которые могут быть считаны или заданы для манипулирования приложениями или документами. Эти усовершенствования дали возможность программистам разработать дополнения третьей стороны для автоматизации задач и функций, прежде выполнявшихся вручную при взаимодействии с приложением. Многие такие приложения-дополнения разработаны на простых языках программирования, таких как язык Visual Basic for Applications (VBA). Эти дополнения могут работать путем вызова методов и свойств приложения для достижения различных целей и настройки базовой функциональности приложения на пользовательское окружение.
В дополнение к способности делать вызовы из пользовательского кода дополнения к базовому приложению, существует необходимость в написании этого пользовательского кода таким образом, чтобы он фактически реагировал (в противоположность к «инициировал») на вызовы от данного приложения, когда что-то происходит в самом приложении. Например, кто-нибудь может захотеть написать пользовательский код для приложения обработки текстов, который некоторым специальным образом реагирует на нажатия клавиш пользователем, принимаемые приложением, и, возможно, блокирует некоторые из них, если пользователь редактирует область, где разрешены только некоторые типы букв. В таких случаях существует необходимость в некотором способе для программиста, заключающемся в том, чтобы поставить приложение в известность, что имеется специальный пользовательский код, который это приложение должно запускать, когда происходит заданный тип события. После того, как пользовательский код зарегистрирован приложением, этот код может теперь «реагировать» полезным образом на специфические события, происходящие в пределах базового приложения, тем самым расширяя базовую функциональность приложения.
Сущность изобретения
Данное изобретение направлено на механизм, предназначенный для выдачи сообщения с уведомлением о событии от одного фрагмента кода другому (который, возможно, не является частью первоначального кода программы, а скорее добавлен поставщиком приложения третьей стороны для расширения функциональности первоначальной программы). Сообщение с уведомлением относится к специфическому типу, который служит индикатором того, какие из возможных событий действительно произошли. Например, сообщение с уведомлением могло бы быть запущено в некотором специальном состоянии, в которое вошла программа. Сообщение с уведомлением о событии могло бы в таком случае включать в себя параметры, описывающие, каким было старое состояние, каким является новое состояние, и описание причины, которая вызвала вхождение программы в это состояние. Более конкретно, в приложении, сконфигурированном для редактирования документов, созданных с помощью расширяемой спецификации языка разметки (XML), возникновение связанного с XML изменения состояния как результат инициированного пользователем действия вызывает выдачу сообщения с уведомлением об этом событии.
Связанным с XML изменением состояния, о котором сообщает событие, могло бы быть изменение в основанном на XML контексте точки вставки, выполняемой пользователем, в приложении обработки текстов. Оно могло бы быть запущено, например, пользователем, перемещающим точку вставки из одного элемента XML в другой. Или оно могло бы быть запущено, когда пользователь вставляет новый элемент XML вокруг выделенного фрагмента. Или оно могло бы быть запущено, когда пользователь удаляет элемент XML, который в данный момент заключает точку вставки, выполняемой пользователем. Таким образом, сообщение с уведомлением о едином событии может быть использовано для индикации этого вида изменения состояния независимо от того, какое из трех различных действий пользователя вызвало это изменение состояния при редактировании документа XML. Для программиста программы-дополнения полезно иметь возможность написать код, реагирующий на этот тип события, например, для предоставления пользователю контекстно-зависимой обратной связи, зависящей от того, где в данный момент в структуре XML пользователь редактирует содержимое. Например, когда пользователь начинает редактировать содержимое элемента <city> XML, пользовательская программа-дополнение могла бы автоматически предложить пользователю список часто используемых городов. В одном аспекте изобретение направлено на структуру данных, предназначенную для уведомления программы о появлении связанного с XML действия в другой программе (или в другой части этой же программы). Эта структура данных включает в себя идентификатор, служащий индикатором того, что произошло связанное с XML изменение состояния. Структура данных также включает в себя множество параметров. Один параметр используется для идентификации первого узла XML, на который подействовало изменение состояния, а другой параметр используется для идентификации второго узла XML, на который подействовало изменение состояния (если изменение состояния включает в себя более одного узла XML). Третий параметр используется для идентификации того, которая из множества причин отвечает за изменение состояния. Типом изменения состояния, которое является предметом данного изобретения, является изменение в контексте XML точки вставки, выполняемой пользователем. Возможными причинами того, почему произошло изменение состояния, являются связанное с XML действие перемещения, связанное с XML действие вставки или связанное с XML действие удаления. Еще один параметр используется для идентификации определенного выделенного фрагмента содержимого, на который воздействует связанное с XML изменение состояния.
В другом аспекте изобретение направлено на пару выполняемых программ (выполняющихся в пределах одного и того же процесса или в пределах двух отдельных процессов), где первая программа спроектирована для того, чтобы сделать возможным редактирование документа, который включает в себя разметку XML. Первая программа также спроектирована для выдачи уведомления о едином событии в ответ на изменение состояния, происходящее при редактировании документа как результат действия пользователя, влияющего на контекст XML выделенного пользователем фрагмента. Причина события, влияющего на контекст XML, идентифицируется как один из множества типов связанных с XML действий, таких как связанное с XML действие перемещения, связанное с XML действие вставки или связанное с XML действие удаления. Вторая программа спроектирована для приема уведомления о едином событии и обработки этого уведомления о едином событии обработчиком событий. Обработчик событий включает в себя выполняемые компьютером команды для реагирования на упомянутые типы действий некоторым соответствующим образом.
Еще в одном аспекте изобретение направлено либо на программу для выдачи сообщения с уведомлением о событии, либо на программу для приема данного сообщения, где сообщение с уведомлением о событии включает в себя параметры. Само сообщение с уведомлением о событии служит индикатором того, что произошло связанное с XML изменение состояния. Первый параметр сообщения с уведомлением о событии идентифицирует первый узел XML, ассоциированный со связанным с XML изменением состояния, второй параметр сообщения с уведомлением о событии идентифицирует второй узел XML, ассоциированный со связанным с XML изменением состояния, третий параметр сообщения с уведомлением о событии идентифицирует один из множества типов действий, ответственных за изменение состояния, и четвертый параметр сообщения с уведомлением о событии идентифицирует выделенный фрагмент документа XML, на который было оказано воздействие.
Перечень фигур чертежей
Фиг.1 является функциональной блок-схемой вычислительной среды, в которой могут быть воплощены реализации данного изобретения.
Фиг.2 является обзором функциональной блок-схемы прикладных программ, которые предоставляют и используют открытый интерфейс, в соответствии с одним вариантом осуществления данного изобретения.
Фиг.3 является логическим представлением одной реализации сообщения с уведомлением о событии, которое может быть использовано в одном варианте данного изобретения.
Фиг.4 является графическим представлением того, как может выглядеть изображение на дисплее, представленное прикладной программой, позволяющей редактировать документ XML, в соответствии с одним вариантом осуществления изобретения.
Фиг.5 является графическим представлением того, как может выглядеть другое изображение на дисплее, представленное прикладной программой, позволяющей дополнительно редактировать документ XML, в соответствии с одним вариантом осуществления изобретения.
Фиг.6 является графическим представлением того, как может выглядеть еще одно изображение на дисплее, представленное прикладной программой, позволяющей дополнительно редактировать документ XML, в соответствии с одним вариантом осуществления изобретения.
Иллюстративная вычислительная среда для изобретения
Фиг.1 показывает примерное вычислительное устройство, которое может быть в различных формах включено в системы, реализующие изобретение. В самой базовой конфигурации вычислительное устройство 100 обычно включает в себя по меньшей мере один процессор 102 и системную память 104. Процессор 102 включает в себя существующие физические процессоры, проектируемые процессоры, множество совместно действующих процессоров, виртуальные процессоры и любое другое устройство или программное обеспечение, способное интерпретировать двоичные исполняемые команды. В зависимости от точной конфигурации и типа вычислительного устройства системная память 104 может быть энергозависимой (такой как запоминающее устройство с произвольной выборкой (ЗУПВ, RAM)), энергонезависимой (такой как постоянное запоминающее устройство (ПЗУ, ROM) флэш-память и т.д.) или некоторой комбинацией этих двух типов. Системная память 104 обычно включает в себя операционную систему 105, один или несколько программных модулей 106, и может включать в себя данные 107 программ. Эта базовая конфигурация проиллюстрирована на фиг.1 этими компонентами в пределах пунктирной линии 108.
Вычислительное устройство 100 может также иметь дополнительные признаки или функциональность. Например, вычислительное устройство 100 может также включать в себя дополнительные устройства хранения данных (съемные и/или несъемные), такие как, например, магнитные диски, оптические диски или лента. Такое дополнительное устройство хранения данных проиллюстрировано на фиг.1 съемным устройством 109 хранения данных и несъемным устройством 110 хранения данных. Компьютерные носители данных могут включать в себя энергозависимые и энергонезависимые, съемные и несъемные носители, реализованные любым способом или технологией для хранения информации, такой как считываемые компьютером команды, структуры данных, программные модули или другие данные. Системная память 104, съемное устройство 109 хранения данных и несъемное устройство 110 хранения данных все являются примерами компьютерных носителей данных. Компьютерные носители данных включают в себя, но не ограничены, ЗУПВ, ПЗУ, электрически стираемое программируемое ПЗУ (ЭСППЗУ, EEPROM), флэш-память или другую технологию памяти, компакт-диски (CD-ROM), цифровые универсальные диски (DVD) или другое оптическое устройство хранения данных, магнитные кассеты, магнитную ленту, устройство хранения данных на магнитных дисках или другие магнитные устройства хранения данных или любой другой носитель, который может быть использован для хранения желаемой информации и который может быть доступен вычислительному устройству 100. Любой такой компьютерный носитель данных может быть частью устройства 100. Компьютерное устройство 100 может также иметь устройство (устройства) 112 ввода, такие как клавиатура, мышь, перо, устройство речевого ввода, устройство сенсорного ввода и т.д. Также в состав может быть включено устройство (устройства) 114 вывода, такие как дисплей, громкоговорители, принтер и т.д. Все эти устройства известны в данной области техники и не нуждаются в подробном обсуждении здесь.
Вычислительное устройство 100 может также содержать соединение (соединения) 116 связи, которое позволяет устройству устанавливать связь с другими вычислительными устройствами 118, например, по сети. Соединение (соединения) 116 связи является примером среды передачи данных. Среда передачи данных обычно воплощает выполняемые компьютером команды, структуры данных, программные модули или другие данные в модулированный сигнал передачи данных, такой как несущая, или другой механизм переноса и включает в себя любую среду распространения информации. Термин «модулированный сигнал передачи данных» означает сигнал, одна или несколько характеристик которого заданы или изменены таким образом, чтобы кодировать информацию в сигнале. В качестве примера, а не ограничения, среда передачи данных включает в себя проводные среды, такие как проводная сеть или прямое соединение проводом, и беспроводные среды, такие как акустические, радиочастотные, инфракрасные и другие беспроводные среды. Термин «считываемый компьютером носитель», используемый здесь, включает в себя как носитель данных, так и среду передачи данных.
Подробное описание вариантов изобретения
Изобретение дает возможность прикладной программе, такой как текстовый процессор, выдавать единый тип сообщения, включающего в себя параметры, которые уточняют сообщение, для уведомления другого приложения о появлении изменения состояния, даже если это изменение состояния могло быть вызвано различными действиями пользователя. Более конкретно, прикладная программа, которая позволяет осуществлять редактирование документов, выполненных с помощью расширяемой спецификации языка разметки (XML), открыто предоставляет некоторую функциональность другим прикладным программам. Эта функциональность может быть связана с редактированием конкретных неотображаемых элементов разметки или содержимого. Разработчики дополнений к прикладной программе могут быть уверенными в том, что их проинформируют об определенных действиях по редактированию разметки. С этой целью прикладная программа выдает уведомления об этих действиях. В соответствии с изобретением, прикладная программа сконфигурирована для выдачи уведомления о более чем одном действии путем выдачи сообщения об едином «событии». В одной реализации сообщение об едином событии может быть задействовано для индикации изменения состояния, являющегося результатом одного из трех отдельных действий. Во-первых, единое событие может быть выдано в ответ на удаляемый элемент, который заключает внутри себя текущий выделенный фрагмент. Во-вторых, единое событие может быть выдано в ответ на элемент, вставляемый вокруг текущего выделенного фрагмента. В-третьих, единое событие может быть выдано в ответ на изменение положения выделенного фрагмента от одного к другому. Независимо от причины изменения состояния срабатывающее событие является тем же самым, но оно включает в себя среди своих параметров причину изменения состояния.
Фиг.2 является функциональной блок-схемой прикладной программы, реализующей один вариант данного изобретения для выдачи сообщения о едином событии другому приложению или программе в ответ на одно из множества различных действий. Редактор 201 документов XML является прикладной программой, которая позволяет пользователю создавать и редактировать документы XML, такие как документ 202 XML, в среде свободного редактирования. Редактором 201 документов XML может быть текстовый процессор, специально запрограммированный для создания и редактирования XML. Хотя изобретение описано здесь в контексте текстового процессора, следует оценить тот факт, что изобретение не ограничено текстовыми процессорами, а фактически имеет равную применимость к любому приложению, способному манипулировать документами XML или подобными им, такому как приложение электронных таблиц, редактор форм, пакет настольной издательской системы, редактор электронной почты, инструментальное средство редактирования программного кода или любое другое инструментальное средство, где взаимодействие пользователя с приложением может привести (даже если это неизвестно пользователю) к изменяемому документу XML.
Документ 202 XML является файлом, который включает в себя элементы XML и содержимое. Документ 202 XML может включать в себя элементы, вставляемые редактором 201 документов XML, которые связаны с форматированием и т.п. Кроме того, документ 202 XML может включать в себя элементы, которые вставляются вручную пользователем и которые представляют произвольные элементы по выбору и замыслу пользователя. В любом случае редактор 201 документов XML позволяет пользователю редактировать документ 202 XML, включая вставку, модификацию и удаление элементов и их содержимого.
Генератор 250 событий, связанный с редактором 201 документов XML, запрограммирован на постоянное отслеживание появления определенных изменений состояния в документе как результата определенных действий и на выдачу уведомления об этих изменениях состояния, если они происходят. Это уведомление принимает форму открытого интерфейса 251, который предоставляет определенную функциональность редактора 201 документов XML.
Если ненадолго отойти от открытого интерфейса 251, то другая программа, такая как компонент 209 автоматизации, также включена и запрограммирована для добавления некоторой вспомогательной или автоматизированной функциональности к редактору 201 документов XML. Другими словами, компонент 209 автоматизации является прикладной программой, которая может быть разработана для предоставления пользователю редактора 201 документов XML некоторой автоматизации заданий, уже присутствующих в редакторе 201 документов XML. Одним общим примером может быть «макроприложение», которое при выполнении некоторой деятельности, такой как форматирование документа в соответствии со стандартом компании, сокращает до единственного щелчка кнопки или т.п. несколько этапов, которые в противном случае выполнялись бы вручную. В качестве альтернативы компонент 209 автоматизации может добавить дополнительную функциональность редактору 201 документов XML, такую как например, предоставление пользователю возможности запускать некоторый внешний процесс для публикации документа в Web и т.п. В любом случае, компонент 209 автоматизации включает в себя код, такой как обработчик 275 событий, который реагирует на появление некоторой деятельности в среде редактирования документа XML. В частности, компонент 209 автоматизации запрограммирован для автоматизации или добавления дополнительной функциональности связанным с XML действиям редактирования. Более точно, в соответствии с изобретением, обработчик 275 событий запрограммирован для реакции на появление конкретных действий, непосредственно связанных с редактированием документа 202 XML.
Если опять обратиться к интерфейсу, открыто предоставленному редактором 201 документов XML, то авторы изобретения определили, что имеются три категории действий, которые приводят к изменению состояния контекста XML, которое представляет интерес для связанных с XML прикладных программ-дополнений, таких как компонент 209 автоматизации. Эти категории включают в себя: (1) удаление элемента XML, окружающего текущую выделенную точку, (2) вставку нового элемента XML вокруг точки выделения и (3) перемещение точки выделения из одного положения в другое. Кроме того, случай перемещения точки выделения из одного положения в другое охватывает три различные ситуации, соответствующие XML: (1) перемещение точки выделения из пределов одного элемента XML в пределы другого элемента XML, (2) перемещение точки выделения из пределов одного элемента XML в содержимое, которое не находится в пределах какого-либо элемента XML, и (3) перемещение точки выделения в пределы элемента XML из содержимого, которое не находится в пределах какого-либо элемента XML.
В прошлом каждая из этих категорий действий оправдывала бы отдельное уведомление, требуя, чтобы разработчик компонента 209 автоматизации узнавал о трех различных событиях и обрабатывал их. Однако, авторы изобретения определили, что эти конкретные три категории действий обычно обрабатываются подобным кодом и с подобными целями. Соответственно, единое событие было разработано для уведомления дополнительных прикладных программ об изменении состояния в документе, являющимся результатом каждого из этих трех действий. Таким образом, единственный обработчик событий, такой как обработчик 275 событий, может быть реализован для того, чтобы воспользоваться преимуществом функциональности, открыто предоставленной редактором 201 документов XML. Следует отметить, что в этом случае термин «функциональность» означает «функционально связанный с опытом редактирования связанных с XML содержимого или элементов».
При едином событии компонент 209 автоматизации может включать в себя обработчик 275 единого события, запрограммированный для реакции на изменения состояния контекста XML, вызванные каждой из трех категорий действий. Эта конструкция упрощает работу по разработке компонента 209 автоматизации, не принося при этом в жертву гибкость обработки различных событий. В одной специфической реализации событие, предоставленное открытым интерфейсом 251, могло бы по существу принять форму, показанную на фиг.3 и воспроизведенную здесь:
XMLChange (Sel As Selection, OldXMLNode As XMLNode,
NewXMLNode As XMLNode, Reason As WdXMLChangeReason),
где каждый член в команде имеет следующее значение. Член «XMLChange» относится к имени открыто предоставляемого события, параметр 301 «Sel» соответствует объекту, представляющему текущую точку выделения или выделенное содержимое в пределах редактируемого документа XML, параметр 302 «OldXMLNode» соответствует объекту, представляющему элемент XML, в котором выделенный фрагмент существовал прежде завершения незаконченного действия, параметр 303 «NewXMLNode» соответствует объекту, представляющему элемент XML, в котором выделенный фрагмент будет существовать после завершения незаконченного действия, и параметр 304 «Reason» соответствует идентификатору категории конкретного незаконченного действия, которое приводит к изменению состояния контекста XML. Параметр Reason используется для идентификации одной из трех категорий действий, описанных выше. Соответственно, когда это сообщение выдается редактором 201 документов XML, переданный в качестве аргумента параметр Reason является одним из трех, которые определяют, какой из трех типов действий произошел.
Для того, чтобы воспользоваться преимуществом события, открыто предоставленного редактором 201 документов XML, обработчик 275 событий включает в себя объявление переменной, которое информирует обработчик 275 событий о событии, и затем код для выполнения в ответ на каждую из трех категорий действий. Далее следует псевдокод, который может быть использован в одной специфической реализации для обработки события, описанного выше:
Public WithEvents oWordProc As WordProc.Application
Private Sub oWordProc_XMLChange (Sel As Selection,
OldXMLNode As XMLNode, NewXMLNode As XMLNode,
Reason As WdXMLChangeReason)
Select Case Reason
Case wdXMLChangeReasonInsert
Код для выполнения в ответ на вставку XML
Case wdXMLChangeReasonDelete
Код для выполнения в ответ на удаление XML
Case wdXMLChangeReasonMove
Код для выполнения в ответ на перемещение точки выбора
End Select
End Sub
Специалисты в данной области техники оценят тот факт, что вышеуказанный псевдокод сначала создает объект «oWordProc», который относится к типу «WordProc.Application», где объекты типа WordProc.Application в основном являются экземплярами реализации функциональности, которую прикладная программа с именем «WordProc» сделала доступной. В этом примере приложение WordProc соответствует редактору 201 документов XML таким образом, что объект oWordProc соответствует экземпляру редактора 201 документов XML. Включение оператора «WithEvents» сообщает объекту oWordProc о событиях, генерируемых редактором 201 документов XML. С этой целью подпрограмма с именем «oWordProc_XMLChange» включает в себя код для обработки события XMLChange, описанного выше. Параметры кода обработчика и сообщения являются одинаковыми.
В этом конкретном примере конструкция Select/Case была использована для обработки каждой из трех причин, по которой событие может возникнуть. Например, оператор «Case wdXMLChangeReasonInsert» может быть использован для обработки события, запущенного по причине того, что элемент XML был вставлен вокруг выделенного фрагмента. Оператор «Case wdXMLChangeReasonDelete» может быть использован для обработки события, запущенного по причине того, что элемент XML, заключающий выделенный фрагмент, был удален. И оператор «Case wdXMLChangeReasonMove» может быть использован для обработки события, запущенного по причине того, что точка выделения переместилась некоторым образом, соответствующим XML. Каждый из этих трех случаев будет теперь описан со ссылкой на фиг.4-6.
Фиг.4 является графическим представлением того, как может выглядеть изображение 410 на дисплее, представленное редактором 201 документов XML, при редактировании документа 202 XML. Как показано, документом 202 XML может быть документ резюме, состоящий из нескольких фрагментов, заключенных в элементы XML. Например, имя «John Doe» заключено в элемент <name> 405, который в свою очередь заключен в элемент 407 <resume>. Точка вставки показана в первоначальном положении 415, соответствующем содержимому в элементе 430 <p>.
При редактировании пользователь может осуществлять много действий над документом XML 202, включая перемещение точки вставки. Например, во время редактирования точка вставки может быть перемещена из первоначального положения 415 в новое положение 425 в потоке текста «Professor Smith». Отметим, что этот поток текста, как показано, содержится за пределами любого текущего элемента XML. Соответственно, на основе этого действия и окружающих его обстоятельств возникнет событие, служащее индикатором того, что точка вставки была перемещена из одного элемента XML в содержимое за пределами любого элемента XML. В этом случае сообщение, близко напоминающее событие, показанное выше, может быть выдано с параметрами в соответствии с нижеприведенным определением.
Параметр Sel может включать в себя объект, который содержит текущий выделенный фрагмент. В описанном примере текущий выделенный фрагмент относится к первоначальному положению 415 точки вставки. Другими словами, все содержимое элемента <p> или некоторое подмножество этого содержимого, если выделено не все содержимое, может быть передано объекту Selection в качестве аргумента. Поскольку точка вставки переместилась из положения внутри элемента <p> XML, OldXMLNode соответствует конкретному элементу 430 <p>, в пределах которого существовало первоначальное положение. Подобным же образом NewXMLNode соответствует элементу XML, в который переместилась точка вставки, который в этом случае представляет собой пустой символ, так как нет элемента XML, заключающего новое положение 425. Наконец, параметр Reason включает в себя индикатор того, что произошло связанное с XML действие Move.
Следует отметить, что точка вставки могла бы быть перемещена в другом направлении (например, из нового положения 425 в первоначальное положение 415). В этом случае событие изменения контекста XML все же возникло бы, хотя OldXMLNode представлял бы собой пустой символ, и NewXMLNode был бы элементом 430 <p>. Другие параметры были бы теми же, что и описанные только что.
Специалистам в данной области техники следует оценить тот факт, что создатели приложения обработки текстов свободны в определении того, какие типы элементов XML должны вызывать запуск события, а какие нет. Например, создатели приложения могли бы решить, что действия Move, Insert или Delete, включающие в себя элементы некоторого специального пространства имен, которое они выбирают, не вызывают запуск события, но они делают это, если элементы берутся из другого пространства имен. Более точно, создатели приложения могли бы решить, что элементы из пространства имен, представляющего собственную схему XML приложения обработки текстов, являются совершенно невидимыми для детектора изменения состояния, который вызывает запуск события, и только элементы за пределами собственных пространств имен «наблюдаются» генератором 250 событий.
Фиг.5 является другим изображением документа 202 XML на дисплее после выполнения дальнейшего редактирования. Сначала пользователь может вставить новый элемент XML вокруг текста «Professor Smith», тем самым перемещая его в элемент 407 <resume>. На основе этих обстоятельств связанное с XML событие вставки вызывается редактором 201 документов XML. Соответственно, параметр Sel события включает в себя объект Selection, представляющий содержимое нового элемента 510 XML, то есть текст «Professor Smith». Поскольку этот текст не был включен в какой-либо элемент XML перед действием вставки, OldXMLNode представляет собой пустой символ. NewXMLNode идентифицирует новый элемент, элемент 510 <references>. Наконец, параметр Reason включает в себя идентификатор, соответствующий событию вставки.
В этом примере после того, как пользователь вставляет элемент 510 <references>, точка вставки перемещается из элемента <references> 510 в элемент <objective>, тем самым вызывая возникновение события перемещения. Однако, в отличие от события перемещения, описанного выше, текущее событие перемещения соответствует перемещению точки вставки из одного элемента XML (элемент 510 <references>) в другой элемент XML (элемент 512 <objective>). В этом случае параметр Sel события соответствует содержимому элемента 510 <references>, то есть тексту «Professor Smith». Параметр OldXMLNode идентифицирует элемент 510 <references>, а параметр NewXMLNode идентифицирует элемент 512 <objective>. И наконец, параметр Reason идентифицирует тип события как связанное с XML событие перемещения.
Фиг.6 является еще одним изображением документа 202 XML на дисплее после выполнения дальнейшего редактирования. В этой ситуации пользователь удалил элемент <objective>, заключающий текст 610 «Rewarding employment», вызвав возникновение связанного с XML события удаления. Подобно событиям, описанным выше, событие удаления включает в себя параметр Sel, который идентифицирует текст 610 «Rewarding employment» как текущий выделенный фрагмент, элемент 512 <objective> (фиг.5) как OldXMLNode, и элемент 407 <resume> как NewXMLNode. Наконец, параметр Reason включает в себя индикацию того, что выполнено связанное с XML действие удаления.
В целом, изобретение дает возможность переопределения уведомления о едином событии для индикации появления изменения состояния, возникающего в результате множества связанных с XML действий в среде редактирования XML. Уведомление об едином событии для множества действий упрощает задачу разработки прикладных программ-дополнений, которые пользуются преимуществом функциональности, открыто предоставленной средой редактирования XML.
Вышеприведенное описание, примеры и данные обеспечивают полное описание изготовления и использования композиции изобретения. Поскольку многие варианты осуществления изобретения могут быть сделаны без выхода за рамки сущности и объема изобретения, изобретение содержится в прилагаемой здесь формуле изобретения.
Класс G06F13/00 Соединение запоминающих устройств, устройств ввода-вывода или устройств центрального процессора или передача информации или других сигналов между этими устройствами
Класс G06F9/46 устройства для мультипрограммирования