Нужна помощь!

В sub-window есть кнопка развернуть во весь экран и свернуть обратно, мне нужно перехватить её, чтобы окно разворачивалось с теми размерами и тем положением, которые я им задам…

Использовал addWindowModeChangeListener, но он сначала выполнил мой код, а затем развернул окно во весь экран

можно как-нибудь решить эту проблему? vaadin изучаю недавно

Упомянутая кнопка изменяет shared state для окна, точнее его аттрибут “windowMode”.
Так, что когда Вы выполняете свой код в обработчике значение этого аттрибута всё равно меняется и выполняетя код, который реагирует на изменение этого аттрибута.
Так, что Вам нужно не обработчик добавлять, а отнаследоваться от класса Window и переопределить метод setWindowMode. Причём, не вызывая super метода.

Выполнил, как вы объяснили, вот код переопределения

public class MyWindow extends Window{
public MyWindow( String name ){
super( name );
} // constructor MyWindow

public void setWindowMode( WindowMode windowMode ) {
System.out.println( “–> MyWindow.setWindowMode” );
} // setWindowMode

} // MyWindow class

Окно всё равно продолжает разворачиваться во весь экран

Надо ли что-нибудь писать в переопределенном методе?

Ax ты ж…
Да, виноват. setWindowMode вызывается для уведомления серверного класса постфактум. То есть сначала клиентская часть меняет размер окна, а потом уже посылает уведомление на сервер что режим изменился. А серверный класс только листенеры и оповещает в итоге через этот метод.
Да, так не получится. Придётся менять клинетский код.
Нужно сделать свою компоненту: отнаследоваться от класса Window, создать свой коннектор, наследованный от WindowConnector (коннетор долженю быть привязан к подклассу Window через @Connect).
В коннекторе есть метод updateWindowMode который нужно переопределить. Сделать ему пустую реализацию.
Этот метод и распахивает окно.
Тогда серверная часть всё равно будет уведомляться о смене режима, но распахивания не будет.

Потом нужно будет пересобрать проект с перекомпиляцией виджетов. Тогда заработает.

Сделали, как Вы написали, вот код …

////////////////////////////////////////////////////////////////////////////////////////////Коннектор

import com.vaadin.client.ui.window.WindowConnector;
import com.vaadin.shared.ui.Connect;

@Connect(value = com.example.myproject.MyWindow.class)
public class MyWindowConnector extends WindowConnector {

protected void updateWindowMode(){
System.out.println( “–> MyWindowConnector.updateWindowMode()” );
} // updateWindowMode

} // WindowConnector

////////////////////////////////////////////////////////////////////////////////////////////Компонент

import com.vaadin.shared.ui.window.WindowMode;
import com.vaadin.ui.Window;

public class MyWindow extends Window{

public MyWindow( String name ){
super( name );
} // constructor MyWindow

public void setWindowMode( WindowMode windowMode ) {
System.out.println( “–> MyWindow.setWindowMode” );
} // setWindowMode

} // MyWindow class

/////////////////////////////////////////////////////////////////////////////Вывод в консоль

авг 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, а там этот код ничего не выведет.
Вы
компилировали
виджет ?
Я не стал подробно расписывать компиляцию. Для того чтобы свой виджетсет заработал нужно сделать кучу вещей помимо создания коннектора и связывания его с серверным классом.
Вы всё это сделали ?

Вот прочтите здесь:
http://wiki.netbeans.org/VaadinPlugin_ru#.D0.9D.D0.B0.D0.B8.D0.B1.D0.BE.D0.BB.D0.B5.D0.B5_.D1.80.D0.B0.D1.81.D0.BF.D0.BE.D1.81.D1.82.D1.80.D0.B0.D0.BD.D1.91.D0.BD.D0.BD.D1.8B.D0.B5_.D0.BE.D1.88.D0.B8.D0.B1.D0.BA.D0.B8
Это хоть и про плагин для NetBeans, но там описано всё что можно собрать по пути создания кустарных компонент. Наверняка что-нибудь оттуда подойдёт и Вам.