package com.thingtrack.konekti.view.module.modulemanager.internal;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.springframework.beans.factory.annotation.Autowired;
import com.vaadin.annotations.AutoGenerated;
import com.vaadin.ui.VerticalLayout;
import com.thingtrack.konekti.view.addon.ui.AbstractViewContainer;
import com.thingtrack.konekti.view.addon.ui.SliderView;
import com.thingtrack.konekti.view.kernel.IModule;
import com.thingtrack.konekti.view.kernel.IModuleService;
import com.thingtrack.konekti.view.kernel.IWorkbenchContext;
import com.thingtrack.konekti.view.kernel.ui.layout.ISliderView;
import com.thingtrack.konekti.view.kernel.ui.layout.IViewChangeListener;
import com.thingtrack.konekti.view.kernel.ui.layout.IView;
import com.thingtrack.konekti.service.api.MenuCommandResourceService;
import com.thingtrack.konekti.service.api.MenuFolderResourceService;
import com.thingtrack.konekti.service.api.MenuWorkbenchService;
@SuppressWarnings("serial")
public class ConfiguratorViewContainer extends AbstractViewContainer {
@AutoGenerated
private VerticalLayout mainLayout;
@AutoGenerated
private SliderView sliderView;
/** Views **/
private ConfiguratorView configuratorView;
/** Business services **/
@Autowired
private IModuleService moduleService;
@Autowired
private MenuWorkbenchService menuWorkbenchService;
@Autowired
private MenuFolderResourceService menuFolderResourceService;
@Autowired
private MenuCommandResourceService menuCommandResourceService;
private IWorkbenchContext context;
// Thread Local Bundle Business Services
private static ThreadLocal<IModuleService> threadModuleService = new ThreadLocal<IModuleService>();
private static ThreadLocal<MenuWorkbenchService> threadMenuWorkbenchService = new ThreadLocal<MenuWorkbenchService>();
private static ThreadLocal<MenuFolderResourceService> threadMenuFolderResourceService = new ThreadLocal<MenuFolderResourceService>();
private static ThreadLocal<MenuCommandResourceService> threadMenuCommandResourceService = new ThreadLocal<MenuCommandResourceService>();
/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
/**
* The constructor should first build the main layout, set the
* composition root and then do any custom initialization.
*
* The constructor will not be automatically regenerated by the
* visual editor.
*/
public ConfiguratorViewContainer(IWorkbenchContext context, IModule module) {
buildMainLayout();
setCompositionRoot(mainLayout);
// TODO add user code here
this.context = context;
this.module = module;
}
@SuppressWarnings("unused")
@PostConstruct
private void createViews() {
// initialize thread local bundle services
threadModuleService.set(moduleService);
threadMenuWorkbenchService.set(menuWorkbenchService);
threadMenuFolderResourceService.set(menuFolderResourceService);
threadMenuCommandResourceService.set(menuCommandResourceService);
// add all views controlled by SliderView Component
configuratorView = new ConfiguratorView(context, this);
sliderView.addView(configuratorView);
views.put(0, configuratorView);
}
@SuppressWarnings("unused")
@PreDestroy
private void destroyViews() {
// destroy thread local bundle services
threadModuleService.set(null);
threadMenuWorkbenchService.set(null);
threadMenuFolderResourceService.set(null);
threadMenuCommandResourceService.set(null);
}
public static IModuleService getModuleService() {
return threadModuleService.get();
}
public static MenuWorkbenchService getMenuWorkbenchService() {
return threadMenuWorkbenchService.get();
}
public static MenuFolderResourceService getMenuFolderResourceService() {
return threadMenuFolderResourceService.get();
}
public static MenuCommandResourceService getMenuCommandResourceService() {
return threadMenuCommandResourceService.get();
}
@Override
public ISliderView getSliderView() {
return sliderView;
}
@Override
public IView getSelectedView() {
return sliderView.getSelectedView();
}
@Override
public void addListener(IViewChangeListener listener) {
sliderView.addListener(listener);
}
@AutoGenerated
private VerticalLayout buildMainLayout() {
// common part: create layout
mainLayout = new VerticalLayout();
mainLayout.setImmediate(false);
mainLayout.setWidth("100%");
mainLayout.setHeight("100%");
mainLayout.setMargin(false);
// top-level component properties
setWidth("100.0%");
setHeight("100.0%");
// sliderView_1
sliderView = new SliderView();
sliderView.setImmediate(false);
sliderView.setWidth("100.0%");
sliderView.setHeight("100.0%");
mainLayout.addComponent(sliderView);
mainLayout.setExpandRatio(sliderView, 1.0f);
return mainLayout;
}
}