use of com.github.appreciated.app.layout.behaviour.AppLayoutComponent in project vaadin-app-layout by appreciated.
the class AppLayoutConfiguration method build.
/**
* FIXME this configuration should only hold configuration => Single responsibility principle
* This terminating build method is part of the builder and not of the configuration.
*/
public AppLayoutComponent build() {
// this method has a lot of magic. add some inline comments describing why are you doing what.
if (navigationElementProvider == null) {
if (variant.isTop())
navigationElementProvider = new DefaultLeftNavigationBadgeElementComponentFactory();
else
navigationElementProvider = new DefaultLeftNavigationBadgeElementComponentFactory();
}
if (customElementProvider == null) {
if (variant.isTop())
customElementProvider = new DefaultLeftClickableNavigationElementFactory();
else
customElementProvider = new DefaultLeftClickableNavigationElementFactory();
}
if (sectionProvider == null) {
if (variant.isTop())
sectionProvider = new DefaultLeftSectionElementComponentFactory();
else
sectionProvider = new DefaultLeftSectionElementComponentFactory();
}
if (submenuProvider == null) {
if (variant.isTop())
submenuProvider = new DefaultTopSubmenuNavigationElementFactory();
else
submenuProvider = new DefaultLeftSubmenuNavigationElementFactory();
}
AppLayoutSessionHelper.setActiveVariant(variant);
if (titleComponent == null) {
instance.setTitle(title);
} else {
instance.setTitleComponent(titleComponent);
}
if (isNavigatorEnabled) {
navigator = navigatorProducer.apply(instance.getContentHolder());
if (navigator == null) {
throw new RuntimeException("The set navigatorProducer returned 'null' as a Navigator");
}
navigator.addViewChangeListener(event -> beforeViewChange(event.getViewName()));
if (viewProviderSupplier != null) {
navigator.addProvider(viewProviderSupplier.get());
}
if (errorProvider != null) {
navigator.setErrorProvider(errorProvider.get());
}
if (errorViewProvider != null) {
navigator.setErrorView(errorViewProvider.get());
}
if (navigatorConsumer != null) {
navigatorConsumer.accept(navigator);
}
if (!isCDI && defaultNavigationElement == null) {
defaultNavigationElement = navigationElements.stream().filter(element -> element instanceof NavigatorNavigationElement).map(element -> ((NavigatorNavigationElement) element)).findFirst().orElse(null);
}
} else {
componentNavigator = new ComponentNavigator(instance.getContentHolder());
componentNavigator.addViewChangeListener(event -> beforeViewChange(event.getViewName()));
if (errorViewProvider != null) {
componentNavigator.setErrorView(errorViewProvider.get());
}
if (componentNavigatorConsumer != null) {
componentNavigatorConsumer.accept(componentNavigator);
}
if (defaultNavigationElement == null) {
defaultNavigationElement = navigationElements.stream().filter(element -> element instanceof NavigatorNavigationElement).map(element -> ((NavigatorNavigationElement) element)).findFirst().orElse(null);
}
defaultNavigationElement.addViewToComponentNavigator(componentNavigator);
}
addComponents(headerElements, instance::addNavigationHeaderElement);
addComponents(navigationElements, instance::addNavigationElement);
addComponents(footerElements, instance::addNavigationFooterElement);
appBarElements.forEach(instance::addAppBarElement);
instance.setDesign(design);
if (appBarIconComponent != null) {
instance.addAppBarIcon(appBarIconComponent);
}
instance.setNavigatorNavigationElements(navigatorElements);
if (!isNavigatorEnabled) {
componentNavigator.navigateTo(defaultNavigationElement.getViewName());
} else {
if (!isCDI && defaultNavigationElement != null) {
defaultNavigationElement.addViewToNavigator(navigator);
} else if (isCDI && defaultNavigationElement != null) {
System.err.println("WARNING - AppLayout - You are using isCDI but try to set the DefaultNavigationElement this will have no effect");
}
}
return instance;
}
use of com.github.appreciated.app.layout.behaviour.AppLayoutComponent in project vaadin-app-layout by appreciated.
the class DemoUI method setDrawerVariant.
private void setDrawerVariant(Behaviour variant) {
holder.removeAllComponents();
AppLayoutComponent drawer = AppLayout.getDefaultBuilder(variant).withTitle("App Layout").addToAppBar(new AppBarNotificationButton(notifications, true)).withViewNameInterceptor(new DefaultViewNameInterceptor()).withDefaultNavigationView(View1.class).withDesign(AppLayoutDesign.MATERIAL).add(new MenuHeader("Version 0.9.21", new ThemeResource("logo.png")), HEADER).addClickable("Set Behaviour HEADER", VaadinIcons.COG, clickEvent -> openModeSelector(variant), HEADER).add("Home", VaadinIcons.HOME, badge, new View1()).add(SubmenuBuilder.get("My Submenu", VaadinIcons.PLUS).add(SubmenuBuilder.get("My Submenu", VaadinIcons.PLUS).add("Charts3", VaadinIcons.SPLINE_CHART, View2.class).add("Contact3", VaadinIcons.CONNECT, View3.class).add("More3", VaadinIcons.COG, View4.class).build()).add("Contact1", VaadinIcons.CONNECT, View3.class).add("More1", VaadinIcons.COG, View4.class).build()).add(SubmenuBuilder.get("My Submenu", VaadinIcons.PLUS).add(SubmenuBuilder.get("My Submenu", VaadinIcons.PLUS).add("Charts4", VaadinIcons.SPLINE_CHART, View2.class).add("Contact4", VaadinIcons.CONNECT, View3.class).add("More4", VaadinIcons.COG, View4.class).build()).add("Contact2", VaadinIcons.CONNECT, View3.class).add("More2", VaadinIcons.COG, View4.class).build()).add("Menu", VaadinIcons.MENU, View5.class).add("Elements", VaadinIcons.LIST, ElementsView.class).addClickable("Set Behaviour FOOTER", VaadinIcons.COG, clickEvent -> openModeSelector(variant), FOOTER).build();
drawer.addStyleName("left");
holder.addComponent(drawer);
if (getNavigator() != null) {
getNavigator().navigateTo("");
}
reloadNotifications();
}
use of com.github.appreciated.app.layout.behaviour.AppLayoutComponent in project vaadin-app-layout by appreciated.
the class DemoUI method init.
// @Autowired
// SpringNavigator navigator;
public void init(VaadinRequest request) {
DefaultNotificationHolder notifications = new DefaultNotificationHolder();
DefaultBadgeHolder badge = new DefaultBadgeHolder();
AppLayoutComponent layout = AppLayout.getCDIBuilder(Behaviour.LEFT_RESPONSIVE_HYBRID).withViewProvider(() -> viewProvider).withNavigationElementInfoProvider(new DefaultSpringNavigationElementInfoProvider()).withTitle("App Layout Basic Example").addToAppBar(new AppBarNotificationButton(notifications, true)).withDesign(AppLayoutDesign.MATERIAL).withNavigatorConsumer(navigator -> {
/* Do something with it */
}).add(new MenuHeader("Version 0.9.21", new ThemeResource("logo.png")), HEADER).add("Home", VaadinIcons.HOME, badge, View1.class).add(SubmenuBuilder.get("My Submenu", VaadinIcons.PLUS).add("Charts", VaadinIcons.SPLINE_CHART, View2.class).add("Contact", VaadinIcons.CONNECT, View3.class).add("More", VaadinIcons.COG, View4.class).build()).add("Menu", VaadinIcons.MENU, View5.class).add("Elements", VaadinIcons.LIST, View6.class).build();
setContent(layout);
}
Aggregations