package guis;
import java.io.File;
import java.io.IOException;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Shell;
import core.GameState;
import core.GameState.PAGE;
import core.DungeonConstants;
import core.Main;
public class MenuBar {
private Shell m_shell;
public MenuBar(final Shell shell, HomeWindow parent, PAGE page)
{
m_shell = shell;
Menu menuBar = new Menu(shell, SWT.BAR);
MenuItem cascadeFileMenu = new MenuItem(menuBar, SWT.CASCADE);
cascadeFileMenu.setText("&File");
// File Menu
Menu fileMenu = new Menu(shell, SWT.DROP_DOWN);
cascadeFileMenu.setMenu(fileMenu);
MenuItem cascadeNavigateMenu;
Menu navigateMenu;
MenuItem homeScreen;
MenuItem player;
MenuItem dungeonMaster;
MenuItem open;
switch (page) {
case HomeScreen:
cascadeNavigateMenu = new MenuItem(menuBar, SWT.CASCADE);
cascadeNavigateMenu.setText("&Navigate");
//Navigate Menu
navigateMenu = new Menu(shell, SWT.DROP_DOWN);
cascadeNavigateMenu.setMenu(navigateMenu);
// Home screen
homeScreen = new MenuItem(navigateMenu, SWT.PUSH);
homeScreen.setText("&Home");
homeScreen.addSelectionListener(new SelectionAdapter()
{
public void widgetSelected(SelectionEvent e)
{
parent.navigateToHomeScreen();
}});
//Player screen
player = new MenuItem(navigateMenu, SWT.PUSH);
player.setText("&Players");
player.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
HomeWindow.loadCharacters();
parent.navigateToPlayerScreen();
}
});
//Dungeon Master screen
dungeonMaster = new MenuItem(navigateMenu, SWT.PUSH);
dungeonMaster.setText("&Dungeon Masters");
dungeonMaster.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
parent.navigateToDungeonMasterScreen();
}
});
break;
case DungeonMasterScreen:
//Open
open = new MenuItem(fileMenu, SWT.PUSH);
open.setText("&Open");
open.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
FileDialog dialog = new FileDialog(m_shell, SWT.OPEN);
dialog.setText("Open");
dialog.setFilterPath(DungeonConstants.SAVEDDUNGEONSDIR.toString());
String[] filterExt = { "*.svg"};
dialog.setFilterExtensions(filterExt);
String selected = dialog.open();
if (selected == null || selected.equals("")) {
return;
}
String svgToLoad = "file:///" + selected;
new DungeonViewer(svgToLoad);
}
});
cascadeNavigateMenu = new MenuItem(menuBar, SWT.CASCADE);
cascadeNavigateMenu.setText("&Navigate");
//Navigate Menu
navigateMenu = new Menu(shell, SWT.DROP_DOWN);
cascadeNavigateMenu.setMenu(navigateMenu);
// Home screen
homeScreen = new MenuItem(navigateMenu, SWT.PUSH);
homeScreen.setText("&Home");
homeScreen.addSelectionListener(new SelectionAdapter()
{
public void widgetSelected(SelectionEvent e)
{
parent.navigateToHomeScreen();
}});
//Player screen
player = new MenuItem(navigateMenu, SWT.PUSH);
player.setText("&Players");
player.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
HomeWindow.loadCharacters();
parent.navigateToPlayerScreen();
}
});
//Dungeon Master screen
dungeonMaster = new MenuItem(navigateMenu, SWT.PUSH);
dungeonMaster.setText("&Dungeon Masters");
dungeonMaster.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
parent.navigateToDungeonMasterScreen();
}
});
break;
case PlayerScreen:
cascadeNavigateMenu = new MenuItem(menuBar, SWT.CASCADE);
cascadeNavigateMenu.setText("&Navigate");
//Navigate Menu
navigateMenu = new Menu(shell, SWT.DROP_DOWN);
cascadeNavigateMenu.setMenu(navigateMenu);
// Home screen
homeScreen = new MenuItem(navigateMenu, SWT.PUSH);
homeScreen.setText("&Home");
homeScreen.addSelectionListener(new SelectionAdapter()
{
public void widgetSelected(SelectionEvent e)
{
parent.navigateToHomeScreen();
}});
//Player screen
player = new MenuItem(navigateMenu, SWT.PUSH);
player.setText("&Players");
player.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
HomeWindow.loadCharacters();
parent.navigateToPlayerScreen();
}
});
//Dungeon Master screen
dungeonMaster = new MenuItem(navigateMenu, SWT.PUSH);
dungeonMaster.setText("&Dungeon Masters");
dungeonMaster.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
parent.navigateToDungeonMasterScreen();
}
});
//TODO: Matt, populate this
break;
case DungeonGenerationConfigScreen:
cascadeNavigateMenu = new MenuItem(menuBar, SWT.CASCADE);
cascadeNavigateMenu.setText("&Navigate");
//Navigate Menu
navigateMenu = new Menu(shell, SWT.DROP_DOWN);
cascadeNavigateMenu.setMenu(navigateMenu);
// Home screen
homeScreen = new MenuItem(navigateMenu, SWT.PUSH);
homeScreen.setText("&Home");
homeScreen.addSelectionListener(new SelectionAdapter()
{
public void widgetSelected(SelectionEvent e)
{
parent.navigateToHomeScreen();
}});
//Player screen
player = new MenuItem(navigateMenu, SWT.PUSH);
player.setText("&Players");
player.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
HomeWindow.loadCharacters();
parent.navigateToPlayerScreen();
}
});
//Dungeon Master screen
dungeonMaster = new MenuItem(navigateMenu, SWT.PUSH);
dungeonMaster.setText("&Dungeon Masters");
dungeonMaster.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
parent.navigateToDungeonMasterScreen();
}
});
break;
case DungeonViewerScreen:
//Open
open = new MenuItem(fileMenu, SWT.PUSH);
open.setText("&Open");
open.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
FileDialog dialog = new FileDialog(m_shell, SWT.OPEN);
dialog.setText("Open");
dialog.setFilterPath(DungeonConstants.SAVEDDUNGEONSDIR.toString());
String[] filterExt = { "*.svg"};
dialog.setFilterExtensions(filterExt);
String selected = dialog.open();
if (selected == null || selected.equals("")) {
return;
}
String svgToLoad = "file:///" + selected;
new DungeonViewer(svgToLoad);
}
});
//Save
MenuItem saveItem = new MenuItem(fileMenu, SWT.PUSH);
saveItem.setText("&Save");
saveItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
FileDialog dialog = new FileDialog(m_shell, SWT.SAVE);
dialog.setText("Save");
dialog.setFilterPath(DungeonConstants.SAVEDDUNGEONSDIR.toString());
String[] filterExt = { "*.svg"};
dialog.setFilterExtensions(filterExt);
String selected = dialog.open();
if (selected == null || selected.equals("")) {
return;
}
File toBeRenamed = new File(DungeonConstants.SAVEDDUNGEONSDIR, "generatedDungeon.svg");
File newFile = new File(selected);
try {
if(newFile.exists()) throw new java.io.IOException("file exists");
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
boolean success = toBeRenamed.renameTo(newFile);
if (!success) {
System.out.println("fail");
}
}
});
break;
case CharacterSheetScreen:
break;
default:
break;
}
MenuItem cascadeToolsMenu = new MenuItem(menuBar, SWT.CASCADE);
cascadeToolsMenu.setText("&Tools");
//Tools Menu
Menu toolsMenu = new Menu(shell, SWT.DROP_DOWN);
cascadeToolsMenu.setMenu(toolsMenu);
//Help
MenuItem helpItem = new MenuItem(fileMenu, SWT.PUSH);
helpItem.setText("&Help");
helpItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
//TODO: POPULATE
}
});
//Exit
if(page != GameState.PAGE.DungeonViewerScreen){
MenuItem exitItem = new MenuItem(fileMenu, SWT.PUSH);
exitItem.setText("&Exit");
exitItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
shell.getDisplay().dispose();
Main.exitProgram();
}
});
}
else{
MenuItem closeItem = new MenuItem(fileMenu, SWT.PUSH);
closeItem.setText("&Close");
closeItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
shell.dispose();
}
});
}
//Die Roller
MenuItem dieRollerItem = new MenuItem(toolsMenu, SWT.PUSH);
dieRollerItem.setText("&Die Roller");
dieRollerItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
new DieWindow(shell.getDisplay());
}
});
//Notepad
MenuItem notepadItem = new MenuItem(toolsMenu, SWT.PUSH);
notepadItem.setText("&Notepad");
notepadItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
new Notepad();
}
});
//Spell Wizard
MenuItem spellWizardItem = new MenuItem(toolsMenu, SWT.PUSH);
spellWizardItem.setText("&Spell Wizard");
spellWizardItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
new SpellWizard(shell.getDisplay());
}
});
//Item Wizard
MenuItem itemWizardItem = new MenuItem(toolsMenu, SWT.PUSH);
itemWizardItem.setText("&Item Wizard");
itemWizardItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
new ItemWizard(shell.getDisplay());
}
});
//Ability Wizard
MenuItem itemAbilityItem = new MenuItem(toolsMenu, SWT.PUSH);
itemAbilityItem.setText("&Ability Wizard");
itemAbilityItem.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent e)
{
new AbilityWizard(shell.getDisplay());
}
});
//Feat Wizard
MenuItem itemFeatItem = new MenuItem(toolsMenu, SWT.PUSH);
itemFeatItem.setText("&Feat Wizard");
itemFeatItem.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent e)
{
new FeatWizard(shell.getDisplay());
}
});
//Character Generator
MenuItem charGenItem = new MenuItem(toolsMenu, SWT.PUSH);
charGenItem.setText("&Character Generator");
charGenItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
new CharacterWizard(shell.getDisplay());
}
});
shell.setMenuBar(menuBar);
}
}