package devopsdistilled.operp.client.context;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;

import devopsdistilled.operp.client.items.ItemController;
import devopsdistilled.operp.client.items.ItemControllerImpl;
import devopsdistilled.operp.client.items.controllers.CreateItemPaneController;
import devopsdistilled.operp.client.items.controllers.impl.CreateItemPaneControllerImpl;
import devopsdistilled.operp.client.items.models.BrandModel;
import devopsdistilled.operp.client.items.models.CreateItemPaneModel;
import devopsdistilled.operp.client.items.models.ItemModel;
import devopsdistilled.operp.client.items.models.ProductModel;
import devopsdistilled.operp.client.items.models.impl.BrandModelImpl;
import devopsdistilled.operp.client.items.models.impl.CreateItemPaneModelImpl;
import devopsdistilled.operp.client.items.models.impl.ItemModelImpl;
import devopsdistilled.operp.client.items.models.impl.ProductModelImpl;
import devopsdistilled.operp.client.items.views.CreateItemPane;
import devopsdistilled.operp.client.main.MainModel;
import devopsdistilled.operp.client.main.MainModelImpl;
import devopsdistilled.operp.client.main.MainWindow;
import devopsdistilled.operp.client.main.MainWindowController;
import devopsdistilled.operp.client.main.MainWindowControllerImpl;

@Configuration
@Import({ NavigationContext.class })
public class UIContext {

	@Bean
	public MainWindowController mainWindowController() {
		return new MainWindowControllerImpl();
	}

	@Bean
	public MainModel mainModel() {
		return new MainModelImpl();
	}

	@Bean
	public MainWindow mainWindow() {
		MainWindow window = MainWindow.getInstance();
		return window;
	}

	@Bean
	public ItemController itemController() {
		return new ItemControllerImpl();
	}

	@Bean
	public CreateItemPaneModel createItemPaneModel() {
		return new CreateItemPaneModelImpl();
	}

	@Bean
	public ItemModel itemModel() {
		return new ItemModelImpl();
	}

	@Bean
	public ProductModel productModel() {
		return new ProductModelImpl();
	}

	@Bean
	public BrandModel brandModel() {
		return new BrandModelImpl();
	}

	@Bean
	public CreateItemPane createItemPane() {
		return new CreateItemPane();
	}

	@Bean
	public CreateItemPaneController createItemPaneController() {
		return new CreateItemPaneControllerImpl();
	}

}

@@ -462,27 +462,192 @@
 rollers.
-impl.Create
+ListItemPaneController;%0Aimport devopsdistilled.operp.client.items.controllers.impl.CreateItemPaneControllerImpl;%0Aimport devopsdistilled.operp.client.items.controllers.impl.List
 ItemPane
@@ -849,24 +849,92 @@
 .ItemModel;%0A
+import devopsdistilled.operp.client.items.models.ListItemPaneModel;%0A
 import devop
@@ -1194,32 +1194,109 @@
 .ItemModelImpl;%0A
+import devopsdistilled.operp.client.items.models.impl.ListItemPaneModelImpl;%0A
 import devopsdis
@@ -1415,16 +1415,78 @@
 emPane;%0A
+import devopsdistilled.operp.client.items.views.ListItemPane;%0A
 import d
@@ -2319,32 +2319,129 @@
 odelImpl();%0A%09%7D%0A%0A
+%09@Bean%0A%09public ListItemPaneModel listItemPaneModel() %7B%0A%09%09return new ListItemPaneModelImpl();%0A%09%7D%0A%0A
 %09@Bean%0A%09public I
@@ -2758,81 +2758,271 @@
 lic 
-CreateItemPaneController createItemPaneController() %7B%0A%09%09return new Create
+ListItemPane listItemPane() %7B%0A%09%09return new ListItemPane();%0A%09%7D%0A%0A%09@Bean%0A%09public CreateItemPaneController createItemPaneController() %7B%0A%09%09return new CreateItemPaneControllerImpl();%0A%09%7D%0A%0A%09@Bean%0A%09public ListItemPaneController listItemPaneController() %7B%0A%09%09return new List
 Item

Create new required @Beans