package authoritymanager.client;

import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.MenuBar;
import com.google.gwt.user.client.ui.MenuItem;


public class MenuPage extends Page {
	public MenuPage(final AuthorityManagerView view) {
		super(view) ;
		
		MenuBar mnuMainBar = new MenuBar(false);
		add(mnuMainBar) ;
		
		MenuItem mnuServerStatus = new MenuItem("Server status", new Command() {
			public void execute() {
				cmdServerStatus();
			}
		});
		mnuMainBar.addItem(mnuServerStatus);
		
		MenuItem mnuUpload = new MenuItem("Upload data", new Command() {
			public void execute() {
				cmdUpload();
			}
		});
		mnuMainBar.addItem(mnuUpload);

		MenuItem mnuRegister = new MenuItem("Register", new Command() {
			public void execute() {
				cmdRegister();
			}
		});
		mnuMainBar.addItem(mnuRegister);

		

		MenuItem mnuSearch = new MenuItem("Search", new Command() {
			public void execute() {
				cmdSearch() ;
			}
		});
		mnuMainBar.addItem(mnuSearch) ;
		
		MenuItem mnuManageFilms = new MenuItem("Film works", new Command() {
			public void execute() {
				cmdManageType(ClientConfiguration.MOVIE_TAG);
			}
		});
		MenuItem mnuManagePersons = new MenuItem("Persons", new Command() {
			public void execute() {
				cmdManageType(ClientConfiguration.PERSON_TAG);
			}
		});
		MenuItem mnuManageCorporates = new MenuItem("Corporate bodies",
				new Command() {
					public void execute() {
						cmdManageType(ClientConfiguration.CORPORATION_TAG);
					}
				});
		MenuBar mnuManageBar = new MenuBar(true);
		mnuManageBar.addItem(mnuManageFilms);
		mnuManageBar.addItem(mnuManagePersons);
		mnuManageBar.addItem(mnuManageCorporates);
		// mnuManageBar.setAutoOpen(true) ;
		MenuItem mnuManage = new MenuItem("Manage candidates", mnuManageBar);
		mnuMainBar.addItem(mnuManage);

		MenuItem mnuAddFilm = new MenuItem("Film work", new Command() {
			public void execute() {
				cmdAddRecord(ClientConfiguration.MOVIE_TAG);
			}
		});
		MenuItem mnuAddPerson = new MenuItem("Person", new Command() {
			public void execute() {
				cmdAddRecord(ClientConfiguration.PERSON_TAG);
			}
		});
		MenuItem mnuAddCorporate = new MenuItem("Corporate body", new Command() {
					public void execute() {
						cmdAddRecord(ClientConfiguration.CORPORATION_TAG);
					}
				});
		MenuItem mnuAddItem = new MenuItem("Item", new Command() {
			public void execute() {
				cmdAddRecord(ClientConfiguration.ITEM_TAG);
			}
		});
		MenuBar mnuAddBar = new MenuBar(true);

		mnuAddBar.addItem(mnuAddFilm);
		mnuAddBar.addItem(mnuAddPerson);
		mnuAddBar.addItem(mnuAddCorporate);
		mnuAddBar.addItem(mnuAddItem);
		// mnuAddBar.setAutoOpen(true) ;
		MenuItem mnuAdd = new MenuItem("Add record", mnuAddBar);
		mnuMainBar.addItem(mnuAdd);

		MenuItem mnuStatus = new MenuItem("Statistics", new Command() {
			public void execute() {
				cmdStatistics();
			}
		});
		mnuMainBar.addItem(mnuStatus);

		MenuItem mnuLogout = new MenuItem("Logout", new Command() {
			public void execute() {
				cmdLogout();
			}
		});
		mnuMainBar.addItem(mnuLogout);

		mnuMainBar.setAutoOpen(true);
		mnuMainBar.setAnimationEnabled(true);		
	}

	protected void cmdStatistics() {
		view.showStatisticsPage() ;
	}

	protected void cmdLogout() {
		view.showLogoutPage() ;		
	}

	protected void cmdAddRecord(String itemType) {
		view.showAddRecordPage(itemType) ;
		
	}

	protected void cmdManageType(String itemType) {
		view.showManagePage(itemType) ;
		
	}

	protected void cmdSearch() {
		view.showSearchPage() ;
	}

	protected void cmdServerStatus() {
		view.showServerStatusPage() ;
	}

	protected void cmdRegister() {
		view.showRegisterPage() ;
	}

	protected void cmdUpload() {
		view.showUploadPage() ;
	}
}
