Простой способ подсчитать количество окон через PopUpManager? - PullRequest
1 голос
/ 20 апреля 2011

Я использую PopUpManager, чтобы вызвать несколько окон событий.

Я хочу сделать так, чтобы за один раз можно было открыть только одно окно, но я нигде не вижу вкод, который отслеживает открытые окна, чтобы установить условное.Я предполагаю, что он просто создает окна и затем освобождает их?

Думая о переменной windowCount, которая увеличивается при добавлении окна и уменьшается при удалении одного, но так как PopupManager вызывается в разных классах, ядолжны начать бросать события повсюду.Я могу это сделать, но мне интересно, есть ли более простой метод?

Ответы [ 2 ]

3 голосов
/ 20 апреля 2011

systemManager (а не PopUpManager, пойди разберись ...) предоставляет информацию об открытых в данный момент всплывающих окнах.

Если все ваши всплывающие окна являются моделями, то вас заинтересует ' systemManager.numModalWindows ':

Количество модальных окон.Модальные окна не позволяют щелкать в других окнах, которые обычно активируют FocusManager в этом окне.PopUpManager изменяет этот счетчик, создавая и уничтожая модальные окна.

В противном случае попробуйте ' systemManager.popUpChildren ':

Список изОкна topMost (всплывающие окна), создаваемые этим ISystemManager.

ISystemManager имеет различные типы дочерних элементов, такие как приложение, всплывающие окна, всплывающие подсказки и пользовательские курсоры.Вы можете получить доступ к самым верхним окнам через свойство popUpChildren.

Объект IChildList имеет методы, такие как getChildAt (), и свойства, такие как numChildren.Например, popUpChildren.numChildren дает количество самых верхних окон, и вы можете получить к ним доступ как popUpChildren.getChildAt (i).

2 голосов
/ 20 апреля 2011

вижу несколько вариантов:

1) Сделайте все ваши окна модальными; так что приложение не может быть использовано, пока окно не будет закрыто. Это аргумент метода createPopUp в PopUpManager. Предположительно у вас нет всплывающих окон, создающих другие всплывающие окна.

2) Создайте свой собственный класс Manager, возможно, расширение класса PopUpManager, который отслеживает все открытые окна. Тогда у вас будет один источник всех всплывающих окон, и вы сможете поддерживать их таким образом.

...