Макет одностраничного приложения на самом деле довольно прост.
Первое, что вы делаете, это определяете общий макет, используя GWT макетные панели . Для вашего макета я бы предложил использовать DockLayoutPanel .
Content content = new Content();
Button switchContent = new Button(content);
Navigation navigation = new Navigation();
navigation.add(switchContent);
DockLayoutPanel pageLayout = new DockLayoutPanel(Unit.EM);
p.addWest(new HTML(navigation), 7.5);
p.add(new HTML(content));
Здесь ширина панели навигации будет фиксированной, тогда как контент займет оставшееся место. Вы должны передать ссылку на кнопку (или другой виджет), которая переключает область содержимого, добавить кнопку в область навигации и т. Д.
Поместите это в класс, например. называется MasterPageFactory
:
public class MasterPageFactory {
private MasterPageFactory() {}
public static MasterPage newInstance() {
Content content = new Content();
Button switchContent = new Button(content);
Navigation navigation = new Navigation();
navigation.add(switchContent);
DockLayoutPanel masterPage = new DockLayoutPanel(Unit.EM);
masterPage.addWest(new HTML(navigation), 7.5);
masterPage.add(new HTML(content));
return masterPage;
}
}
Теперь, в вашем EntryPoint
классе, позвоните на фабрику:
RootLayoutPanel.get().add(MasterPageFactory.newInstance());
Этот пример должен дать вам представление. Другими вариантами будет использование структуры DI, такой как Guice или шаблон Command.