MenuItemSources.ts 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. //
  2. // Copyright (c) 2014-2015, THUNDERBEAST GAMES LLC All rights reserved
  3. // LICENSE: Atomic Game Engine Editor and Tools EULA
  4. // Please see LICENSE_ATOMIC_EDITOR_AND_TOOLS.md in repository root for
  5. // license information: https://github.com/AtomicGameEngine/AtomicGameEngine
  6. //
  7. import strings = require("ui/EditorStrings");
  8. import EditorEvents = require("editor/EditorEvents");
  9. import EditorUI = require("ui/EditorUI");
  10. var UIMenuItemSource = Atomic.UIMenuItemSource;
  11. var UIMenuItem = Atomic.UIMenuItem;
  12. var StringID = strings.StringID;
  13. var srcLookup = {};
  14. export function getMenuItemSource(id: string): Atomic.UIMenuItemSource {
  15. return srcLookup[id];
  16. }
  17. function createMenuItemSourceRecursive(items: any): Atomic.UIMenuItemSource {
  18. var src = new UIMenuItemSource();
  19. for (var key in items) {
  20. if (items.hasOwnProperty(key)) {
  21. var value = items[key];
  22. if (typeof value === 'string') {
  23. src.addItem(new UIMenuItem(key, value));
  24. } else if (value == null) {
  25. // add a separator
  26. src.addItem(new UIMenuItem(key));
  27. } else if (Object.prototype.toString.call(value) === '[object Array]') {
  28. if (value.length == 1)
  29. src.addItem(new UIMenuItem(key, value[0]));
  30. else if (value.length == 2)
  31. src.addItem(new UIMenuItem(key, value[0], strings.EditorString.GetString(value[1])));
  32. else if (value.length == 3) {
  33. var str = "";
  34. if (value[1])
  35. str = strings.EditorString.GetString(value[1]);
  36. var skinBg = "";
  37. if (value[2])
  38. skinBg = value[2];
  39. src.addItem(new UIMenuItem(key, value[0], str, skinBg));
  40. }
  41. }
  42. else if (typeof value === 'object') {
  43. var subsrc = createMenuItemSourceRecursive(value);
  44. var item = new Atomic.UIMenuItem(key);
  45. item.subSource = subsrc;
  46. src.addItem(item);
  47. }
  48. }
  49. }
  50. return src;
  51. }
  52. export function createMenuItemSource(id: string, items: any): Atomic.UIMenuItemSource {
  53. srcLookup[id] = createMenuItemSourceRecursive(items);
  54. return srcLookup[id];
  55. }