]> git.mxchange.org Git - addressbook-lib.git/blobdiff - src/org/mxchange/addressbook/menu/MenuTools.java
Moved project files again + lib/jcore.jar added. This makes jcore more decentralized...
[addressbook-lib.git] / src / org / mxchange / addressbook / menu / MenuTools.java
diff --git a/src/org/mxchange/addressbook/menu/MenuTools.java b/src/org/mxchange/addressbook/menu/MenuTools.java
new file mode 100644 (file)
index 0000000..30d8164
--- /dev/null
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2015 Roland Haeder
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+package org.mxchange.addressbook.menu;
+
+import java.util.Iterator;
+import java.util.Map;
+import org.apache.logging.log4j.Logger;
+import org.mxchange.addressbook.BaseAddressbookSystem;
+import org.mxchange.addressbook.menu.item.SelectableMenuItem;
+
+/**
+ *
+ * @author Roland Haeder
+ */
+public class MenuTools extends BaseAddressbookSystem {
+
+       /**
+        * Gets an array with all available access keys back from given menu map.
+        * This can later be handle to the client's enterChar() method.
+        *
+        * @param menus A Map with all menus and their entries
+        * @param menuType Menu type
+        * @return An array with available access chars
+        */
+       public static char[] getAccessKeysFromMenuMap (final Map<String, Menu> menus, final String menuType) {
+               // Get logger
+               Logger logger = new MenuTools().getLogger();
+
+               // First search for the proper menu class
+               Menu menu = menus.get(menuType);
+
+               // Is it there?
+               if (!(menu instanceof Menu)) {
+                       // Not found
+                       // @todo Rewrite to exception
+                       logger.error("Menu '" + menuType + "' not found.");
+                       System.exit(1);
+               }
+
+               // Get iterator
+               Iterator<SelectableMenuItem> iterator = menu.getMenuItemsIterator();
+
+               // Init return array and counter 'i'
+               char[] accessKeys = new char[menu.getMenuItemsCount()];
+               int i = 0;
+
+               // Now "walk" through all menu entries
+               while (iterator.hasNext()) {
+                       // Get item
+                       SelectableMenuItem item = iterator.next();
+                       //* NOISY-DEBUG: */ logger.debug("item=" + item);
+
+                       // Get access key from item and add it to the array
+                       accessKeys[i] = item.getAccessKey();
+                       //* NOISY-DEBUG: */ logger.debug("accessKeys[" + i + "]=" + accessKeys[i]);
+
+                       // Increment counter
+                       i++;
+               }
+
+               // Return finished array
+               return accessKeys;
+       }
+}