/** * Sample plugin. */ Draw.loadPlugin(function(ui) { var graph = ui.editor.graph; var enabled = true; var counter = 0; // Creates the shape for the shape number and puts it into the draw pane var redrawShape = graph.cellRenderer.redrawShape; graph.cellRenderer.redrawShape = function(state, force, rendering) { var result = redrawShape.apply(this, arguments); if (result && enabled && graph.model.isVertex(state.cell)) { if (state.shape != null && state.secondLabel == null) { var value = '
' + (++counter) + '
'; state.secondLabel = new mxText(value, new mxRectangle(), mxConstants.ALIGN_LEFT, mxConstants.ALIGN_BOTTOM); // Styles the label state.secondLabel.size = 12; state.secondLabel.dialect = state.shape.dialect; state.secondLabel.dialect = mxConstants.DIALECT_STRICTHTML; graph.cellRenderer.initializeLabel(state, state.secondLabel); } } if (state.secondLabel != null) { var scale = graph.getView().getScale(); var bounds = new mxRectangle(state.x + state.width - 4 * scale, state.y + 4 * scale, 0, 0); state.secondLabel.state = state; state.secondLabel.scale = scale; state.secondLabel.bounds = bounds; state.secondLabel.redraw(); } return result; }; // Destroys the shape number var destroy = graph.cellRenderer.destroy; graph.cellRenderer.destroy = function(state) { destroy.apply(this, arguments); if (state.secondLabel != null) { state.secondLabel.destroy(); state.secondLabel = null; } }; graph.cellRenderer.getShapesForState = function(state) { return [state.shape, state.text, state.secondLabel, state.control]; }; var validate = graph.view.validate; graph.view.validate = function() { counter = 0; validate.apply(this, arguments); }; // Extends View menu mxResources.parse('number=Number'); // Adds action var action = ui.actions.addAction('number...', function() { enabled = !enabled; graph.refresh(); }); action.setToggleAction(true); action.setSelectedCallback(function() { return enabled; }); var menu = ui.menus.get('view'); var oldFunct = menu.funct; menu.funct = function(menu, parent) { oldFunct.apply(this, arguments); ui.menus.addMenuItems(menu, ['-', 'number'], parent); }; });