/* * Copyright (c) 2012 Chris Ellison, Mike Deats, Liron Yahdav, Ryan Neal, * Brandon Sutherlin, Scott Griffin * * This software is released under the MIT license * (http://www.opensource.org/licenses/mit-license.php) * * Created on Feb 18, 2012 */ package edu.cmu.sv.arinc838.ui; import java.io.BufferedReader; import java.io.InputStreamReader; import edu.cmu.sv.arinc838.dao.SoftwareDefinitionFileDao; import edu.cmu.sv.arinc838.ui.item.MenuItem; public class MenuRunner { private static final String DASHED_LINE = "-------------------"; private SoftwareDefinitionFileDao sdfDao; private final BufferedReader br; private MenuRunner() { br = new BufferedReader(new InputStreamReader(System.in)); sdfDao = new SoftwareDefinitionFileDao(); } private void runMenu(MenuItem[] menuItems, String header) { while (menuItems != null && menuItems.length > 0) { StringBuffer sb = new StringBuffer(); if (header != null) { sb.append(DASHED_LINE); sb.append(header + "\n"); } for (int i = 0; i < menuItems.length; ++i) { sb.append(i + ": " + menuItems[i].getPrompt() + "\n"); } System.out.println("\n\n" + sb); System.out.print("Please make a selection: "); MenuItem[] subMenuItems = null; String subHeader = null; try { int convertedValue = inInt(br); MenuItem itemToDo = menuItems[convertedValue]; subMenuItems = itemToDo.execute(sdfDao); subHeader = itemToDo.getHeader (); } catch (Exception e) { // try again? e.printStackTrace(); } if (subMenuItems == null) { // null is used to indicate breakout break; } else { // empty indicates loop, otherwise exec the menu runMenu(subMenuItems, subHeader); } System.out.flush(); } } public static int inInt(BufferedReader br) throws Exception { String inString = br.readLine(); int value = -1; if(inString != null) { value = Integer.valueOf(inString.trim()).intValue(); } return value; } public static void main(String[] args) { MenuRunner mr = new MenuRunner(); mr.runMenu(new InitialMenu().getItems(), null); } }