Xpoint
   [напомнить пароль]

Использовать Observer или что-то другое?

Метки: [без меток]
2009-07-10 15:24:09 [обр] Андрей Анатольич+(0/46)[досье]

Я разрабатываю приложение на Xulrunner.
Появилась необходимость изменять GUI (дизейблить и раздизейбливать кнопки) при возникновении некоторых событий в приложении.

Как обычно делаются подобные вещи? Используют паттерн Observer или что-то еще?
Есть ли готовые решения для этого в XUL?

спустя 3 дня [обр] Андрей Анатольич+(0/46)[досье]
Ну что, никто не подскажет right way?
спустя 2 дня 18 часов [обр] Денис Ибаев aka Dionys(0/57)[досье]

В XUL для этого есть команды:

<commandset commandupdater="true" events="my-event-1,my-event-2" oncommandupdate="updateMyCommands();">
    <command id="my-command-1" oncommand="doMyCommand1();"/>
    <command id="my-command-2" oncommand="doMyCommand2();"/>
</commandset>

<button label="Do command 1" observes="my-command-1"/>
<button label="Do command 2" observes="my-command-2"/>

Когда нужно обновить команды посылаем сообщение о событии:

document.commandDispatcher.updateCommands('my-event-1');

Наборы <commandset commandupdater="true"/>, подписанные на это событие в ответ выполняют код из атрибута oncommandupdate. В данном случае это функция updateMyCommands(), которая по имени команды определяет её состояние (функцию писать самому).

Вообще стоит почитать об интерфейсах nsIDOMXULCommandDispatcher и nsIController.

спустя 7 часов [обр] Андрей Анатольич+(0/46)[досье]
Спасибо, Денис!
Похоже команды - это то, что мне нужно.
Powered by POEM™ Engine Copyright © 2002-2005