// Path: src/main/java/songo/view/MainView.java
// @SessionScoped
// public class MainView implements View {
// 	private final Shell shell;
// 	private final SWTUtil util;
// 	private final TabItem searchTab;
// 	private final TabItem playlistTab;
// 	private final ShellAdapter hideOnClose;
// 
// 	public TabItem getSearchTab() {
// 		return searchTab;
// 	}
// 
// 	public TabItem getPlaylistTab() {
// 		return playlistTab;
// 	}
// 
// 	@Inject
// 	MainView(final Shell shell, SWTUtil util, TrayView trayView, @SessionBus EventBus bus) {
// 		this.shell = shell;
// 		this.util = util;
// 		bus.register(this);
// 		hideOnClose = new ShellAdapter() {
// 			@Override
// 			public void shellClosed(ShellEvent shellEvent) {
// 				shell.setVisible(false);
// 				shellEvent.doit = false;
// 			}
// 		};
// 		shell.addShellListener(hideOnClose);
// 		shell.setText("Songo");
// 		shell.setLayout(new GridLayout());
// 		TabFolder tabs = new TabFolder(shell, SWT.NONE);
// 		tabs.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
// 		playlistTab = new TabItem(tabs, SWT.NONE);
// 		playlistTab.setText("Playlist");
// 		searchTab = new TabItem(tabs, SWT.NONE);
// 		searchTab.setText("Search");
// 		tabs.setSelection(1);
// 		trayView.setShell(shell);
// 	}
// 
// 	@Subscribe
// 	public void restore(TrayView.Restore e) {
// 		shell.setVisible(!shell.getVisible());
// 	}
// 
// 	@Subscribe
// 	public void close(TrayView.Exit e) {
// 		shell.removeShellListener(hideOnClose);
// 		util.exitOnClose(shell);
// 		shell.close();
// 	}
// 
// 	@Override
// 	public Shell getShell() {
// 		return shell;
// 	}
// }
// 
// Path: src/main/java/songo/view/View.java
// public interface View {
// 	Shell getShell();
// }


import com.google.inject.Inject;
import songo.view.MainView;
import songo.view.View;
package songo.controller;


public class MainController implements Controller {
	private final MainView view;

	@Inject
	MainController(MainView view, SearchController searchController, PlaylistController playlistController,
		PlayerController playerController) {
		this.view = view;
	}

	@Override
// Path: src/main/java/songo/view/MainView.java
// @SessionScoped
// public class MainView implements View {
// 	private final Shell shell;
// 	private final SWTUtil util;
// 	private final TabItem searchTab;
// 	private final TabItem playlistTab;
// 	private final ShellAdapter hideOnClose;
// 
// 	public TabItem getSearchTab() {
// 		return searchTab;
// 	}
// 
// 	public TabItem getPlaylistTab() {
// 		return playlistTab;
// 	}
// 
// 	@Inject
// 	MainView(final Shell shell, SWTUtil util, TrayView trayView, @SessionBus EventBus bus) {
// 		this.shell = shell;
// 		this.util = util;
// 		bus.register(this);
// 		hideOnClose = new ShellAdapter() {
// 			@Override
// 			public void shellClosed(ShellEvent shellEvent) {
// 				shell.setVisible(false);
// 				shellEvent.doit = false;
// 			}
// 		};
// 		shell.addShellListener(hideOnClose);
// 		shell.setText("Songo");
// 		shell.setLayout(new GridLayout());
// 		TabFolder tabs = new TabFolder(shell, SWT.NONE);
// 		tabs.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
// 		playlistTab = new TabItem(tabs, SWT.NONE);
// 		playlistTab.setText("Playlist");
// 		searchTab = new TabItem(tabs, SWT.NONE);
// 		searchTab.setText("Search");
// 		tabs.setSelection(1);
// 		trayView.setShell(shell);
// 	}
// 
// 	@Subscribe
// 	public void restore(TrayView.Restore e) {
// 		shell.setVisible(!shell.getVisible());
// 	}
// 
// 	@Subscribe
// 	public void close(TrayView.Exit e) {
// 		shell.removeShellListener(hideOnClose);
// 		util.exitOnClose(shell);
// 		shell.close();
// 	}
// 
// 	@Override
// 	public Shell getShell() {
// 		return shell;
// 	}
// }
// 
// Path: src/main/java/songo/view/View.java
// public interface View {
// 	Shell getShell();
// }


// Path: src/main/java/songo/controller/MainController.java
import com.google.inject.Inject;
import songo.view.MainView;
import songo.view.View;

package songo.controller;


public class MainController implements Controller {
	private final MainView view;

	@Inject
	MainController(MainView view, SearchController searchController, PlaylistController playlistController,
		PlayerController playerController) {
		this.view = view;
	}

	@Override
	public View getView() {