В sub-window есть кнопка развернуть во весь экран и свернуть обратно, мне нужно перехватить её, чтобы окно разворачивалось с теми размерами и тем положением, которые я им задам…
Использовал addWindowModeChangeListener, но он сначала выполнил мой код, а затем развернул окно во весь экран
можно как-нибудь решить эту проблему? vaadin изучаю недавно
Упомянутая кнопка изменяет shared state для окна, точнее его аттрибут “windowMode”.
Так, что когда Вы выполняете свой код в обработчике значение этого аттрибута всё равно меняется и выполняетя код, который реагирует на изменение этого аттрибута.
Так, что Вам нужно не обработчик добавлять, а отнаследоваться от класса Window и переопределить метод setWindowMode. Причём, не вызывая super метода.
Ax ты ж…
Да, виноват.
setWindowMode
вызывается для уведомления серверного класса постфактум. То есть сначала клиентская часть меняет размер окна, а потом уже посылает уведомление на сервер что режим изменился. А серверный класс только листенеры и оповещает в итоге через этот метод.
Да, так не получится. Придётся менять клинетский код.
Нужно сделать свою компоненту: отнаследоваться от класса Window, создать свой коннектор, наследованный от WindowConnector (коннетор долженю быть привязан к подклассу Window через @Connect).
В коннекторе есть метод
updateWindowMode
который нужно переопределить. Сделать ему пустую реализацию.
Этот метод и распахивает окно.
Тогда серверная часть всё равно будет уведомляться о смене режима, но распахивания не будет.
Потом нужно будет пересобрать проект с перекомпиляцией виджетов. Тогда заработает.
/////////////////////////////////////////////////////////////////////////////Вывод в консоль
авг 27, 2014 5:36:37 PM com.vaadin.server.VaadinServlet serveStaticResourcesInVAADIN
INFO: Requested resource
[/VAADIN/themes/myproject/favicon.ico] not found from filesystem or through class loader. Add widgetset and/or theme JAR to your classpath or add files to WebContent/VAADIN folder.
→ MyWindow.setWindowMode
→ MyWindow.setWindowMode
Окна разворачиваются и мы не смогли попасть в метод updateWindowMode, может что-то не так сделали?
В коннекторе System.out.println бесполезен потому что он компилируется в JS, а там этот код ничего не выведет.
Вы
компилировали виджет ?
Я не стал подробно расписывать компиляцию. Для того чтобы свой виджетсет заработал нужно сделать кучу вещей помимо создания коннектора и связывания его с серверным классом.
Вы всё это сделали ?