MenuItemSources.ts 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import strings = require("ui/EditorStrings");
  2. import EditorEvents = require("editor/EditorEvents");
  3. import EditorUI = require("ui/EditorUI");
  4. var UIMenuItemSource = Atomic.UIMenuItemSource;
  5. var UIMenuItem = Atomic.UIMenuItem;
  6. var StringID = strings.StringID;
  7. var srcLookup = {};
  8. export function getMenuItemSource(id: string): Atomic.UIMenuItemSource {
  9. return srcLookup[id];
  10. }
  11. function createMenuItemSourceRecursive(items: any): Atomic.UIMenuItemSource {
  12. var src = new UIMenuItemSource();
  13. for (var key in items) {
  14. if (items.hasOwnProperty(key)) {
  15. var value = items[key];
  16. if (typeof value === 'string') {
  17. src.addItem(new UIMenuItem(key, value));
  18. } else if (value == null) {
  19. // add a separator
  20. src.addItem(new UIMenuItem(key));
  21. } else if (Object.prototype.toString.call(value) === '[object Array]') {
  22. if (value.length == 1)
  23. src.addItem(new UIMenuItem(key, value[0]));
  24. else if (value.length == 2)
  25. src.addItem(new UIMenuItem(key, value[0], strings.EditorString.GetString(value[1])));
  26. else if (value.length == 3) {
  27. var str = "";
  28. if (value[1])
  29. str = strings.EditorString.GetString(value[1]);
  30. var skinBg = "";
  31. if (value[2])
  32. skinBg = value[2];
  33. src.addItem(new UIMenuItem(key, value[0], str, skinBg));
  34. }
  35. }
  36. else if (typeof value === 'object') {
  37. var subsrc = createMenuItemSourceRecursive(value);
  38. var item = new Atomic.UIMenuItem(key);
  39. item.subSource = subsrc;
  40. src.addItem(item);
  41. }
  42. }
  43. }
  44. return src;
  45. }
  46. export function createMenuItemSource(id: string, items: any): Atomic.UIMenuItemSource {
  47. srcLookup[id] = createMenuItemSourceRecursive(items);
  48. return srcLookup[id];
  49. }