cs.pro.viewport = {

	viewport: null,

	show: function()
	{
		if(cs.pro.viewport.viewport == null)
		{
			cs.pro.viewport.viewport = new cs.pro.Viewport();
		}
		cs.pro.viewport.viewport.login();
	},

	hide: function()
	{
		if(cs.pro.viewport.viewport != null)
		{
			cs.pro.viewport.viewport.logout();
		}
	},

	refreshGrid: function()
	{
		cs.pro.viewport.viewport.projectGrid.store.load();
	},

	getSelectedFile: function()
	{
		var selected = cs.pro.viewport.viewport.projectGrid.getSelectionModel().getSelected();
		if(selected != null)
		{
			return selected;
		}
		else
		{
			Ext.MessageBox.alert('No File Selected', 'Please select a file.');
			return false;
		}
	},

	updateProgress: function(id, progress)
	{
		cs.pro.viewport.viewport.jobTabPanel.updateProgress(id, progress);
	},

	jobCrash: function(id, message)
	{
		cs.pro.viewport.viewport.jobTabPanel.jobCrash(id, message);
	},

	addTab: function(filename, desc, job_id)
	{
		cs.pro.viewport.viewport.jobTabPanel.addTab(filename, desc, job_id);	
	}
};

cs.pro.Viewport = Ext.extend(Ext.Viewport, {

	initComponent: function()
	{
		this.pageHeader = new cs.pro.PageHeader();
		this.projectGrid = new cs.pro.ProjectGrid();
		this.processTabPanel = new cs.pro.ProcessTabPanel();
		this.jobTabPanel = new cs.pro.JobTabPanel();
	
		Ext.apply(this, {
			layout: 'border',
			items: [
				this.pageHeader,
				this.projectGrid,
				this.processTabPanel,
				this.jobTabPanel
			]
		});

		cs.pro.Viewport.superclass.initComponent.apply(this, arguments);
	},
	
	logout: function()
	{
		this.projectGrid.logout();
		this.processTabPanel.logout();
		this.jobTabPanel.logout();
		this.pageHeader.logout();
	},
	
	login: function()
	{
		this.pageHeader.login();
		this.doLayout();
		this.projectGrid.login();
		this.processTabPanel.login();
		this.jobTabPanel.login();
	}
});
