paletteProvider.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. import { assign } from "min-dash"
  2. /**
  3. * A palette provider for BPMN 2.0 elements.
  4. */
  5. export default function PaletteProvider (palette, create, elementFactory, spaceTool, lassoTool, handTool, globalConnect, translate) {
  6. this._palette = palette
  7. this._create = create
  8. this._elementFactory = elementFactory
  9. this._spaceTool = spaceTool
  10. this._lassoTool = lassoTool
  11. this._handTool = handTool
  12. this._globalConnect = globalConnect
  13. this._translate = translate
  14. palette.registerProvider(this)
  15. }
  16. PaletteProvider.$inject = ["palette", "create", "elementFactory", "spaceTool", "lassoTool", "handTool", "globalConnect", "translate"]
  17. PaletteProvider.prototype.getPaletteEntries = function () {
  18. const actions = {},
  19. create = this._create,
  20. elementFactory = this._elementFactory,
  21. spaceTool = this._spaceTool,
  22. lassoTool = this._lassoTool,
  23. handTool = this._handTool,
  24. globalConnect = this._globalConnect,
  25. translate = this._translate
  26. function createAction (type, group, className, title, options) {
  27. function createListener (event) {
  28. const shape = elementFactory.createShape(assign({ type: type }, options))
  29. if (options) {
  30. shape.businessObject.di.isExpanded = options.isExpanded
  31. }
  32. create.start(event, shape)
  33. }
  34. const shortType = type.replace(/^bpmn:/, '')
  35. return {
  36. group: group,
  37. className: className,
  38. title: title || translate("Create {type}", { type: shortType }),
  39. action: {
  40. dragstart: createListener,
  41. click: createListener
  42. }
  43. }
  44. }
  45. function createSubprocess (event) {
  46. const subProcess = elementFactory.createShape({
  47. type: 'bpmn:SubProcess',
  48. x: 0,
  49. y: 0,
  50. isExpanded: true
  51. })
  52. const startEvent = elementFactory.createShape({
  53. type: 'bpmn:StartEvent',
  54. x: 40,
  55. y: 82,
  56. parent: subProcess
  57. })
  58. create.start(event, [subProcess, startEvent], {
  59. hints: {
  60. autoSelect: [startEvent]
  61. }
  62. })
  63. }
  64. function createParticipant (event) {
  65. create.start(event, elementFactory.createParticipantShape())
  66. }
  67. assign(actions, {
  68. "hand-tool": {
  69. group: "tools",
  70. className: "bpmn-icon-hand-tool",
  71. title: translate("Activate the hand tool"),
  72. action: {
  73. click: function (event) {
  74. handTool.activateHand(event)
  75. }
  76. }
  77. },
  78. "lasso-tool": {
  79. group: "tools",
  80. className: "bpmn-icon-lasso-tool",
  81. title: translate("Activate the lasso tool"),
  82. action: {
  83. click: function (event) {
  84. lassoTool.activateSelection(event)
  85. }
  86. }
  87. },
  88. "space-tool": {
  89. group: "tools",
  90. className: "bpmn-icon-space-tool",
  91. title: translate("Activate the create/remove space tool"),
  92. action: {
  93. click: function (event) {
  94. spaceTool.activateSelection(event)
  95. }
  96. }
  97. },
  98. "global-connect-tool": {
  99. group: "tools",
  100. className: "bpmn-icon-connection-multi",
  101. title: translate("Activate the global connect tool"),
  102. action: {
  103. click: function (event) {
  104. globalConnect.toggle(event)
  105. }
  106. }
  107. },
  108. "tool-separator": {
  109. group: "tools",
  110. separator: true
  111. },
  112. "create.start-event": createAction("bpmn:StartEvent", "event", "bpmn-icon-start-event-none", translate("Create StartEvent")),
  113. "create.intermediate-event": createAction(
  114. "bpmn:IntermediateThrowEvent",
  115. "event",
  116. "bpmn-icon-intermediate-event-none",
  117. translate("Create Intermediate/Boundary Event")
  118. ),
  119. "create.end-event": createAction("bpmn:EndEvent", "event", "bpmn-icon-end-event-none", translate("Create EndEvent")),
  120. "create.exclusive-gateway": createAction("bpmn:ExclusiveGateway", "gateway", "bpmn-icon-gateway-none", translate("Create Gateway")),
  121. "create.user-task": createAction("bpmn:UserTask", "activity", "bpmn-icon-user-task", translate("Create User Task")),
  122. "create.data-object": createAction("bpmn:DataObjectReference", "data-object", "bpmn-icon-data-object", translate("Create DataObjectReference")),
  123. "create.data-store": createAction("bpmn:DataStoreReference", "data-store", "bpmn-icon-data-store", translate("Create DataStoreReference")),
  124. "create.subprocess-expanded": {
  125. group: "activity",
  126. className: "bpmn-icon-subprocess-expanded",
  127. title: translate("Create expanded SubProcess"),
  128. action: {
  129. dragstart: createSubprocess,
  130. click: createSubprocess
  131. }
  132. },
  133. "create.participant-expanded": {
  134. group: "collaboration",
  135. className: "bpmn-icon-participant",
  136. title: translate("Create Pool/Participant"),
  137. action: {
  138. dragstart: createParticipant,
  139. click: createParticipant
  140. }
  141. },
  142. "create.group": createAction("bpmn:Group", "artifact", "bpmn-icon-group", translate("Create Group"))
  143. })
  144. return actions
  145. }