PopupMenuProvider.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. /**
  2. * A basic provider that may be extended to provide entries for the popup menu.
  3. *
  4. * Extensions should implement the methods getEntries and register. Optionally
  5. * the method getHeaderEntries can be implemented.
  6. */
  7. export default function PopupMenuProvider(popupMenu) {
  8. this._popupMenu = popupMenu;
  9. this.register();
  10. }
  11. PopupMenuProvider.$inject = [ 'popupMenu' ];
  12. /**
  13. * This method should implement the creation or update of a map of entry objects.
  14. *
  15. * @param {djs.model.Base} element
  16. *
  17. * The following example shows how to replace any entries returned
  18. * by previous providers with one entry which alerts the id of the current selected
  19. * element, when clicking on the entry.
  20. *
  21. * @example
  22. * PopupMenuProvider.getPopupMenuEntries = function(element) {
  23. * return function(entries) {
  24. * return {
  25. * alert: {
  26. * label: 'Alert element ID',
  27. * className: 'alert',
  28. * action: function () {
  29. * alert(element.id);
  30. * }
  31. * }
  32. * };
  33. * };
  34. */
  35. PopupMenuProvider.getPopupMenuEntries = function(element) {};
  36. /**
  37. * @deprecated
  38. * This method should implement the creation of a list of entry objects.
  39. *
  40. * @param {djs.model.Base} element
  41. *
  42. * The following example contains one entry which alerts the id of the current selected
  43. * element, when clicking on the entry.
  44. *
  45. * @example
  46. * PopupMenuProvider.getEntries = function(element) {
  47. * var entries = [{
  48. * id: 'alert',
  49. * label: 'Alert element ID',
  50. * className: 'alert',
  51. * action: function () {
  52. * alert(element.id);
  53. * }
  54. * }];
  55. *
  56. * return entries;
  57. * };
  58. */
  59. PopupMenuProvider.getEntries = function(element) {};
  60. /**
  61. * This method should implement the creation of a list of header entry objects.
  62. *
  63. * @param {djs.model.Base} element
  64. *
  65. * The following example contains one button as header entry which alerts a string
  66. * when clicking on it.
  67. *
  68. * @example
  69. * PopupMenuProvider.getHeaderEntries = function(element) {
  70. * var headerEntries = [{
  71. * id: 'my-button',
  72. * className: 'icon-button',
  73. * title: 'My button',
  74. * active: true,
  75. * action: function() {
  76. * alert('Button has been clicked');
  77. * }
  78. * }];
  79. *
  80. * return headerEntries;
  81. * };
  82. */
  83. PopupMenuProvider.getHeaderEntries = function(element) {};
  84. /**
  85. * This method should implement the registration in the popup menu using an id.
  86. *
  87. * @example
  88. * PopupMenuProvider.register = function() {
  89. * this._popupMenu.registerProvider('my-provider-id', this);
  90. * }
  91. */
  92. PopupMenuProvider.register = function() {};