185 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
		
		
			
		
	
	
			185 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| 
								 | 
							
								<!--
							 | 
						||
| 
								 | 
							
								  Copyright (c) 2006-2013, JGraph Ltd
							 | 
						||
| 
								 | 
							
								  
							 | 
						||
| 
								 | 
							
								  Toolbar example for mxGraph. This example demonstrates using
							 | 
						||
| 
								 | 
							
								  existing cells as templates for creating new cells.
							 | 
						||
| 
								 | 
							
								-->
							 | 
						||
| 
								 | 
							
								<html>
							 | 
						||
| 
								 | 
							
								<head>
							 | 
						||
| 
								 | 
							
									<title>Toolbar example for mxGraph</title>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									<!-- Sets the basepath for the library if not in same directory -->
							 | 
						||
| 
								 | 
							
									<script type="text/javascript">
							 | 
						||
| 
								 | 
							
										mxBasePath = '../src';
							 | 
						||
| 
								 | 
							
									</script>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									<!-- Loads and initializes the library -->
							 | 
						||
| 
								 | 
							
									<script type="text/javascript" src="../src/js/mxClient.js"></script>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									<!-- Example code -->
							 | 
						||
| 
								 | 
							
									<script type="text/javascript">
							 | 
						||
| 
								 | 
							
										// Program starts here. Creates a sample graph in the
							 | 
						||
| 
								 | 
							
										// DOM node with the specified ID. This function is invoked
							 | 
						||
| 
								 | 
							
										// from the onLoad event handler of the document (see below).
							 | 
						||
| 
								 | 
							
										function main()
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											// Defines an icon for creating new connections in the connection handler.
							 | 
						||
| 
								 | 
							
											// This will automatically disable the highlighting of the source vertex.
							 | 
						||
| 
								 | 
							
											mxConnectionHandler.prototype.connectImage = new mxImage('images/connector.gif', 16, 16);
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
											// Checks if browser is supported
							 | 
						||
| 
								 | 
							
											if (!mxClient.isBrowserSupported())
							 | 
						||
| 
								 | 
							
											{
							 | 
						||
| 
								 | 
							
												// Displays an error message if the browser is
							 | 
						||
| 
								 | 
							
												// not supported.
							 | 
						||
| 
								 | 
							
												mxUtils.error('Browser is not supported!', 200, false);
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
											else
							 | 
						||
| 
								 | 
							
											{
							 | 
						||
| 
								 | 
							
												// Creates the div for the toolbar
							 | 
						||
| 
								 | 
							
												var tbContainer = document.createElement('div');
							 | 
						||
| 
								 | 
							
												tbContainer.style.position = 'absolute';
							 | 
						||
| 
								 | 
							
												tbContainer.style.overflow = 'hidden';
							 | 
						||
| 
								 | 
							
												tbContainer.style.padding = '2px';
							 | 
						||
| 
								 | 
							
												tbContainer.style.left = '0px';
							 | 
						||
| 
								 | 
							
												tbContainer.style.top = '26px';
							 | 
						||
| 
								 | 
							
												tbContainer.style.width = '24px';
							 | 
						||
| 
								 | 
							
												tbContainer.style.bottom = '0px';
							 | 
						||
| 
								 | 
							
												
							 | 
						||
| 
								 | 
							
												document.body.appendChild(tbContainer);
							 | 
						||
| 
								 | 
							
											
							 | 
						||
| 
								 | 
							
												// Creates new toolbar without event processing
							 | 
						||
| 
								 | 
							
												var toolbar = new mxToolbar(tbContainer);
							 | 
						||
| 
								 | 
							
												toolbar.enabled = false
							 | 
						||
| 
								 | 
							
												
							 | 
						||
| 
								 | 
							
												// Creates the div for the graph
							 | 
						||
| 
								 | 
							
												container = document.createElement('div');
							 | 
						||
| 
								 | 
							
												container.style.position = 'absolute';
							 | 
						||
| 
								 | 
							
												container.style.overflow = 'hidden';
							 | 
						||
| 
								 | 
							
												container.style.left = '24px';
							 | 
						||
| 
								 | 
							
												container.style.top = '26px';
							 | 
						||
| 
								 | 
							
												container.style.right = '0px';
							 | 
						||
| 
								 | 
							
												container.style.bottom = '0px';
							 | 
						||
| 
								 | 
							
												container.style.background = 'url("editors/images/grid.gif")';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
												document.body.appendChild(container);
							 | 
						||
| 
								 | 
							
												
							 | 
						||
| 
								 | 
							
												// Workaround for Internet Explorer ignoring certain styles
							 | 
						||
| 
								 | 
							
												if (mxClient.IS_QUIRKS)
							 | 
						||
| 
								 | 
							
												{
							 | 
						||
| 
								 | 
							
													document.body.style.overflow = 'hidden';
							 | 
						||
| 
								 | 
							
													new mxDivResizer(tbContainer);
							 | 
						||
| 
								 | 
							
													new mxDivResizer(container);
							 | 
						||
| 
								 | 
							
												}
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
												// Creates the model and the graph inside the container
							 | 
						||
| 
								 | 
							
												// using the fastest rendering available on the browser
							 | 
						||
| 
								 | 
							
												var model = new mxGraphModel();
							 | 
						||
| 
								 | 
							
												var graph = new mxGraph(container, model);
							 | 
						||
| 
								 | 
							
												graph.dropEnabled = true;
							 | 
						||
| 
								 | 
							
												
							 | 
						||
| 
								 | 
							
												// Matches DnD inside the graph
							 | 
						||
| 
								 | 
							
												mxDragSource.prototype.getDropTarget = function(graph, x, y)
							 | 
						||
| 
								 | 
							
												{
							 | 
						||
| 
								 | 
							
													var cell = graph.getCellAt(x, y);
							 | 
						||
| 
								 | 
							
													
							 | 
						||
| 
								 | 
							
													if (!graph.isValidDropTarget(cell))
							 | 
						||
| 
								 | 
							
													{
							 | 
						||
| 
								 | 
							
														cell = null;
							 | 
						||
| 
								 | 
							
													}
							 | 
						||
| 
								 | 
							
													
							 | 
						||
| 
								 | 
							
													return cell;
							 | 
						||
| 
								 | 
							
												};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
												// Enables new connections in the graph
							 | 
						||
| 
								 | 
							
												graph.setConnectable(true);
							 | 
						||
| 
								 | 
							
												graph.setMultigraph(false);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
												// Stops editing on enter or escape keypress
							 | 
						||
| 
								 | 
							
												var keyHandler = new mxKeyHandler(graph);
							 | 
						||
| 
								 | 
							
												var rubberband = new mxRubberband(graph);
							 | 
						||
| 
								 | 
							
												
							 | 
						||
| 
								 | 
							
												var addVertex = function(icon, w, h, style)
							 | 
						||
| 
								 | 
							
												{
							 | 
						||
| 
								 | 
							
													var vertex = new mxCell(null, new mxGeometry(0, 0, w, h), style);
							 | 
						||
| 
								 | 
							
													vertex.setVertex(true);
							 | 
						||
| 
								 | 
							
												
							 | 
						||
| 
								 | 
							
													addToolbarItem(graph, toolbar, vertex, icon);
							 | 
						||
| 
								 | 
							
												};
							 | 
						||
| 
								 | 
							
												
							 | 
						||
| 
								 | 
							
												addVertex('editors/images/swimlane.gif', 120, 160, 'shape=swimlane;startSize=20;');
							 | 
						||
| 
								 | 
							
												addVertex('editors/images/rectangle.gif', 100, 40, '');
							 | 
						||
| 
								 | 
							
												addVertex('editors/images/rounded.gif', 100, 40, 'shape=rounded');
							 | 
						||
| 
								 | 
							
												addVertex('editors/images/ellipse.gif', 40, 40, 'shape=ellipse');
							 | 
						||
| 
								 | 
							
												addVertex('editors/images/rhombus.gif', 40, 40, 'shape=rhombus');
							 | 
						||
| 
								 | 
							
												addVertex('editors/images/triangle.gif', 40, 40, 'shape=triangle');
							 | 
						||
| 
								 | 
							
												addVertex('editors/images/cylinder.gif', 40, 40, 'shape=cylinder');
							 | 
						||
| 
								 | 
							
												addVertex('editors/images/actor.gif', 30, 40, 'shape=actor');
							 | 
						||
| 
								 | 
							
												toolbar.addLine();
							 | 
						||
| 
								 | 
							
												
							 | 
						||
| 
								 | 
							
												var button = mxUtils.button('Create toolbar entry from selection', function(evt)
							 | 
						||
| 
								 | 
							
												{
							 | 
						||
| 
								 | 
							
													if (!graph.isSelectionEmpty())
							 | 
						||
| 
								 | 
							
													{
							 | 
						||
| 
								 | 
							
														// Creates a copy of the selection array to preserve its state
							 | 
						||
| 
								 | 
							
														var cells = graph.getSelectionCells();
							 | 
						||
| 
								 | 
							
														var bounds = graph.getView().getBounds(cells);
							 | 
						||
| 
								 | 
							
														
							 | 
						||
| 
								 | 
							
														// Function that is executed when the image is dropped on
							 | 
						||
| 
								 | 
							
														// the graph. The cell argument points to the cell under
							 | 
						||
| 
								 | 
							
														// the mousepointer if there is one.
							 | 
						||
| 
								 | 
							
														var funct = function(graph, evt, cell)
							 | 
						||
| 
								 | 
							
														{
							 | 
						||
| 
								 | 
							
															graph.stopEditing(false);
							 | 
						||
| 
								 | 
							
											
							 | 
						||
| 
								 | 
							
															var pt = graph.getPointForEvent(evt);
							 | 
						||
| 
								 | 
							
															var dx = pt.x - bounds.x;
							 | 
						||
| 
								 | 
							
															var dy = pt.y - bounds.y;
							 | 
						||
| 
								 | 
							
															
							 | 
						||
| 
								 | 
							
															graph.setSelectionCells(graph.importCells(cells, dx, dy, cell));
							 | 
						||
| 
								 | 
							
														}
							 | 
						||
| 
								 | 
							
											
							 | 
						||
| 
								 | 
							
														// Creates the image which is used as the drag icon (preview)
							 | 
						||
| 
								 | 
							
														var img = toolbar.addMode(null, 'editors/images/outline.gif', funct);
							 | 
						||
| 
								 | 
							
														mxUtils.makeDraggable(img, graph, funct);
							 | 
						||
| 
								 | 
							
													}
							 | 
						||
| 
								 | 
							
												});
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
												button.style.position = 'absolute';
							 | 
						||
| 
								 | 
							
												button.style.left = '2px';
							 | 
						||
| 
								 | 
							
												button.style.top = '2px';
							 | 
						||
| 
								 | 
							
												
							 | 
						||
| 
								 | 
							
												document.body.appendChild(button);
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										function addToolbarItem(graph, toolbar, prototype, image)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											// Function that is executed when the image is dropped on
							 | 
						||
| 
								 | 
							
											// the graph. The cell argument points to the cell under
							 | 
						||
| 
								 | 
							
											// the mousepointer if there is one.
							 | 
						||
| 
								 | 
							
											var funct = function(graph, evt, cell)
							 | 
						||
| 
								 | 
							
											{
							 | 
						||
| 
								 | 
							
												graph.stopEditing(false);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
												var pt = graph.getPointForEvent(evt);
							 | 
						||
| 
								 | 
							
												var vertex = graph.getModel().cloneCell(prototype);
							 | 
						||
| 
								 | 
							
												vertex.geometry.x = pt.x;
							 | 
						||
| 
								 | 
							
												vertex.geometry.y = pt.y;
							 | 
						||
| 
								 | 
							
												
							 | 
						||
| 
								 | 
							
												graph.setSelectionCells(graph.importCells([vertex], 0, 0, cell));
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
											// Creates the image which is used as the drag icon (preview)
							 | 
						||
| 
								 | 
							
											var img = toolbar.addMode(null, image, funct);
							 | 
						||
| 
								 | 
							
											mxUtils.makeDraggable(img, graph, funct);
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									</script>
							 | 
						||
| 
								 | 
							
								</head>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<!-- Calls the main function after the page has loaded. Container is dynamically created. -->
							 | 
						||
| 
								 | 
							
								<body onload="main();">
							 | 
						||
| 
								 | 
							
								</body>
							 | 
						||
| 
								 | 
							
								</html>
							 |