Toolbox
This content is for v7. Switch to the latest version for up-to-date documentation.
If you want to add your tool items in Toolbox, you need to define a toolbox JSON in your extension. The toolbox JSON files should be placed in toolbox/ folder in your extension.
my-extension/└─ toolbox/ └─ toolbox.jsonTool Group
Section titled “Tool Group”The toolbox JSON defines an array of Tool Group definitions as below:
[ { "label": "Tool Group 1", "id": "tool-group-1", "diagram-types": [ "UMLClassDiagram" ], "items": [ { "label": "Tool Item 1", "id": "tool-item-1", "icon": "icon-UMLClass", "rubberband": "rect", "command": "my:add-element", "command-arg": { "id": "UMLClass", "stereotype": "my-stereotype" } }, ... ] }, ...]label: The tool group title shown in the Toolbox.id: Unique identifier.diagram-types: A list of diagram types. The tool group will be shown only when one of the diagram-types is active. (e.g."UMLClassDiagram","UMLUseCaseDiagram", …)items: A list of tool item definitions.
Tool Item
Section titled “Tool Item”A tool item represents an element that users can create on a diagram.
label: The tool item title shown in the Toolboxid: Unique identifier of the tool item.icon: Icon CSS class name. You can specify already defined icon names (e.g."icon-UMLClass","icon-UMLPackage", …) or your own CSS class name in stylesheets of your extension.rubberband: A type of rubberband. One of"rect"(for sizable node-type elements),"line"(for edge-type elements),"point"(for fixed-size node-type elements).command: A command name to be executed.command-arg: An argument object will be passed to the command.
Command
Section titled “Command”A command used for tool item should create an element on a diagram. We strongly recommend to use app.factory.createModelAndView() function to create an element. See the section for more detail.
Toolbox will pass options object to the command. The passed options parameter contains:
diagram: The active diagram.id: The identifier of tool item.x1,y1,x2,y2: The user dragged area on the diagram.- … :
command-argare combined.
function handleAddElement (options) { options = Object.assign(options, { 'model-init': { 'stereotype': options.stereotype }, 'view-init': { 'stereotypeDisplay': 'icon', 'suppressAttributes': true, 'suppressOperations': true } }) return app.factory.createModelAndView(options)}
app.commands.register('my:add-element', handleAddElement)